Skip to content

Instantly share code, notes, and snippets.

@sarjsheff
Last active April 25, 2022 09:02
Show Gist options
  • Save sarjsheff/1b5b088c18e237c9aa28fcc218578536 to your computer and use it in GitHub Desktop.
Save sarjsheff/1b5b088c18e237c9aa28fcc218578536 to your computer and use it in GitHub Desktop.
ip netns simple virtual net + static route
flowchart LR
    ve1e1 --- ve2e1
    ve1e2 --- ve3e1
    ve3e2 --- ve4e1

subgraph ve1
   ve1e1(ve1e1<br/><small>.1</small>)
   ve1e2(ve1e2<br/><small>.2</small>)
end

subgraph ve2
   ve2e1(ve2e1<br/><small>.3</small>)
end

subgraph ve3
   ve3e1(ve3e1<br/><small>.4</small>)
   ve3e2(ve3e1<br/><small>.5</small>)
end

subgraph ve4
   ve4e1(ve4e1<br/><small>.6</small>)
end
Loading
#!/bin/sh
set -x
ip netns delete ve1
ip netns delete ve2
ip netns delete ve3
ip netns delete ve4
ip netns add ve1
ip netns add ve2
ip netns add ve3
ip netns add ve4
ip link add ve1e1 netns ve1 type veth peer ve2e1 netns ve2
ip link add ve1e2 netns ve1 type veth peer ve3e1 netns ve3
ip link add ve3e2 netns ve3 type veth peer ve4e1 netns ve4
ip netns exec ve1 ip addr add 10.20.1.1/24 dev ve1e1
ip netns exec ve1 ip addr add 10.20.1.2/24 dev ve1e2
ip netns exec ve2 ip addr add 10.20.1.3/24 dev ve2e1
ip netns exec ve3 ip addr add 10.20.1.4/24 dev ve3e1
ip netns exec ve3 ip addr add 10.20.1.5/24 dev ve3e2
ip netns exec ve4 ip addr add 10.20.1.6/24 dev ve4e1
ip netns exec ve1 ip link set dev lo up
ip netns exec ve2 ip link set dev lo up
ip netns exec ve3 ip link set dev lo up
ip netns exec ve4 ip link set dev lo up
ip netns exec ve1 ip link set dev ve1e1 up
ip netns exec ve1 ip link set dev ve1e2 up
ip netns exec ve2 ip link set dev ve2e1 up
ip netns exec ve3 ip link set dev ve3e1 up
ip netns exec ve3 ip link set dev ve3e2 up
ip netns exec ve4 ip link set dev ve4e1 up
ip netns exec ve1 ip route flush all
ip netns exec ve1 ip route add dev ve1e1 10.20.1.1
ip netns exec ve1 ip route add dev ve1e2 10.20.1.2
ip netns exec ve1 ip route add dev ve1e1 10.20.1.3
ip netns exec ve1 ip route add dev ve1e2 10.20.1.4
ip netns exec ve1 ip route add dev ve1e2 10.20.1.5
ip netns exec ve1 ip route add dev ve1e2 10.20.1.6 via 10.20.1.5
ip netns exec ve2 ip route flush all
ip netns exec ve2 ip route add dev ve2e1 10.20.1.1
ip netns exec ve2 ip route add dev ve2e1 10.20.1.2
ip netns exec ve2 ip route add dev ve2e1 10.20.1.3
ip netns exec ve2 ip route add dev ve2e1 10.20.1.4 via 10.20.1.2
ip netns exec ve2 ip route add dev ve2e1 10.20.1.5 via 10.20.1.2
ip netns exec ve2 ip route add dev ve2e1 10.20.1.6 via 10.20.1.2
ip netns exec ve3 ip route flush all
ip netns exec ve3 ip route add dev ve3e1 10.20.1.1
ip netns exec ve3 ip route add dev ve3e1 10.20.1.2
ip netns exec ve3 ip route add dev ve3e1 10.20.1.4
ip netns exec ve3 ip route add dev ve3e2 10.20.1.5
ip netns exec ve3 ip route add dev ve3e2 10.20.1.6
ip netns exec ve3 ip route add dev ve3e1 10.20.1.3 via 10.20.1.1
ip netns exec ve4 ip route flush all
ip netns exec ve4 ip route add dev ve4e1 10.20.1.4
ip netns exec ve4 ip route add dev ve4e1 10.20.1.5
ip netns exec ve4 ip route add dev ve4e1 10.20.1.6
ip netns exec ve4 ip route add dev ve4e1 10.20.1.1 via 10.20.1.4
ip netns exec ve4 ip route add dev ve4e1 10.20.1.2 via 10.20.1.4
ip netns exec ve4 ip route add dev ve4e1 10.20.1.3 via 10.20.1.4
set +x
for ip in `seq 1 6`
do
ip netns exec ve1 ping -c 1 10.20.1.${ip} > /dev/null || echo "ve1 -> ${ip}"
ip netns exec ve2 ping -c 1 10.20.1.${ip} > /dev/null || echo "ve2 -> ${ip}"
ip netns exec ve3 ping -c 1 10.20.1.${ip} > /dev/null || echo "ve3 -> ${ip}"
ip netns exec ve4 ping -c 1 10.20.1.${ip} > /dev/null || echo "ve4 -> ${ip}"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment