我正在实验室中设置 DNS 服务器,其中 DNS 服务器(Ubuntu 服务器)和客户端(Ubuntu 桌面)位于同一 LAN(vSwitch)中,并且 pfsense 作为外部传出流量的防火墙。没有定义任何阻止规则,并且 pfsense 上的所有内容都是开放的,因此每个虚拟机都可以相互通信,也可以访问互联网。
当我使用从客户端(172.16.0.2)向 DNS 服务器发送查询时nslookup facebook.com 172.16.0.7
;几秒钟后出现连接超时。
我还尝试使用 Wireshark 检查流量,发现从 DNS 服务器到客户端的 ICMP 故障如下图所示。为了尝试一下,我iptables -A INPUT -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
在客户端和 DNS 服务器上的 IPtables 上都添加了 ICMP 规则,但没有用。
我是否做错了什么或者需要打开任何基于主机的规则或其他东西才能使 DNS 服务器正常工作?
named.conf.options 文件:
acl "trusted" {
172.16.0.7; #localhost
172.16.0.1; #GW and FW
172.16.0.2;
172.16.0.3;
172.16.0.0/16; #complete subnet
};
options {
directory "/var/cache/bind";
dump-file "/var/cache/bind/dump.file";
recursion yes;
allow-recursion { trusted; };
listen-on { 172.168.0.7; };
allow-transfer { none; };
forwarders {
8.8.8.8;
8.8.4.4;
};
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation no;
//listen-on-v6 { any; };
};
答案1
问题不在于使用listen-on
本身,而是使用您指定的 IP 地址。
你有过
listen-on { 172.168.0.7; };
请注意,该 IP 地址 ( 172.168.0.7
) 与 不同172.16.0.7
,这可以在 Wireshark 屏幕截图中看到。(它也不与 ACL 中的其他地址位于同一网络中。)
答案2
listen-on { 172.168.0.7; };
通过从文件中删除该行named.conf.options
并重新启动服务,问题已得到解决 。
参考自此帖: 如何配置 bind9 以接受来自其他机器的连接
有人能解释一下 listen-on 到底起什么作用,以及为什么它会像原始帖子中描述的那样丢弃 ICMP 数据包吗?
谢谢!