#!/bin/bash ip netns delete ns1 ip netns add ns1 # 创建新 namespace ns1 ip link add veth0 type veth peer name veth1 # 创建一对veth pair ip link set veth0 netns ns1 # 将端口 veth0 接入namespace ns1 中 ip netns list ip netns ns1 exec ifconfig -a ip addr add 10.100.1.1/24 dev veth1 # 给 veth1 端口指定 IP、子网掩码、广播域 ip link set veth1 up # veth1 启用
ip netns exec ns1 ip addr add 10.100.1.2/24 dev veth0 # 给命名空间 ns1 中的端口veth0指定IP、子网掩码、广播域 ip netns exec ns1 ip link set veth0 up # 启用命名空间ns1 中的端口veth0 ip netns exec ns1 ip addr show # 和ip ad一样列出网络接口 ip netns exec ns1 ip route add default via 10.100.1.1 # 给命名空间 ns1 中设置路由规则下一跳地址设为物理机上接的网口的IP ip netns exec ns1 ip route show # 展示 ns1 上的路由规则 ip netns exec ns1 ping 10.100.1.1 -c 4 # ping 物理机上的veth1的IPecho 1 > /proc/sys/net/ipv4/ip_forward # 开启物理机的 ip forwarding 功能 iptables -P FORWARD DROP iptables -F FORWARD iptables -t nat -F iptables -t nat -A POSTROUTING -s 10.100.1.0/255.255.255.0 -o ens160 -j MASQUERADE # ens160为物理机上的可通外网的网卡 #Allow forwarding iptables -A FORWARD -i ens160 -o veth1 -j ACCEPT iptables -A FORWARD -o ens160 -i veth1 -j ACCEPT iptables -L -n # show the iptables of filter iptables -t nat -L -n # show the iptables of nat