![使用 dnsmasq 解析本地局域网中的所有 DNS 查询](https://linux22.com/image/1526210/%E4%BD%BF%E7%94%A8%20dnsmasq%20%E8%A7%A3%E6%9E%90%E6%9C%AC%E5%9C%B0%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%20DNS%20%E6%9F%A5%E8%AF%A2.png)
我是新手,正在尝试托管 LAMP 服务器。我在 Fedora 24 机器上托管了一个 Apache 服务器。为了好玩,我想为服务器设置一个域名,比如说。www.testpage.ac.in
现在,我认为在我的 /etc/hosts 文件上有一个相应的名称解析条目会很有帮助。而且,它成功了。此外,我想将同样的功能扩展到我的 LAN 上运行的所有其他机器。虽然对所有其他计算机的相应 /etc/hosts 文件进行类似的输入会更容易,但我想做不同的事情。我想拥有一种 DNS 类型的功能。由于我不想更改我们机构路由器的配置设置,我在网上了解了 dnsmasq 后决定尝试使用它。所以,我的配置文件如下所示 -
/etc/hosts
192.168.1.190 www.testpage.ac.in
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/resolv.conf
nameserver 127.0.0.1
/etc/dnsmasq-resolv.conf
nameserver 8.8.8.8
nameserver 192.168.1.1
/etc/dnsmasq.conf
resolv-file=/etc/dnsmasq-resolv.conf
interface=enp2s0
listen-address=127.0.0.1
journalctl -u dnsmasq 的输出
Mar 29 20:04:26 AUTO dnsmasq[3398]: started, version 2.76 cachesize 150
Mar 29 20:04:26 AUTO dnsmasq[3398]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth DNSSEC loop
Mar 29 20:04:26 AUTO dnsmasq[3398]: reading /etc/dnsmasq-resolv.conf
Mar 29 20:04:26 AUTO dnsmasq[3398]: using nameserver 8.8.8.8#53
Mar 29 20:04:26 AUTO dnsmasq[3398]: using nameserver 192.168.1.1#53
Mar 29 20:04:26 AUTO dnsmasq[3398]: read /etc/hosts - 2 addresses
接下来,我将局域网上每台其他计算机的 DNS 设置更改为主机的 DNS 设置(192.168.1.190)。
所有其他机器的 /etc/resolv.conf
nameserver 192.168.1.190
我能够从主机 (192.168.1.190) 访问 www.testpage.ac.in。我也可以从这台机器访问互联网。
我希望像往常一样从 LAN 上的每台其他计算机访问互联网,但是却无法做到。此外,我无法通过其域名 (www.testpage.ac.in) 访问托管服务器,但如果输入其 IP 地址则可以访问。
我认为我的局域网上的计算机无法正确解析 DNS 查询,这实际上造成了麻烦。任何有关此问题的见解都将不胜感激。
答案1
我假设你用作服务器的机器上有防火墙,阻止端口 53 [ DNS ] 上的入站请求。从命令行运行 iptables -vnL 来查看防火墙的设置。你可以暂时使用
iptables -I INPUT -p udp --dport 53 -j ACCEPT
iptables -I INPUT -p tcp --dport 53 -j ACCEPT
允许端口 53 上的流量通过防火墙。
还要检查您的 dnsmasq.conf 文件是否没有任何“interface=”行,或者是否有一行用于您的 LAN 接口。