Czy serwer nazw może dynamicznie rozwiązywać adresy IP w oparciu o jakąś strategię?

11

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?

Yifan
źródło
To brzmi jak przypadek anycasta.
Ron Maupin,
1
@RonMaupin Należy zauważyć, że aby wykonać anycast, trzeba mieć niezależny przydział bloku adresu dostawcy i, co ważniejsze, uruchomić BGP, aby reklamować prefiksy z każdego centrum danych. To zupełnie nowy poziom działalności i nie jest to coś, z czym wiele firm „zorientowanych na treść” miałoby doświadczenie. Rozwiązanie oparte na DNS wygląda o wiele łatwiej.
IPX,
@IPX, wyobrażam sobie, że firma posiadająca centra danych na całym świecie, jak się wydaje w pytaniu, będzie miała adres niezależny od dostawcy i własny numer AS. Dzięki temu anycast jest bezpłatny i łatwy.
Ron Maupin,
1
@RonMaupin, gdyby firma PO prowadziła wiele centrów danych na całym świecie, to tak, ale prawdopodobnie nie zadaliby tutaj stosunkowo prostego pytania. Założę się, że po prostu lokalizują swoje lub wynajęły sprzęt w kilku komercyjnych centrach danych i tak naprawdę nie dbają o zaawansowane operacje sieciowe. To właśnie widziałem wiele średnich firm, które robią w celu redukcji zatrudnienia. W takim przypadku DNS jest odpowiedzią, a nie routingiem .
IPX,
@IPX, wyciągam z pytania, że ​​firma ma centra danych na całym świecie, a jeśli jedno centrum danych ulegnie awarii, ruch powinien zostać skierowany do innego centrum danych („ jeśli jedno z naszych centrów danych nie działa. . ”). Po prostu odpowiedziałem na zadane pytanie, zamiast próbować zgadywać na temat hostingu stron trzecich, i robimy niektóre z nich, ale nadal mamy własny niezależny adres dostawcy i numer AS używane do komunikacji z dostawcami usług internetowych. Umożliwia to negocjowanie umów i zmianę dostawców usług internetowych bez zakłócania sieci w zakresie readdressingu.
Ron Maupin,

Odpowiedzi:

16

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.8DNS. 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.

Ron Maupin
źródło
2
Anycast zwykle nie jest użyteczny w przypadku protokołów opartych na TCP, ponieważ pakiety należące do tego samego połączenia mogą przechodzić do różnych serwerów.
Paŭlo Ebermann
2
@ PaŭloEbermann, który nie stanowi problemu, gdy robisz to z routingiem BGP, ponieważ trasy zwykle nie zmieniają się po ogłoszeniu (tylko drobne zmiany)
Ferrybig
2
@ PaŭloEbermann Możesz wykonać anycast w modułach równoważenia obciążenia opartych na DSR, o ile wszystkie moduły równoważące obciążenia uzgodnią sposób wyboru backendów.
kasperd
3
@ PaŭloEbermann, to błędne przekonanie. Cały ruch z jednego hosta zostanie skierowany na jeden serwer, chyba że serwer ten ulegnie awarii, wówczas ruch zostanie skierowany na inny serwer. Tak, spowodowałoby to przerwanie połączenia TCP, ale tak by było w przypadku awarii serwera, z którym jesteś połączony. Anycast nie jest typem okrągłego robota. Routing jest deterministyczny, więc anycast jest deterministyczny.
Ron Maupin,
2
@RonMaupin Anycast routing nie jest tak stabilny, jak sugerujesz. Google nie używa anycastu tak, jak mówisz. Jeśli chcesz wiedzieć, jak Google to robi, zajrzyj na stronę 227 w skoroszycie witryny niezawodności opublikowanym przez Google. Krótko mówiąc, warstwa równoważąca obciążenie za routingiem anycast kompensuje nieuniknione zmiany w routingu, które w przeciwnym razie spowodowałyby przerwanie połączeń TCP.
kasperd
9

Potrzebujesz dokładnie tego , co oferuje usługa DNS Amazon Route53 :

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 :)

MLu
źródło
Czy kiedykolwiek używałeś do tego produktów innych niż Amazon?
pisklęta
@ laski nie mam. Zawsze używam najlepszego narzędzia do pracy, a Route53 w większości przypadków pasuje do rachunku. Jeśli jednak korzystasz z wyszukiwarki Google typu „usługa geo dns”, otrzymasz kilka opcji. Szybko spojrzałem na kilka, ale wydają się one dość drogie (około 50 USD / miesiąc - znacznie więcej, niż prawdopodobnie wydajesz z AWS Route53).
MLu
2
Przed wywołaniem pierwszego narzędzia, które znalazłem najlepsze narzędzie w większości przypadków, poszerzyłem nieco swoją perspektywę. Route53 może być najlepsza dla wszystkich, ale skąd byś wiedział, gdybyś nie próbował niczego innego?
pisklęta
-1

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:

 3  cr1-rhe-a-be153.bb.as11404.net (174.127.183.14)  20.657 ms  20.763 ms  19.660 ms
 4  cr1-che-b-be-2.as11404.net (192.175.29.161)  22.550 ms  23.562 ms  23.538 ms
 5  * cr1-9greatoaks-hu-0-6-0-20-0.bb.as11404.net (192.175.28.108)  24.409 ms  38.083 ms
 6  72.14.222.146 (72.14.222.146)  40.038 ms  39.106 ms  39.125 ms
 7  108.170.242.225 (108.170.242.225)  37.930 ms 108.170.243.1 (108.170.243.1)  35.434 ms 108.170.242.225 (108.170.242.225)  33.694 ms
 8  209.85.240.249 (209.85.240.249)  33.476 ms 108.170.232.65 (108.170.232.65)  31.683 ms 108.170.234.155 (108.170.234.155)  30.754 ms
 9  google-public-dns-b.google.com (8.8.4.4)  30.491 ms  28.644 ms  25.718 ms

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.

Joshudson
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Totem - Przywróć Monikę
Przeniosłem wszystkie komentarze na czat, ale ponieważ było ich tak wiele, a niektóre zostały automatycznie przeniesione, nie jestem pewien, czy późniejszy czat ma je wszystkie. W każdym razie dalsza dyskusja na temat ważności tej odpowiedzi i działania routerów itp. Nie powinna być w komentarzach, trzymaj ją w jednym z pokojów czatowych. Wszelkie dalsze komentarze tutaj zostaną usunięte.
Totem - Przywróć Monikę
-2

To, czego potrzebujesz, można osiągnąć za pomocą kombinacji anycast DNS i RFC-7871.

Edheldil
źródło
1
Więcej szczegółów poprawi twoją odpowiedź
Dave M