主机阻止除 icmp 之外的所有内容

主机阻止除 icmp 之外的所有内容

我在 Centos 7 VM 主机(qemu-kvm)上遇到了一个奇怪的问题。

我有两台虚拟机,直到一周前,它们在桥接网络中运行良好。现在它们无法再访问网络或互联网上的任何东西(主机本身除外)。让它们与外界通信的唯一方法是将网络源更改为虚拟/NAT。这显然不是理想的选择,因为它们不再直接连接到我的网络。

例外情况是 ICMP 流量。桥接时我可以 ping 网络上(和互联网)的其他设备,但所有 TCP/UDP 流量都被阻止。

回想一下我的步骤,发生这种情况之前我做的最后一件事是在主机上启动 docker 服务(由于某种原因该服务已停止),但网络连接问题在此之后大约 10-20 秒才开始出现。我应该在这里指出,我没有在主机上设置任何容器。

我的直觉告诉我,某个地方的 iptables 规则把事情搞砸了,但老实说,我不知道这样的规则是如何创建的(除了由 docker 自动创建),而且我不知道我到底应该寻找什么。

顺便说一下,我有两个网络(192.168.0.0192.168.1.0),它们被隔离在不同的 VLAN 上。主机有两个 NIC,一个连接到每个 VLAN,虚拟机桥接到两个网络。0.0连接到互联网,而 则1.0没有。VM 主机不充当网关。

这些是我的 iptables 转储:

这是我的防火墙配置:

internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: bridge0
  sources: 
  services: ssh mdns samba-client dhcpv6-client samba mountd rpc-bind nfs ntp dns
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

cameras (active)
  target: default
  icmp-block-inversion: no
  interfaces: bridge1
  sources: 192.168.1.4/32
  services: ntp
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

[编辑]

我添加了这里的输出,iptables -S因为它显然更有用: https://pastebin.com/wKAtSKPG

此外,我确认这是一个防火墙问题,在我停止了防火墙之后,我能够从虚拟机连接到外部世界

答案1

我的直觉告诉我,某个地方的 iptables 规则搞砸了事情,但我真的不知道这样的规则是怎么创建的(除了由docker自动执行的以外),我不知道我到底应该寻找什么。

我猜你的直觉是完全正确的。Docker 使用 IPtables用于其内部路由,并将您现有的规则与其自己的规则混合。我过去曾通过比较 Docker 守护程序启动前后的 IPtables 状态来调试此设置的问题(您遇到的延迟可能是设置时间)。

如果您发现 Docker 确实扰乱了您的设置,您可能需要手动插入 Docker 规则或将 Docker 守护进程移动到另一台机器上。

相关内容