Portál AbcLinuxu, 9. května 2025 23:49
Ř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 localhost
a 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.