Portál AbcLinuxu, 9. listopadu 2025 07:15
Řešení dotazu:
/etc/hosts na linuxové gatewayi vliv na to, jak windows na jiném počítači překládají jména na adresy?
Windows se ptají přes DNS a nemají možnost ani důvod se ptát, co má gateway v /etc/hosts. Totéž platí pro kterýkoliv operační systém na jiném počítači v lokální síti.
Aby ostatní stroje v síti viděly stroj abc, je potřeba do DNS serveru přidat TLD abc, tedy vytvořit příslušný zónový soubor, nastavit DNS server jako autoritativní pro příslušnou zónu a pak tento DNS server nastavit na ostatních strojích v síti jako výchozí a jediný DNS server. (To taky znamená, že by měl mít povolené dotazy mimo své autoritativní zóny (pouze) z vnitřní sítě a mohl by případně umět vyhovět rekurzivním dotazům (pouze) z vnitřní sítě.)
Pak ostatní stroje v síti (a dokonce i Windows) budou vědět, co je to abc. Editace /etc/hosts je lokální hack, který nemá vůbec nic společného s DNS. Podle čeho se resolvují jména počítačů, lze nastavit v /etc/nsswitch.conf. Obvykle tam bývá něco jako hosts: files dns, což znamená, že napřed se hledá v /etc/hosts a teprve poté v DNS. (To ovšem platí pouze pro funkci getaddrinfo(). Každý program může resolvovat, jak se mu zlíbí, tedy může používat něco jiného než getaddrinfo() a tato pravidla ignorovat, případně si může klidně otevřít UDP socket, sám sestavit DNS paket a poslat ho DNS serveru dle svého uvážení. Většinou se tohle neděje, ale technicky tomu nic nebrání, kromě nějakého firewallu tu a tam.)
Při správně nastaveném DNS serveru (který má zpětné i dopředné záznamy/zóny pro localhost) by teoreticky mělo být možné token files z řádky hosts:... v souboru /etc/nsswitch.conf odstranit a používat výhradně DNS. Problém tkví ovšem v tom, že občas může být potřeba zeptat se na adresu localhosta dřív než funguje síť a dřív než běží DNS server. To je jeden z hlavních důvodů, proč /etc/hosts existuje. Informace z tohoto souboru se ale nikdy nepropagují mimo daný stroj.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.