Przesiadka na DFS

DFS to dobra rzecz. I choc stwierdzenie to pasuje równiez do DFS rozumianego jako mechanizm replikacji, to tym razem mam na mysli zintegrowana z domena AD przestrzen nazw. Dla nieswiadomych szybkie przyblizenie tematu:

Tradycyjny dostep do sieciowych zasobów plikowych realizowany jest w taki sposób, ze sa serwery, na serwerach udzialy a klient siega do konkretnego udzialu na konkretnym serwerze. Czy siegnie przez sciezke UNC (po nazwie albo IP) czy zamapuje dysk, to juz nie ma wiekszego znaczenia. W przypadku DFS, na serwerze publikowana jest przestrzen nazw zintegrowana z domena i udzialy plikowe na poszczególnych serwerach podlaczane sa do "wirtualnej" sciezki \\nazwa.domeny\nazwa_DFS\nazwa_udzialu. Piekno tego rozwiazania polega miedzy innymi na tym, ze jezeli podlaczymy klienta do takiego udzialu DFS, to mozemy "pod spodem" dowolnie zonglowac serwerami, udzialami i sciezkami a klient zostanie automatycznie przekierowany we wlasciwe miejscie i nie zauwazy zadnych zmian. Czyli na przyklad latwo wyobrazic sobie, ze majac serwer z dziesiecioma udzialami sieciowymi, w miare rozwoju firmy podzielimy go na dwa albo wiecej serwerów, a klienci nic w codziennej pracy nie odczuja. Oczywiscie to samo moznaby uzyskac przemapowujac wszystkie dyski na stacjach roboczych, ale przeciez IT jest po to, zeby administratorzy nie musieli robic rzeczy zmudnych i nieciekawych.

W mojej prywatnej ocenie, majac DFS do dyspozycji (a jest on wspierany przez kazdy wspólczesny system Windows) nie wypada z niego nie skorzystac. Klopot jednak w tym, ze w zywych srodowiskach, tradycyjne sposoby dostepu do plików sa tak rozpowszechnione, ze tytulowa przesiadka na DFS wymaga "wylapania" wszystkich siegajacych przez \\serwer\udzial i poprawienia ich konfiguracji. Wbrew pozorom moze tego byc sporo. Skrypty, polisy, mapowane dyski, skróty, odwolania w dokumentach... Tak wiec zdecydowanie skuteczniejsze jest wykrywanie takiego dostepu po stronie serwera niz po stronie klientów. Oczywiscie mozna wylaczyc tradycyjny udzial i zobaczyc u kogo przestalo dzialac, ale chyba nie jest to moja ulubiona metoda.

W efekcie, administrator chcacy powaznie uzyc DFSa w swoim srodowisku musi sprawdzic, kto do jego serwera plików przychodzi przez DFS a kto bezposrednio. Przyznaje sie bez bicia, ze zidentyfikowanie tego troche mnie przeroslo. Zadna znana mi metoda pozyskania informacji o nawiazanych polaczeniach nie pozwala na rozróznienie sposobu dostepu. Byc moze przegapilem jakas oczywistosc (za wskazanie której bede oczywiscie wdzieczny), ale nawet dlubiac po API nie bylem w stanie odróznic klienta przychodzacego do udzialu X przez DFS od tych, którzy podlaczyli sie do niego "na skróty".

Poszedlem wiec troche inna droga. Kazdy udzial serwera udostepnilem jeszcze raz, z sufiksem _dfs$. Czyli majac na poczatku \\serwer\home, \\serwer\biuro i \\serwer\magazyn zrobilem dodatkowo \\serwer\home_dfs$, \\serwer\biuro_dfs$ i \\serwer\magazyn_dfs$. W konsolce zarzadzajacej DFS wylaczylem odwolania do oryginalnych udzialów i dodalem te nowe. Mozna to zrobic "w locie" poniewaz operacja w zaden sposób nie jest zauwazalna dla uzytkowników. Teraz wystarczy " wmic /node:serwer path Win32_ServerConnection get ComputerName, ShareName, UserName " i juz widze z którego komputera jaki uzytkownik siega bez uzycia DFS. Pozostaje tylko dojsc, z czego taki dostep wynika, poprawic i polowac na kolejne.

Na koncu dostane srodowisko, w którym dostep bedzie opierac sie w calosci na DFS, co znaczaco ulatwi mi kolejne zmiany. Chocby takie jak wylaczenie mocno wiekowego serwera plików.

Autor: Grzegorz Tworek [MVP]