ip netns 网络测试
#!/bin/bash function set_up() { ip netns add ns1 ip netns add ns2 ip netns add ns3 ip link add veth12 type veth peer name veth21 ip link add veth23 type veth peer name veth32 #ip link add veth231 type veth peer name veth321 ip link set veth12 netns ns1 ip link set veth21 netns ns2 ip link set veth23 netns ns2 ip link set veth32 netns ns3 #ip link set veth231 netns ns2 #ip link set veth321 netns ns3 ip netns exec ns1 ip addr add 192.168.1.101/24 dev veth12 ip netns exec ns1 ip link set veth12 up ip netns exec ns2 ip addr add 192.168.1.1/24 dev veth21 ip netns exec ns2 ip link set veth21 up ip netns exec ns2 ip addr add 110.0.0.101/24 dev veth23 ip netns exec ns2 ip link set veth23 up ip netns exec ns3 ip addr add 110.0.0.102/24 dev veth32 ip netns exec ns3 ip link set veth32 up #ip netns exec ns2 ip addr add 192.168.1.8/24 dev veth231 #ip netns exec ns2 ip link set veth231 up #ip netns exec ns3 ip addr add 192.168.1.9/24 dev veth321 #ip netns exec ns3 ip link set veth321 up #ip netns exec ns1 ip route add default via 192.168.1.1 echo "1" > /proc/sys/net/ipv4/ip_forward //开启网络转发功能
ip netns exec ns2 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o veth23 -j MASQUERADE
# 这条为了 回应的消息 能回来, 能ping 110.0.0.102通(否则包能到110.0.0.102, 但是响应包无法回来)
#或者在ns3中加条路由也可以ip netns exec ns3 ip route add default via 110.0.0.101
} function tear_down() { ip netns del ns1 ip netns del ns2 ip netns del ns3 } if [ "$1" == "set_up" ];then set_up elif [ "$1" == "tear_down" ];then tear_down else echo "Nothing to do ..." fi
包的转发:创建分组包,ip协议判断目标ip的位置,判断是本地网络还是远程网络
不乱于心

浙公网安备 33010602011771号