iptables -j MASQUERADE 针对特定网络接口:连接到 VPN 并更改默认路由后,对等端的连接丢失

iptables -j MASQUERADE 针对特定网络接口:连接到 VPN 并更改默认路由后,对等端的连接丢失

我用来将流量从我的无线网卡转发到网络命名空间。

我创建了网络命名空间、虚拟以太网接口和所有其余内容:

ip netns add nsx
ip link add vethx type veth peer name peerx netns nsx
ip link set vethx up
ip address add 10.0.0.1/24 dev vethx
ip netns exec nsx ip link set peerx up
ip netns exec nsx ip addr add 10.0.0.2/24 dev peerx
ip netns exec nsx ip route add default via 10.0.0.1 dev peerx
mkdir -p /etc/netns/nsx
echo "nameserver 1.1.1.1" > /etc/netns/nsx/resolv.conf

我在使用的接口中启用转发,并在 NAT 表中启用 MASQUERADE:

sysctl -w net.ipv4.conf.wlan0.forwarding=1
sysctl -w net.ipv4.conf.vethx.forwarding=1
iptables -t nat -A POSTROUTING -o wlan0 -s 10.0.0.0/24 -j MASQUERADE

它可以工作,但是当我连接到主机中的 VPN 时,网络命名空间内的连接就会停止。

这是我连接到 VPN 后的路由表:

0.0.0.0/1 via 10.240.30.118 dev tun0 
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.4 metric 100 
10.240.30.118 dev tun0 proto kernel scope link src 10.240.30.117 
127.0.0.1 via 192.168.1.1 dev wlan0 
128.0.0.0/1 via 10.240.30.118 dev tun0 
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.4 metric 100 

连接到 VPN 时,必须做什么才能使网络命名空间的所有流量都通过无线接口?

相关内容