Dnsmasq
Dnsmasq 在整個網路上將本地主機名解析為 127.0.0.1
我的 dnsmasq 已配置:
- 在主機“rtfm.lan”上
- Domain ’lan'
- 有一些 DHCP 預設包含主機名
所有通過 DHCP 註冊的“*.lan”主機都可以正常解析:dnsmasq 知道哪些 IP 分配給了哪些主機名。但是,從 /etc/hosts 讀取“rtfm.lan”並解析為 127.0.0.1。
我可以阻止 dnsmasq 讀取 /etc/hosts 並手動添加地址:
no-hosts address=/rtfm.lan/192.168.1.2
但這並不靈活:如果有一天我決定更改我的 IP — 我還必須在 dnsmasq.conf 中更改它。
如何告訴 dnsmasq 使用本地主機名及其真實 IP?
以防萬一..這是我的 DNSmasq 配置:
# Never forward plain names (without a dot or domain part) domain-needed # Never forward addresses in the non-routed address spaces. bogus-priv # Read resolv.conf serially strict-order #==========[ NAMESERVER ]==========# # Cache size cache-size=4096 # Don't read /etc/hosts no-hosts # Read additional hosts-file (not only /etc/hosts) to add entries into DNS addn-hosts=/etc/hosts-dnsmasq # Auto-append <domain> to simple entries in hosts-file expand-hosts #=== HOSTNAME OVERRIDES address=/localhost/127.0.0.1 # *.localhost => 127.0.0.1 #==========[ DHCP ]==========# # Enable for the local network? dhcp-authoritative # Tell MS Windows to release a lease on shutdown dhcp-option=vendor:MSFT,2,1i #=== DHCP # Domain name domain=lan # DNS-resolve hosts in these domains ONLY from /etc/hosts && DHCP leases local=/lan/ # DHCP range & lease time dhcp-range=192.168.1.70,192.168.1.89,24h # Default route dhcp-option=3,192.168.1.1 #=== FIXED LEASES # LAN MY HOSTS dhcp-host=00:23:54:5d:27:fa, rtfm.lan, 192.168.1.2 dhcp-host=00:23:54:5d:27:fb, rtfm.lan, 192.168.1.2 dhcp-host=c8:0a:a9:45:f1:03, 00:1e:64:9e:e9:5e, wtf.lan, 192.168.1.3
通常,您會在文件中定義靜態主機
/etc/hosts
並啟用。 允許您為此文件指定一個備用名稱。hosts``dnsmasq.conf``dnsmasq
如果你想
rtfm.lan
被定址,192.168.1.2
那麼添加一行閱讀192.168.1.2 rtfm.lan
到/etc/hosts
. 通常,您的 dnsmasq 主機文件應該可以移植到您的所有伺服器。在
rtfm.lan
IP 堆棧上將短路路由並且不會將流量發送到網路上。如果您使用信號更新文件
/etc/hosts
和信號,則將重新讀取主機文件並應用更改。dnsmasq``HUP
編輯:dnsmasq 並非旨在為其自己的主機提供動態主機地址。如前所述,它確實從其租用文件中為 DHCP 客戶端提供名稱。
如果您的主機是 Internet 網關,它通常會提供本地靜態地址。提供 Internet 網關地址可能會導致路由和防火牆問題。
您可以將 DHCP 客戶端配置為編寫一個單行主機文件。除了.
addn-host
_/etc/hosts
如果地址可能改變,那麼 DHCP 客戶端可以重寫文件並向 dnsmasqHUP
發送關於 IP 地址改變的信號。