### 创建网桥:
brctl addbr br0
ip link set br0 up
ip addr add 192.168.1.254/24 dev br0
ip addr add 2000::2001:0:0:0/64 dev br0
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -o br0 -j MASQUERADE
iptables -A FORWARD -i ens33 -o br0 -j ACCEPT
iptables -A FORWARD -o ens33 -i br0 -j ACCEPT
### 创建网络命名空间:
#! /bin/sh
if [ $# -ne 1 ]; then
echo "Usage: $0 <num>"
exit 1
fi
if [[ $i -gt 99 ]]; then
echo "Usage: $0 <num>, num <= 99"
exit 1
fi
ip netns | grep pe |awk '{print $1}'|xargs -I {} ip netns delete {}
sleep 1
echo "create $1 pe...."
for ((i=1; i<=$1; i++))
do
ip netns add pe$i
ip netns exec pe$i sysctl -w net.ipv4.ip_forward=1
ip netns exec pe$i sysctl -w net.ipv4.conf.all.rp_filter=0
ip netns exec pe$i sysctl -w net.ipv6.conf.all.forwarding=1
ip netns exec pe$i sysctl -w net.ipv6.conf.all.seg6_enabled=1
ip netns exec pe$i sysctl -w net.ipv4.conf.default.rp_filter=0
ip netns exec pe$i sysctl -w net.ipv6.conf.default.forwarding=1
ip netns exec pe$i sysctl -w net.ipv6.conf.default.seg6_enabled=1
ip netns exec pe$i sysctl -w net.ipv4.conf.lo.rp_filter=0
ip netns exec pe$i sysctl -w net.ipv6.conf.lo.forwarding=1
ip netns exec pe$i sysctl -w net.ipv6.conf.lo.seg6_enabled=1
ip netns exec pe$i sysctl -w net.vrf.strict_mode=1
ip link add veth-pe$i type veth peer name eth0 netns pe$i
ip netns exec pe$i ip addr add 192.168.1.$i/24 dev eth0
fmt_ipv6=$(printf "2000::20%02d:1:1:1/64" $i)
ip netns exec pe$i ip addr add $fmt_ipv6 dev eth0
ip netns exec pe$i ip link set eth0 up
ip netns exec pe$i ip link set lo up
ip netns exec pe$i ip route add default via 192.168.1.254
brctl addif br0 veth-pe$i
ip link set veth-pe$i up
done