poniedziałek, 30 września 2019

Skrypt Powershell do testowania Stref Warunkowego Przesyłania Dalej w serwerach DNS - "Test-DNSConditionalForwarders"

Jeżeli zarządzacie serwerem DNS w którym macie dodaną strefę, bądź strefy, Warunkowego Przesyłania Dalej (ang. Conditional Forwarder), to może Was zainteresować skrypt w PowerShellu, który ułatwia proces zarządzania nimi.

Dlaczego taki skrypt?
Strefy Warunkowego Przesyłania Dalej zarządzane są "z palca", a to oznacza, że to administrator lokalnie zarządzający DNSem odpowiada za to jaką listę serwerów będzie dla niej utrzymywał.

Jeżeli więc Wasza organizacja "średnio" dba o przesyłanie lokalnym adminom informacji o tym jakie serwery powinny powinny się w jakiej strefie znaleźć, to po pewnym czasie może być tam bałagan polegający np. na tym, że część serwerów w strefie zmieniła swój charakter i np. nie pełnią już roli DNSów, lub część w ogóle przestała być dostępna.
Oczywiście może być też tak, że są strefy dla domen, które w ogóle przestały być wykorzystywane (w dużych sieciach VPN żadna nowość).

Do tego celu stworzyłem niniejszy skrypt. Nie robi on jakiejś wyższej matematyki, której nie można by było przeprowadzić z palca, ale ułatwia zarządzanie strefami i pomaga rozwiązać powyżej przedstawione sytuacje.
Co więc dokładnie robi?
  • pobiera listę stref Warunkowego Przesyłania Dalej z serwera Windows DNS na którym został uruchomiony i zaczytuję serwery dla każdej ze stref,
  • dla każdego z nich przeprowadza test DNS,
  • następnie wykonuje testy PING,
  • na koniec wyświetla listę podsumowującą przeprowadzone testy z dwupoziomowym sortowaniem wyników wg:
    • serwery, które odpowiedziały na test DNS,
    • serwery z najkrótszym czasem odpowiedzi na PING.
Jeszcze kilka zdań wyjaśnienia dlaczego w ogóle bawić się w takie hocki klocki.

Zerknijcie na poniższy screen. Można na nim zauważyć, że w strefie są cztery serwery z których dwa pierwsze zostały zweryfikowane, zaś kolejne dwa nie - wystąpił timeout.
Teraz wyobraźcie sobie sytuację, że te serwery są zamienione miejscami, czyli te z timeoutami na początku, zaś te zweryfikowane na kolejnych miejscach.
Połączcie to z opcją, która określa po jakim czasie następuje timeout zapytania (poniżej jest to 5s, co jest wartością defaultową).

Lista serwerów dla strefy Warunkowego Przesyłania Dalej w serwerze DNS
Lista serwerów dla strefy Warunkowego Przesyłania Dalej w serwerze DNS
W takim przypadku co chwilę mielibyście problemy z zapytaniami do tej strefy.
Wprawdzie "jakoś" by to funkcjonowało, bo po 10s zapytania byłyby forwardowane do serwera, który udzieliłby odpowiedzi, ale po co taki stres Wasz i użytkowników?
Stres, który powtarzałby się za każdym upłynięciem czasu TTL dla rekordu, który został pobrany.

Tak więc, aby manualnie nie przeglądać i porządkować stref, powstał dzisiaj opisywany skrypt.
Wynik jego działania na screenie poniżej. 

Wynik działania skryptu Test-DNSConditionalForwarders
Wynik działania skryptu Test-DNSConditionalForwarders
Zgodnie z wcześniejszymi zdaniami widać, które serwery przeszły test DNS, a które nie. Następnie widać także, że żaden z serwerów nie odpowiedział na komendę PING. 

Jak wspomniałem powyższe zadania są bardzo prostymi i można je przeprowadzać z palca. Jeżeli jednak macie kilka stref z kilkoma / kilkunastoma serwerami w strefie, to wykonywanie takich testów nawet raz na pół roku może budzić wewnętrzny sprzeciw...
Przynajmniej ja szczerze nienawidzę wykonywać cyklicznych czynności, które można zautomatyzować.

Dlatego też do realizacji powyższych zadań powstał ten skrypt :)
Chętnych zapraszam do korzystania i informacji zwrotnych, czy działa jak należy itd.

Najaktualniejszą wersję można pobrać z repozytorium na GitHubie.

Brak komentarzy:

Prześlij komentarz

Bardzo proszę o zachowanie netykiety.