Zarejestrowaliśmy niektóre serwery nazw do rozpoznawania nazw DNS dla naszej witryny internetowej, która jest wdrożona w kilku centrach danych.
Nasza obecna strategia rozwiązania DNS polega na tym, że na podstawie różnych adresów IP klientów serwer nazw zwróci różne adresy IP dla tej samej domeny. Na przykład, jeśli adres IP klienta pochodzi z Ameryki Północnej, serwer nazw zwróci adres IP, który jest adresem naszego centrum danych w Ameryce Północnej.
Ale adres IP klienta czasami nie jest rzeczywistym adresem IP użytkowników. Może to być adres IP DNS, który należy do usługodawcy internetowego lub serwera proxy. Z drugiej strony, jeśli jedno z naszych centrów danych nie działa, chcemy, aby nasz serwer nazw wykluczył ten adres IP, który należy do uszkodzonego centrum danych. Mamy więc nadzieję, że możemy uzyskać bardziej dynamiczną strategię dla naszego rozwiązania DNS. Czy istnieje na to rozwiązanie?
Odpowiedzi:
Brzmi jak chcesz anycast. Tego typu witryny używają Google. Masz jeden adres (rozpoznawany przez DNS) dla wszystkich swoich stron internetowych i pozwalasz internetowemu protokołowi routingu (BGP) kierować użytkowników do najbliższej (przez protokół routingu) witryny. Jeśli strona ulegnie awarii, następna najbliższa strona zostanie automatycznie umieszczona w tablicy routingu internetowego przez BGP.
Klasyczny przykład dotyczy
8.8.8.8
DNS. Rozpoznaje się w różnych lokalizacjach na całym świecie, a jeśli jedna lokalizacja ulegnie awarii, to trafi do następnej najbliższej lokalizacji.Odpowiedź to nie DNS, to routing.
źródło
Potrzebujesz dokładnie tego , co oferuje usługa DNS Amazon Route53 :
Routing oparty na opóźnieniu - kieruj użytkowników końcowych do regionu AWS, który zapewnia najniższe możliwe opóźnienia.
Geo DNS - Kieruj użytkowników końcowych do określonego punktu końcowego określonego na podstawie lokalizacji geograficznej użytkownika końcowego.
Sprawdzanie kondycji i przełączanie awaryjne - Amazon Route 53 może monitorować kondycję i wydajność aplikacji, a także serwerów internetowych i innych zasobów.
... i wiele innych zaawansowanych funkcji DNS .
Nie musisz hostować swojej witryny na AWS, aby móc korzystać z Route53, z przyjemnością będzie współpracować z usługami rozmieszczonymi w prywatnych centrach danych.
Jeśli nie jesteś użytkownikiem Facebooka, ceny Google również nie powinny stanowić problemu, zaczynając od 0,40 USD za milion żądań (zobacz szczegóły cennika ).
Mam nadzieję, że to pomoże :)
źródło
Miałem ten pomysł i zacząłem go kodować, ale nigdy nie skończyłem, ponieważ potrzeba najpierw wyparowała.
Serwer DNS ma nazwy hostów i adresy MAC wszystkich komputerów w swojej sieci LAN oraz sposób ich uzyskania. Gdy odbierze żądanie maszyny, którą zna, wysyła zwrotny ARP dla adresu IP podanego adresu MAC i wykorzystuje odpowiedź do skonstruowania odpowiedzi DNS.
Nie ma to nic wspólnego z tym, co próbujesz zrobić, ale ilustruje to sens. Serwer DNS można teoretycznie zakodować, aby zrealizować dowolny nowatorski schemat zamiany nazw na adresy IP.
Rzeczywiste pytanie wydaje się, jak uzyskać adres IP klienta, aby zdecydować, gdzie go wysłać. To jest mały problem XY. To, czego naprawdę chcesz, to dostawca usług internetowych klienta do geolokalizacji, a możesz to zrobić, robiąc to bezpośrednio z adresu IP wysyłającego żądanie, zakładając, że nie jest to 8.8.4.4 lub inna usługa przekierowująca DNS. Moim zdaniem najlepszym rozwiązaniem dla readresatorów DNS jest zignorowanie problemu i samodzielna geolokalizacja (to znaczy z serwera DNS spróbuj zlokalizować dzwoniący adres IP) i odpowiednie przekierowanie. Zobacz tutaj, jak geolokalizować: /programming/2574542/location-detecting-techniques-for-ip-addresses
Naprawdę nie chcesz tutaj anycasta, ale coś bardziej rozsądnego. Anycast ma irytującą właściwość, ponieważ może przekierowywać pakiety w środku strumienia TCP, powodując masowe zamieszanie.
Ron Maupin twierdzi, że anycast jest niezawodny dla TCP. Oto traceroute pokazujące inaczej:
Jeśli spróbujesz geolokalizować początkowe adresy IP, w oczywisty sposób otrzymasz oba w Wichita. To nie jest poprawne, wystarczy zwykła demonstracja fizyki.
Zasięg do 8.8.4.4 jest mierzony przy 30 ms, z czego pierwsze 18 ms jest karą lokalną (przeskok 3 to lokalny router mojego dostawcy usług internetowych). Moja odległość do Wichita wynosi 1297 mil. Minimalny czas podróży w obie strony wynosi zatem (1297 * 2 mil / 225 000 kilometrów na sekundę (prędkość światła w szkle)), który wynosi 18,55 ms. Dlatego nie powinienem odbierać odpowiedzi szybciej niż 28 ms, ale dostałem odpowiedź w ciągu 25 ms.
Pakiety docierają do Google dwiema różnymi trasami BGP. BGP nie wybrał najbliższego.
źródło
To, czego potrzebujesz, można osiągnąć za pomocą kombinacji anycast DNS i RFC-7871.
źródło