运行 12.04 作为网关 - resolvconf、dhclient 和 dnsmasq 集成

运行 12.04 作为网关 - resolvconf、dhclient 和 dnsmasq 集成

我有一个网关服务器,最初是用 Ubuntu 桌面 12.04 设置的 - 也许是一个错误,我不知道,需要记住一些事情。

我撕掉了network-manager,现在想得到resolvconfdhclientdnsmasq一起玩得开心。

dhclienteth0 WAN从调制解调器获取网关的IP 地址和 ISP DNS 名称服务器地址。

dnsmasq需要为 eth1 上的其余 LAN 提供 DHCP,并充当 LAN 和网关机器的 DNS 缓存。

我也设置iptables为防火墙。

目前,网关/etc/resolv.conf仅显示名称服务器127.0.0.1,据我所知是正确的。

然而,我认为 dhclient 并没有向 dnsmasq 提供 ISP DNS 名称服务器,dnsmasq 也没有获取我指定的 OpenDNS 和 Google 名称服务器/etc/network/interfaces- 目前,除非我手动编辑/etc/resolv.conf以放入上游名称服务器(如8.8.8.8

所以我删除了 resolvconf 包。

现在我的局域网上没有 DHCP,也无法在主机本身上进行 DNS 查找 - 我可以在网上冲浪和 ping 通,但不能 ping 通 127.0.0.1。

我接下来该怎么做?此设置包含 和 的配置dhclient,以及和dnsmasq的相同文件,可在我的旧 Debian 机器上运行。resolv.confhosts

答案1

我终于知道问题出在哪里了。

在花了很长时间努力找出 resolvconf 或 dnsmasq 的问题之后,我最终决定仔细检查防火墙。由于我 5 年来没有更改过 iptables 规则中的任何内容,所以我不认为这是问题所在。但我不明白为什么 dnsmasq 在端口 53 上监听,但没有在其日志中写入任何 DNS 查询。所以一定是防火墙的问题。

很久以前,我写了一条规则,允许所有非外部接口的东西通过。

iptables -A INPUT -i !eth0 -j ACCEPT

这在我拥有的旧机器上运行良好,因为我没有使用 dnsmasq 在实际服务器上进行 DNS 查找。因此,dnsmasq 可以很好地处理来自 eth1 的请求。但在我的新机器上,我开始使用 lo 上的查找来测试它。在 Ubuntu 12.04 上,该规则不允许“除 eth0 之外的所有接口”。我尝试了一下规则,发现它应该是这样的:

iptables -A INPUT ! -i eth0 -j ACCEPT

也许如果我一开始就花一个小时用 ufw 配置我的新机器,我就可以在同一天启动并运行。本来可以的……

相关内容