Czy w nazwie hosta rozróżniana jest wielkość liter? Jest
ping MYHOST
równy
ping myhost
Czy to zależy od używanego DNS? Czy istnieją różnice między systemami Win / Mac / Unix?
Czy w nazwie hosta rozróżniana jest wielkość liter? Jest
ping MYHOST
równy
ping myhost
Czy to zależy od używanego DNS? Czy istnieją różnice między systemami Win / Mac / Unix?
Odpowiedzi:
W nazwach rozpoznawanych z DNS nie jest rozróżniana wielkość liter. Jest to ważne, aby uniknąć zamieszania. Gdyby rozróżniała wielkość liter, mielibyśmy osiem wariantów .com (.com, .Com, .cOm, .COm, .coM, .CoM, .cOM i .COM). Kody krajów miałyby cztery.
Jeśli w rozpoznawaniu nazw rozróżniana jest wielkość liter w przypadku polecenia Ping, DNS nie wykonuje tego.
Właśnie miałem to tutaj w pracy. DNS powinien rozróżniać małe i wielkie litery ... określa to RFC. https://tools.ietf.org/html/rfc4343, ale nie mówi, że MUSI to być mała litera.
Mieliśmy więc przyjemność rozwiązywać problemy z hostem, który nie rozwiązał problemu w naszej domenie wewnętrznej „t.local”
p123$ ping p123-db.t.local
PING p123-db.t.local (192.168.106.175) 56(84) bytes of data.
....works ok
p123$ ping P123-dB.T.lOcal
ping: unknown host P123-dB.T.lOcal
Po co zawracać sobie głowę rozwiązywaniem mieszanej sprawy? Ponieważ właśnie to tcpdump pokazywał jako zapytanie DNS, ponieważ o to prosił działające oprogramowanie. pgbouncer skonfigurowano tak, aby używał „p123-db” w swojej konfiguracji, a resolv.conf określił domenę wyszukiwania „t.local”. Więc co jest pomieszane?
Okazuje się, że glibc losowo przełączał sprawę. Proces ten nazywa się „wypełnieniem 0x20” i został po raz pierwszy opisany w 2008 r. W „Użycie bitu 0x20 w etykietach DNS do poprawy tożsamości transakcji” http://tools.ietf.org/html/draft-vixie-dnsext-dns0x20-00
Głównym celem jest zwiększenie entropii, aby trudniej było sfałszować odpowiedź - przypadek pytania musi pasować do przypadku odpowiedzi.
Dobra dyskusja znajduje się tutaj. https://developers.google.com/speed/public-dns/docs/security?csw=1#randomize_case
Oddzielnie uruchamiamy powerDNS wewnętrznie, a to wyszukuje dane w bazie danych. Przez lata nikt nie używał nazwy hosta ani nazwy FQDN w domenie t.local z wielką literą, więc nigdy nie zauważyliśmy, że w naszej domenie wewnętrznej rozróżniana jest wielkość liter.
Zostało naprawione przez niektóre poprawki w zapytaniu, ale zepsułoby to wyszukiwanie mieszanych wielkości liter 0x20, jak powyżej - klient może wymagać, aby odpowiedź była zwracana w tej samej sprawie, o jaką została poproszona.
Krótka odpowiedź : DNS nie powinien rozróżniać wielkości liter, ale pytanie i odpowiedź będą musiały być identyczne w przyszłości.
Właśnie zakończyłem rozwiązywanie problemu na wbudowanym urządzeniu SE Linux, w którym rozpoznawanie nazw hostów wykazywało rozróżnianie wielkości liter.
„ping MYHOST” pinguje na 127.0.0.1, podczas gdy „ping myhost” pinguje poprawny adres IP.
nslookup wygenerował poprawne wyniki zarówno dla wielkich, jak i małych liter, wskazując, że serwer DNS nie był winny.
Ale w przeciwieństwie do nslookup, który ignoruje pamięć podręczną, „getent hosts MYHOST” wyprowadza „0.0.0.0”, a „getent hosts myhost” podaje poprawny adres IP.
Więc nscd najwyraźniej rozróżnia małe i wielkie litery. Wywołanie „hostów nscd -i” w celu wyczyszczenia pamięci podręcznej rozwiązało problem.
MYHOST w (wielkie litery) skończył buforowany z 0.0.0.0 z powodu procesu próbującego nawiązać połączenie z MYHOST przed utworzeniem wpisu DNS, co dzieje się, gdy zdalne urządzenie otrzymuje przypisanie DHCP.
Jak wspomniał BillThor, wielkość liter nie jest rozróżniana na poziomie DNS ani netbios.
Różne systemy operacyjne również nie będą miały problemu z inną obudową.
Jednak aplikacje mogą o nich wiedzieć. Na przykład platformy internetowe w różnych środowiskach mogą sprawdzać rozróżnianie wielkości liter. Obecnie jest bardziej powszechne z powodów optymalizacji pod kątem wyszukiwarek (SEO), aby zwracać uwagę na inną obudowę i przekierowanie. To wszystko zależy od aplikacji, więc odpowiedź jest różna.
W większości przypadków nazwa hosta również nie rozróżnia wielkości liter na poziomie aplikacji.