dnsmasq 無法在 Ubuntu 13.10 啟動時啟動,在系統日誌中顯示錯誤:
dnsmasq failed to create listening socket for 192.168.0.10: Cannot assign requested address
當我手動啟動它時,效果很好。這是 dnsmasq.conf:
bogus-priv
server=212.27.40.240
server=212.27.40.241
local=/mydomain.0./
# interface=eth0
listen-address=127.0.0.1
listen-address=192.168.0.10
expand-hosts
domain=mydomain.0.
dhcp-range=192.168.0.20,192.168.0.100,24h
dhcp-option=3,192.168.0.1
dhcp-option=vendor:MSFT,2,1i
cname="www.mydomain.0",myhost
據我了解,NetworkManager 使用 dnsmasq 的精簡版本實例,該實例可能與完整版本衝突。我猜這就是問題的原因。我想讓帶有伺服器的主機以及網路上的所有其他主機使用 dnsmasq。
對正在發生的事情有什麼想法嗎?
答案1
聽起來該位址或連接埠已被使用。嘗試停用networkmanager
看看這是否有幫助。這很可能不是原因,因為當您手動啟動服務時,您可以存取該地址。
dnsmasq
此外,如果在服務啟動之前您的位址尚未指派給伺服器,則在啟動期間可能會發生這種情況。如果是這種情況,請確保為您的伺服器指派了靜態 IP 位址。
答案2
我在14.04也遇到了同樣的問題。原來是NetworkManager和dnsmasq的結合體。您/var/log/syslog
可能會看到,當 dnsmasq 嘗試啟動時,eth0 尚未準備好。
我的解決方案是透過在 .net 檔案中配置 eth0 來停用 NM 的 eth0 /etc/network/interfaces
。新增
iface eth0 inet dhcp
...或類似的配置。因此 eth0 在 dnsmasq 啟動時可用。
答案3
有同樣的錯誤,我沒有啟動我的介面 eth0,也沒有分配伺服器的 IP 位址。所以解決問題的方法是
- 啟動 eth0 介面並分配 IP
sudo ifup eth0
並檢查sudo ip a
- 重新啟動 dnsmask 伺服器
sudo service dnsmasq restart
如果它有幫助我的配置如下 /etc/網路/接口
allow-hotplug eth0
iface eth0 inet dhcp
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
dns-nameservers 8.8.8.8
dns-search lan
post-up /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
/etc/dnsmasq.conf
interface=eth0 # Use interface eth0
listen-address=192.168.2.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=192.168.2.50,192.168.2.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time
我的目的是讓 dhcp 伺服器能夠將有線流量重新路由到我的 lptp 的 wlan