Dlaczego powinienem używać nazwy FQDN zamiast adresu IP serwera?

29

W pracy z serwerami natknąłem się na pliki konfiguracyjne, w których należy wprowadzić adres do zewnętrznego serwera. Widziałem, jak niektórzy używają bezpośrednio adresu IP serwera, ale słyszałem wiele zaleceń, aby zamiast tego używać nazwy hosta w pełni kwalifikowanej nazwy domeny (FQDN). Dlaczego powinienem używać nazwy hosta zamiast bezpośredniego adresu IP?

Ponieważ jeśli użyjesz nazwy hosta, potrzebujesz lokalnego serwera DNS, który połączy każdą nazwę hosta z adresem IP. Jaka jest wada między używaniem nazwy hosta lub adresu IP?

Emil Rowland
źródło
5
jeśli masz dynamiczne adresy IP, prawdopodobnie łatwiej jest po prostu zmienić rekord DNS. i dlaczego lokalny serwer DNS? dlaczego nie sprawić, by wszystkie maszyny miały publicznie rozpoznawalne adresy IP? Kolejną wadą adresów IP jest to, że nawet jeśli nie są dynamiczne, prawdopodobnie nadal zależą od fizycznej lokalizacji, co utrudnia migrację do innej lokalizacji. w zasadzie wygląda na to, że pytasz, dlaczego wymyślono DNS. na to pytanie udzielono odpowiedzi wiele razy w innym miejscu.
Janus Troelsen
1
Zawsze było zaleceniem (na przykład w RFC), że na poziomie aplikacji jeden zajmuje się tylko nazwami hostów. Jednak niektóre aplikacje nawet nie będą działać, chyba że z IP. Niemniej jednak sam jestem winny częstego kontaktu z urządzeniami przez adres IP zamiast nazwy hosta - ale ten zły nawyk z pewnością skończy się, gdy tylko w pełni przeprowadzimy migrację do IPv6 :)
Hagen von Eitzen
Ponieważ oczywiście serwer zewnętrzny będzie zabezpieczał całą komunikację za pomocą SSL, a certyfikaty SSL zostaną podpisane dla FQDN, a twoja aplikacja nie może zweryfikować właściwego serwera, jeśli używasz adresu IP. Dobrze? : |
TessellatingHeckler
1
@HagenvonEitzen Na pewno nigdy nie będziesz pisać ::1? :-)
CVn

Odpowiedzi:

54

Korzystanie z adresu IP gwarantuje, że nie polegasz na serwerze DNS. Ma także tę zaletę, że zapobiega atakom poprzez fałszowanie DNS.

Użycie nazwy FQDN zamiast adresu IP oznacza, że ​​gdybyś migrował swoją usługę na serwer z innym adresem IP, byłbyś w stanie po prostu zmienić zapis w DNS, zamiast szukać wszędzie, gdzie używany jest adres IP .

Jest to szczególnie przydatne, gdy wiele serwerów i usług jest skonfigurowanych przez wiele osób.

Joshua Griffiths
źródło
1
Zwłaszcza jeśli wiedza o tym adresie IP jest również zewnętrzna, na przykład jeśli klienci, partnerzy lub dostawcy go używają. Wyobraź sobie, że zamiast stackoverflow.com wszyscy poszliśmy do adresu IP, który znaliśmy jako stackoverflow.com, a następnie musieli zmienić adres IP? Jak powiedzą każdemu możliwemu użytkownikowi witryny, że adres IP się zmienił? Stąd nazwiska.
Brandon,
@Brandon byłoby tak samo, jak gdyby teraz zdecydowali się zmienić z stackoverflow.com na heapunderflow.com Oryginalną zaletą nazw domen jest to, że ludzie pamiętają stackoverflow.comzamiast 151.101.1.69. Oczywiście w dzisiejszych czasach pozwala to również na wirtualny hosting, poddomeny dotyczące ich rodziców i inne korzyści, które z nich wynikają.
Ángel
2
Myślę, że rdzeniem tej odpowiedzi jest to, że organizacja posiada własną nazwę FQDN; ale może nie być właścicielem swojego adresu IP.
Pieter Geerkens
1
Spróbuj uruchomić HTTPS / Kerberos przez IP zamiast FQDN.
Aron,
Jest to dosłownie cel DNS.
Lekkość ściga się z Moniką
40

DNS to nie tylko FQDN = IP

