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的位置,判断是本地网络还是远程网络

posted @ 2021-08-25 14:56  DaShuZang  阅读(136)  评论(0)    收藏  举报