从 linux 命名空间 ping 通外部网络失败,为什么?

从 linux 命名空间 ping 通外部网络失败,为什么?

我创建了一个命名空间,并使用 veth 对(veth1 和 veth2)将命名空间与我的主机连接起来。我还在我的主机中创建了一个 linux 桥,并将 eth0 和 veth1 添加到桥作为接口。她的命令是:

ip netns add namespace2
ip link add veth1 type veth peer name veth2
ip link set veth2 netns namespace2
brctl addbr br1
brctl addif br1 ens33
ifconfig ens33 0.0.0.0
ifconfig br1 192.168.90.43/22 up
brctl addif br1 veth1
ip netns exec namespace2 ifconfig veth2 192.168.90.47/22 up
ip netns exec namespace2 route add default gw 192.168.91.254
iptables -t filter  -A FORWARD -m physdev --physdev-in ens33 --physdev-out veth1 -j ACCEPT
iptables -t filter  -A FORWARD -m physdev --physdev-out ens33 --physdev-in veth1 -j ACCEPT

当我从主机向外 ping 时,它可以工作

ping 8.8.8.8

但是当我从我的命名空间 ping 时,它失败了

ip netns exec namespace2 ping 8.8.8.8

我尝试从以下位置 ping 我的网关

ip netns exec namespace2 ping 192.168.91.254

其包裹损失约为70%。

为什么会出现这样的情况呢?

相关内容