我試圖讓dnsmasq作爲Docker容器內的DHCP服務器運行,向主機的物理網絡上的計算機發出DHCP地址。我使用https://hub.docker.com/r/andyshinn/dnsmasq/的Alpine Linux 6MB容器。從Docker容器中將dnsmasq作爲DHCP服務器運行
它可以在主機上的端口53上作爲DNS服務器正常工作,但沒有任何監聽端口67/udp,這是我期待DHCP的地方。我使用 dhcping 192.168.2.2
,但得到「沒有答案」。 telnet 192.168.2.2 67
返回「連接被拒絕」。在容器
我dnsmasq.conf文件看起來像這樣:
interface=eth0
user=root
domain-needed
bogus-priv
no-resolv
local=/mydomain.io/
no-poll
server=8.8.8.8
server=8.8.4.4
no-hosts
addn-hosts=/etc/dnsmasq_static_hosts.conf
expand-hosts
domain=mydomain.io
dhcp-range=192.168.2.10,192.168.2.250,255.255.255.0,192.168.2.255,5m
# Have windows machine release on shutdown
dhcp-option=vendor:MSFT,2,1i
# No default route
dhcp-option=3
該主機具有192.168.2.2的靜態地址。
我啓動容器是這樣的:
docker run -d --name dns -p 192.168.2.2:67:67/udp -p 192.168.2.2:53:53/udp sitapati/dns
有這臺機器,這是運行Ubuntu 16.04上沒有防火牆。試圖
事情我已經想過/:
- 是不是因爲eth0的容器有一個完全不同的子網地址? (
docker inspect
告訴我它是橋接接口上的172.17.0.2) - 是否需要使用
--net host
?我試過了,但仍然無法工作。
我最終使用了isc-dhcpd。這樣可行。仍然不確定爲什麼dnsmasq不起作用。 以下是Docker容器內的可用DHCP服務器: https://github.com/jwulf/docker-dhcpd –
爲什麼這個問題被低估? – igal