为什么使用桥接网络的 KVM 机器发送的 DNS 查询会重传

为什么使用桥接网络的 KVM 机器发送的 DNS 查询会重传

我正在使用此命令在我的 KVM 机器中测试 DNS 解析( ip:192.168.31.30),并使用桥接网络与主机( br0: 192.168.31.2):

    [root@k8sslave1 var]# dig www.ifeng.com

; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> www.ifeng.com
;; global options: +cmd
;; connection timed out; no servers could be reached

我正在使用 Wireshark 跟踪主机上的网络流量,这是过滤器:

ip.dst == 8.8.8.8 && ip.proto == 17 && dns.qry.name == "www.ifeng.com"

结果显示 DNS 查询重新传输,那么为什么 DNS 查询重新传输?当我从主机 ping192.168.31.2192.168.31.30它时,它工作正常。

[dolphin@localhost infrastructure]$ ping 192.168.31.30
PING 192.168.31.30 (192.168.31.30) 56(84) bytes of data.
64 bytes from 192.168.31.30: icmp_seq=1 ttl=64 time=0.175 ms
64 bytes from 192.168.31.30: icmp_seq=2 ttl=64 time=0.201 ms
64 bytes from 192.168.31.30: icmp_seq=3 ttl=64 time=0.388 ms
64 bytes from 192.168.31.30: icmp_seq=4 ttl=64 time=0.349 ms
64 bytes from 192.168.31.30: icmp_seq=5 ttl=64 time=0.383 ms
64 bytes from 192.168.31.30: icmp_seq=6 ttl=64 time=0.236 ms
64 bytes from 192.168.31.30: icmp_seq=7 ttl=64 time=0.243 ms
64 bytes from 192.168.31.30: icmp_seq=8 ttl=64 time=0.370 ms

这是 Wireshark 输出:

在此处输入图片描述

答案1

造成这种情况的原因之一可能是防火墙没有设置为将公共接口的回复转发到网桥。尝试iptables-save | grep FORWARD查看转发的内容。

根据当前的情况,您可能需要添加类似以下内容:

iptables -A FORWARD -p udp -m udp --dport 53 -j ACCEPT

看起来您可能正在使用 NAT(给定 192.168.xx 寻址),因此您可能还需要 NAT 表中的条目。由于 DNS 通常使用无状态的 UDP,因此需要明确允许返回路由。

尝试添加+tcp命令dig以查看连接是否通过 TCP 工作;如果是,这将进一步证明这是一个防火墙问题。

显示主机上现有的防火墙规则将会很有用。

相关内容