标签: dnsmasq

从Docker容器内部运行dnsmasq作为DHCP服务器

我正在尝试让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.

我曾经想过/尝试的事情:

  • 是因为容器中的eth0在完全不同的子网上有一个地址?(docker inspect告诉我在桥接界面上它是172.17.0.2)
  • 它需要使用--net host吗?我试过了,它仍然无法正常工作.

linux dnsmasq dhcp docker

3
推荐指数
1
解决办法
8287
查看次数

如何在dnsmasq中指定两个或更多网关

我在ubuntu12.04上使用Dnsmasq用于DHCP服务器.在我的LAN中有两个路由器,然后我想为不同的设备指定两个网关地址.所以它支持这个功能吗?如果它支持,如何指定?

dnsmasq

2
推荐指数
2
解决办法
4502
查看次数

Nginx + dnsmasq ='无法解决(5:操作被拒绝)'

我正在尝试使用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”

  • 172.17.0.1是分配的docker ip
  • * .ceca.com是ceca-nginx-proxy的nginx配置中定义的server_name
  • 172.17.0.8是ceca-nginx-proxy ip
  • 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)

dnsmasq hosts nginx docker

2
推荐指数
1
解决办法
2011
查看次数

dnsmasq中的通配符路径?

是否可以*在路径模式中设置通配符?

address=.example.com/foo/*/bar 似乎不起作用。

address=.example.com/foo/xxx/bar 工作,但我有我需要匹配的随机字符,我不知道它们是什么提前。

dns dnsmasq

2
推荐指数
1
解决办法
2371
查看次数

无法通过DNSMASQ DHCP配置多个名称服务器

也许某人有一些帮助?我在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).

当然,第一个服务器=行可能没有必要,但我添加它认为它可能会有所帮助,但没有.

我究竟做错了什么?谢谢你的帮助!

dns dnsmasq dhcp

1
推荐指数
1
解决办法
4452
查看次数

标签 统计

dnsmasq ×5

dhcp ×2

dns ×2

docker ×2

hosts ×1

linux ×1

nginx ×1