Я пытаюсь заставить dnsmasq работать как DHCP-сервер внутри контейнера Docker, выдавая адреса DHCP машинам в физической сети хоста. Я использую контейнер Alpine Linux 6MB от https://hub.docker.com/r/andyshinn/dnsmasq/.Запустите dnsmasq как DHCP-сервер из контейнера Docker
Он отлично работает как DNS-сервер на порту 53 на хост-компьютере, однако на порту 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 не работает. Вот рабочий DHCP-сервер внутри контейнера Docker: https://github.com/jwulf/docker-dhcpd –
Почему этот вопрос был проголосован? – igal