我正在尝试让dnsmasq作为Docker容器内的DHCP服务器运行,向主机物理网络上的机器发出DHCP地址.我正在使用https://hub.docker.com/r/andyshinn/dnsmasq/上的Alpine Linux 6MB容器.
它可以作为主机端口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
Run Code Online (Sandbox Code Playgroud)
主机的静态地址为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.
我曾经想过/尝试的事情:
docker inspect
告诉我在桥接界面上它是172.17.0.2)--net host
吗?我试过了,它仍然无法正常工作.我在ubuntu12.04上使用Dnsmasq用于DHCP服务器.在我的LAN中有两个路由器,然后我想为不同的设备指定两个网关地址.所以它支持这个功能吗?如果它支持,如何指定?
我正在尝试使用docker,nginx和uwsgi设置django站点:我有一个正在运行的nginx docker容器作为反向代理(称为ceca-nginx-proxy),dnsmasq
并且还有一个可以通信的nginx(ceca-nginx)容器使用uwsgi容器(ceca-uwsgi),我可以使用curl(with )连接到ceca-nginx容器,并且让django站点在ceca-uwsgi容器中运行,问题是当我想通过ceca获取站点时-nginx-proxy:我的ceca-nginx-proxy错误日志中出现此错误:curl --resolve http://test.ceca.com http://172.17.0.7
ceca-nginx无法解析(5:拒绝操作),客户端:172.17.0.1,服务器:*。ceca.com,请求:“ GET / HTTP / 1.1”,主机:“ 172.17.0.8”
ceca-nginx-proxy反向代理的服务器块是:
server {
listen 80;
server_name *.ceca.com;
error_log /tmp/proxy_error_nginx.log warn;
access_log /tmp/proxy_access_nginx.log;
location / {
set $example ceca-nginx;
resolver 127.0.0.1;
proxy_pass http://$example;
}
}
Run Code Online (Sandbox Code Playgroud)
我在同一台机器上运行dnsmasq来解析/ etc / hosts中的主机名(来自docker链接容器的主机名),如下所示:
dnsmasq -q -8 /tmp/dnsmasq.log --port 53 -R -u root
Run Code Online (Sandbox Code Playgroud)
对于我在dnsmasq.log中看到的内容,主机名解析为[1],但nginx抱怨并返回“ 502 Bad Gateway”页面。如果有人可以帮助我,我将永远感激不已,如果我们见面,我会购买很多啤酒和fernet。
[1]
Jun 6 21:39:47 dnsmasq[321]: query[A] ceca-nginx from 127.0.0.1
Jun 6 21:39:48 dnsmasq[321]: /etc/hosts ceca-nginx is 172.17.0.7 …
Run Code Online (Sandbox Code Playgroud)是否可以*
在路径模式中设置通配符?
address=.example.com/foo/*/bar
似乎不起作用。
address=.example.com/foo/xxx/bar
工作,但我有我需要匹配的随机字符,我不知道它们是什么提前。
也许某人有一些帮助?我在Ubuntu 12.04 LTS上运行dnsmasq.该服务器的地址是192.168.15.3.我的网关的DNS是192.168.1.254,它将我带到了互联网.我还有一个192.168.15.2的专用DNS.所以我想给DHCP客户端提供这3个名称服务器.这是我的dnsmasq.conf server = section:
server=/localnet/192.168.15.3
server=/localnet/192.168.15.2
server=/15.168.192.in-addr.arpa/192.168.1.254
Run Code Online (Sandbox Code Playgroud)
但是,当我查看客户端上的DHCP分配时,我只看到192.168.15.3作为唯一的DNS服务器.客户端无法访问Internet(.3上的NIC配置正确,可以从其控制台登录访问Internet).
当然,第一个服务器=行可能没有必要,但我添加它认为它可能会有所帮助,但没有.
我究竟做错了什么?谢谢你的帮助!