我遇到了一个非常奇怪的问题,我不知道该如何解决。我希望这里有人能提供一些有用的想法。
有关虚拟机的一些信息:
- VM0:Debian 10 - 192.168.10.102 [+另外 2 个接口]
- VM1:Debian 10 - 192.168.10.103
- 两者均使用 proxmox 进行虚拟化(两者的 proxmox 防火墙均不在线,集群防火墙允许本地网络中的所有流量)
- 它们通过桥接接口直接连接
- 两台机器都有正确的路由(192.168.10.0/24 通过正确的网桥,并且没有指向错误位置的更高流行度的路由)
- 两台机器的 ARP 表中都有对方的正确条目
- 两台机器的 iptables 规则均为空,且未配置其他防火墙
从 VM0 连接到 VM1 时的行为:
- VM0:[随机高端口] -> VM1:1234 通过 TCP 正常工作
- 可以与 VM1 建立 SSH 连接
从 VM1 连接到 VM0 时的行为:
- VM1:[随机高端口] -> VM0:1234SYN 数据包到达但未进行 TCP 握手 - 无响应
- VM1:[随机高端口] -> VM0:[ssh]在职的
- VM1 -> ping -> VM0在职的
- VM1 -> 跟踪路由 -> VM0不工作
从 VM0 连接到 VM1 时的行为:
- VM0:[随机高端口] -> VM1:1234SYN 数据包到达,TCP 握手按预期发生,连接正常
- VM0:[随机高端口] -> VM1:[ssh]在职的
- VM0 -> ping -> VM1在职的
- VM0 -> 跟踪路由 -> VM1在职的
端口 1234 上发生的情况也会发生在任何其他 TCP 端口上。SSH 除外。Web 服务器无法访问等。
我的直觉告诉我,出于某种原因,这是一个防火墙问题,但在我看来这不太合逻辑。这些机器实际上是通过第 2 层连接的,因为它们共享同一个网桥,并且不应该有第 2 层防火墙。Proxmox 也不应该干扰第 2 层流量(我猜?)。
他们的 ARP 记录是正确的,并且在正确的接口上检测到。
任何想法都非常感谢。提前谢谢您。
附言:
使用 wireshark 捕获的 SYN 数据包的响应失败(在所有接口上,因此错误的路由不应该是原因)
答案1
更新:我说这台机器除了启用了 iptables 之外没有其他本地防火墙,这是在撒谎。问题是 nftables 阻止了我的数据包。我永远不会忘记再次检查 nftables。:)
检查活动的 nftables 规则:nft list ruleset
然后通过清除所有 nftables 规则nft flush ruleset
或编辑/etc/nftables.conf
(或存储 nftables 配置的文件并打开端口)。
最后nft -f /etc/nftables.conf