Ważną rzeczą w DNS jest to, że zapewnia więcej niż tylko rekordy A (nazwa hosta = IP). DNS zapewnia różne typy rekordów, takie jak MX, CNAME, TXT itp., Które czasem mogą być wymagane przez niektóre oprogramowanie. Pozwala na wiele rekordów adresów, rekordów IPv4 + IPv6, adresów dynamicznych, równoważenia obciążenia, rozwiązywania problemów związanych z lokalizacją geograficzną, przełączania awaryjnego / redundancji itp. DNS informuje, co to jest (www.google.com to usługa internetowa Google, 172.217 .4.110? Co to jest?) Pozwala zmienić te ustawienia / rekordy i umożliwić ich pobranie przez klientów bez dokonywania zmian na wszystkich klientach. DNS może robić skomplikowane rzeczy.

Korzystanie z DNS zamiast bezpośredniego adresu IP ma często wyraźną zaletę.

Wymagane mogą być nazwy FQDN

Niektóre rzeczy, takie jak serwery internetowe, które korzystają z hostingu wirtualnego opartego na nazwach lub równoważenia obciążenia itp., Absolutnie wymagają, abyś adresował je za pomocą nazwy FQDN lub nazwy hosta. Określają, jak odpowiedzieć na twoje żądanie na podstawie nazwy FQDN, z którą się łączysz. Łączenie za pomocą adresu IP może w ogóle nie działać.

Certyfikaty SSL są wydawane na podstawie nazw domen, więc możesz nie być w stanie korzystać z niektórych usług obsługujących SSL (poprawnie) bez DNS.

To jest zapytanie dotyczące domeny google.com, które daje wgląd w złożoność DNS

google.com. 299 IN A 172.217.0.174
google.com. 299 IN AAAA 2607: f8b0: 400b: 807 :: 200e
google.com. 599 IN MX 10 aspmx.l.google.com.
google.com. 599 IN MX 40 alt3.aspmx.l.google.com.
google.com. 59 W SOA ns2.google.com. dns-admin.google.com. 126990955 900 900 1800 60
google.com. 599 IN MX 30 alt2.aspmx.l.google.com.
google.com. 21599 IN NS ns2.google.com.
google.com. 599 IN MX 20 alt1.aspmx.l.google.com.
google.com. 599 IN MX 50 alt4.aspmx.l.google.com.
google.com. 21599 IN NS ns1.google.com.
google.com. 3599 W TXT „v = spf1 obejmują: _spf.google.com ~ all”
google.com. 21599 IN CAA 0 problem „symantec.com”
google.com. 21599 IN NS ns3.google.com.
google.com. 21599 IN NS ns4.google.com.

Yahoo odpowiada 3 adresami IP

$ host -ta yahoo.ca
yahoo.ca ma adres 77.238.184.24
yahoo.ca ma adres 74.6.50.24
yahoo.ca ma adres 98.137.236.24

Zaleta korzystania z adresu IP

Dla mnie zwykle jest tak, że DNS może jakoś przeszkodzić lub nie jest dostępny. Generalnie do większości rzeczy używałbym DNS.

Przykładem lepszego adresu IP może być posiadanie dwóch komputerów z bezpośrednim łączem między nimi (bez przełącznika) z prywatnymi adresami sieciowymi (powiedzmy 192.168.1.1 i 192.168.1.2) i używają go do komunikacji o wysokiej dostępności lub DRBD lub inna bardzo konkretna usługa. W takim przypadku konfiguracja w DNS prawdopodobnie nie ma żadnego sensu. Nie jest to konieczne, zwiększyłoby złożoność, problemy z wydajnością i mogłoby doprowadzić do awarii.

Innym przykładem jest routing. Tabele routingu rejestrują adresy IP z różnych powodów.

Innym jest odwoływanie się do serwerów nazw (jak w /etc/resolv.conf). Ponieważ bez serwera nazw nie można niczego rozwiązać.

Ryan Babchishin
źródło
To świetna odpowiedź, ale prawdopodobnie powinna również powiedzieć coś o usługach vhosted; IP⟷FQDN jest mapowaniem typu wiele do wielu, a nie wielu do jednego.
puszysty
Dzięki i zgodziłem się. DNS jest bardzo pomocny w przypadku wirtualnego hostingu opartego na nazwach, jeśli o to ci chodzi.
Ryan Babchishin
Tak, o to mi chodziło.
puszysty
Świetna odpowiedź, która właściwie zapewnia DNS - zakładki do wykorzystania w przyszłości. Jednym drobnym zastrzeżeniem jest twój komentarz „Tabele routingu rejestrują adresy IP z różnych powodów”. Jakie są różne powody, do których się odwołujesz? Tabele routingu nie mają innego wyboru, jak używać adresów IP, ponieważ routing odbywa się w warstwie internetowej, podczas gdy DNS korzysta z warstwy aplikacji i dlatego jest koniecznie zależny od routingu.
ogrodnik
@gardenhead Thanks. To prawda o routingu, po prostu nie chciałem się w to włączać. Wybacz mi wybór słów.
Ryan Babchishin,