Jak mogę wysyłać odwiedzających do najbliższego serwera za pomocą DNS?

20

Czy istnieje sposób zlokalizowania wpisów DNS? Oznacza to, że użytkownicy z Azji przenoszą mydomain.com na inny adres IP niż użytkownicy z USA lub Europy. Byłoby to pomocne, aby dać użytkownikom najbliższy serwer. DNS jest jedyną dotychczas stosowaną techniką, co oznacza, że ​​nie mogę umieścić jakiegoś oprogramowania lub centralnego systemu zastępującego dns, aby rozwiązać ten problem.

kcode
źródło

Odpowiedzi:

20

Tak, obecnie istnieją dwa popularne rozwiązania tego problemu.

Pierwszy nazywa się Anycast, gdy ten sam blok IP jest dosłownie używany w wielu lokalizacjach na całym świecie. Oznacza to, że serwery nazw dla Twojej domeny zawsze zwracają ten sam adres IP, ale ten adres IP jest faktycznie przypisany do więcej niż jednego zestawu serwerów fizycznych.

Możesz przeczytać więcej na ten temat tutaj http://en.wikipedia.org/wiki/Anycast

Druga technika obejmuje ponownie AnyCast, jednak tym razem anycastowany zakres adresów IP odnosi się do samych serwerów nazw. Ponieważ serwery nazw będą wysyłać żądania tylko od klientów, których są najbliżsi (co określa magia BGP), mogą oni sami zwracać adresy IP logicznie lokalne dla klienta.

Przykładem tego jest domena l.google.com Google

Od gospodarza w Australii

crimson:~ dave$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-notmumbai.l.google.com.
www-notmumbai.l.google.com has address 66.249.89.99
www-notmumbai.l.google.com has address 66.249.89.147
www-notmumbai.l.google.com has address 66.249.89.103
www-notmumbai.l.google.com has address 66.249.89.104

Od gospodarza w USA

[dave@odessa ~]$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.95.99
www.l.google.com has address 74.125.95.147
www.l.google.com has address 74.125.95.104
www.l.google.com has address 74.125.95.106
www.l.google.com has address 74.125.95.105
www.l.google.com has address 74.125.95.103

Tak więc nazwa CNAME dla www.google.comrozwiązuje się www.l.google.com, ale po rozwiązaniu tego, w zależności od lokalizacji, klient otrzymuje inny zestaw adresów IP. Jest tak, ponieważ serwer nazw, który otrzymał żądanie, www.l.google.combył lokalnym serwerem nazw względem klienta.

Dave Cheney
źródło
5
Ta odpowiedź technicznie odpowiada na pytanie, ale myślę, że jest raczej bezużyteczna pod względem bycia prawdziwą odpowiedzią na rzeczywisty problem: większość stron nie ma anycastu, więc twoja odpowiedź jest poza zasięgiem wszystkich takich stron.
cnst
więc który rejestrujący oferuje to rozwiązanie?
dynamiczny
Warto również zauważyć, że DNS ma tę funkcję natywnie. Umieść serwer DNS w regionie, którego rekord wskazuje na serwer WWW w tym regionie. Powtórz w innych regionach. Zysk.
dmourati
@dmourati: czy to nie propaguje i nie aktualizuje innych serwerów DNS? Zawsze zakładałem, że serwery DNS zawsze rozpowszechniają informacje, dopóki wszystkie nie zostaną zsynchronizowane.
Guru Prasad
@GuruPrasad Wiele hostów (zwykle w różnych obszarach geograficznych) otrzymuje ten sam adres IP emisji pojedynczej, a różne trasy do adresu są ogłaszane za pośrednictwem BGP. Routery uważają je za alternatywne trasy do tego samego miejsca docelowego, chociaż w rzeczywistości są to trasy do różnych miejsc docelowych o tym samym adresie. Jak zwykle routery wybierają trasę według dowolnej używanej miary odległości (najmniejszy koszt, najmniej zatłoczony, najkrótszy). Wybór trasy w tym ustawieniu sprowadza się do wyboru miejsca docelowego. == wikipedia / anycast ---- ale działa lepiej w IPv6 niż ten opis
Garet Claborn
2

Jeśli chcesz zlokalizować serwery tylko w Azji, Ameryce Północnej i Europie, możesz samodzielnie uruchomić zarówno aplikację internetową, jak i DNS.

Dzięki DNS możesz użyć czegoś takiego jak podejście DNS Split-Horizon , które można osiągnąć poprzez zintegrowaną funkcjonalność twojego serwera DNS (mogą to nazwać GeoDNS ) lub przez zaporę ogniową , która przekierowuje różne zakresy adresów IP do różnych uruchomionych instancje serwera DNS (możesz uruchomić kilka różnych kopii serwera na komputerze lokalnym, które będą nasłuchiwać na różnych lokalnych adresach IP).

Prawdopodobnie można uzyskać oczekiwane wyniki w około 90% przypadków, odpowiadając na żądania DNS z adresów IP RIPE i AfriNIC z Azapisem twojego hosta w Europie, żądania od APNIC - hosta w Azji oraz żądania z adresów IP z / 8 bloków administrowanych przez ARIN , LACNIC i resztę przestrzeni adresowej / 8 z Azapisem twojego serwera w Ameryce Północnej. W niektórych sytuacjach może to mieć złe wyniki (niektóre / 8 bloków są współdzielone między Europą i Ameryką Północną, część przestrzeni adresowej to anycast itp.), Ale najgorsze, co by się wydarzyło, to dodatkowe opóźnienie dla strony, której to dotyczy, więc nie powinno to będzie wielka sprawa.

(I tak, powinien istnieć sposób, aby te rzeczy były łatwiejsze, ale jak dotąd wydaje się, że nie ma.)

cnst
źródło
2

Miałem ten sam problem. Nasza firma ma klientów w Rosji i Chinach i wszyscy potrzebują bardzo szybkiego połączenia z naszą usługą. Użyliśmy Amazon Route 53 Geo dns i właśnie utworzyliśmy dwa rekordy, jeden przekieruje klientów z Chin do naszego klastra w regionie Tokio, a klientów z Rosji do Londynu.

amanbolat
źródło