Skip to content

Instantly share code, notes, and snippets.

@kotovalexarian
Last active July 21, 2021 18:35
Show Gist options
  • Save kotovalexarian/0194cb801ca4fa9ab77c9f4a2104f4ef to your computer and use it in GitHub Desktop.
Save kotovalexarian/0194cb801ca4fa9ab77c9f4a2104f4ef to your computer and use it in GitHub Desktop.
Linux network namespaces

Abbreviations

  • mc - just prefix for every object in this example
  • br - bridge
  • rtr - router
  • srv - server (is not different from client)
  • cli - client (is not different from server)

Network namespaces and interfaces

  • mc-rtr
    • mc-rtr-br
    • mc-rtr-srv
    • mc-rtr-cli1
    • mc-rtr-cli2
  • mc-srv
    • mc-srv-rtr
  • mc-cli1
    • mc-cli1-rtr
  • mc-cli2
    • mc-cli2-rtr
#!/bin/sh
set -e
ip netns delete mc-rtr
ip netns delete mc-srv
ip netns delete mc-cli1
ip netns delete mc-cli2
echo 'OK!'
#!/bin/sh
set -ex
ip netns add mc-rtr
ip netns add mc-srv
ip netns add mc-cli1
ip netns add mc-cli2
ip link add mc-rtr-srv type veth peer name mc-srv-rtr
ip link add mc-rtr-cli1 type veth peer name mc-cli1-rtr
ip link add mc-rtr-cli2 type veth peer name mc-cli2-rtr
ip link set mc-rtr-srv netns mc-rtr
ip link set mc-rtr-cli1 netns mc-rtr
ip link set mc-rtr-cli2 netns mc-rtr
ip link set mc-srv-rtr netns mc-srv
ip link set mc-cli1-rtr netns mc-cli1
ip link set mc-cli2-rtr netns mc-cli2
ip netns exec mc-rtr brctl addbr mc-rtr-br
ip netns exec mc-rtr brctl addif mc-rtr-br mc-rtr-srv
ip netns exec mc-rtr brctl addif mc-rtr-br mc-rtr-cli1
ip netns exec mc-rtr brctl addif mc-rtr-br mc-rtr-cli2
ip netns exec mc-rtr ip link set lo up
ip netns exec mc-srv ip link set lo up
ip netns exec mc-cli1 ip link set lo up
ip netns exec mc-cli2 ip link set lo up
ip netns exec mc-rtr ip addr add 10.0.0.1/24 brd + dev mc-rtr-br
ip netns exec mc-srv ip addr add 10.0.0.2/24 dev mc-srv-rtr
ip netns exec mc-cli1 ip addr add 10.0.0.3/24 dev mc-cli1-rtr
ip netns exec mc-cli2 ip addr add 10.0.0.4/24 dev mc-cli2-rtr
ip netns exec mc-rtr ip addr add fd00::1/64 dev mc-rtr-br
ip netns exec mc-srv ip addr add fd00::2/64 dev mc-srv-rtr
ip netns exec mc-cli1 ip addr add fd00::3/64 dev mc-cli1-rtr
ip netns exec mc-cli2 ip addr add fd00::4/64 dev mc-cli2-rtr
ip netns exec mc-rtr ip link set mc-rtr-br up
ip netns exec mc-rtr ip link set mc-rtr-srv up
ip netns exec mc-rtr ip link set mc-rtr-cli1 up
ip netns exec mc-rtr ip link set mc-rtr-cli2 up
ip netns exec mc-srv ip link set mc-srv-rtr up
ip netns exec mc-cli1 ip link set mc-cli1-rtr up
ip netns exec mc-cli2 ip link set mc-cli2-rtr up
echo 'OK!'
#!/bin/sh
set -e
sudo ip netns exec mc-rtr ping -c 3 10.0.0.1
sudo ip netns exec mc-rtr ping -c 3 10.0.0.2
sudo ip netns exec mc-rtr ping -c 3 10.0.0.3
sudo ip netns exec mc-rtr ping -c 3 10.0.0.4
sudo ip netns exec mc-srv ping -c 3 10.0.0.1
sudo ip netns exec mc-srv ping -c 3 10.0.0.2
sudo ip netns exec mc-srv ping -c 3 10.0.0.3
sudo ip netns exec mc-srv ping -c 3 10.0.0.4
sudo ip netns exec mc-cli1 ping -c 3 10.0.0.1
sudo ip netns exec mc-cli1 ping -c 3 10.0.0.2
sudo ip netns exec mc-cli1 ping -c 3 10.0.0.3
sudo ip netns exec mc-cli1 ping -c 3 10.0.0.4
sudo ip netns exec mc-cli2 ping -c 3 10.0.0.1
sudo ip netns exec mc-cli2 ping -c 3 10.0.0.2
sudo ip netns exec mc-cli2 ping -c 3 10.0.0.3
sudo ip netns exec mc-cli2 ping -c 3 10.0.0.4
echo 'OK!'
#!/bin/sh
set -ex
sudo ip netns exec mc-rtr ping6 -c 3 fd00::1
sudo ip netns exec mc-rtr ping6 -c 3 fd00::2
sudo ip netns exec mc-rtr ping6 -c 3 fd00::3
sudo ip netns exec mc-rtr ping6 -c 3 fd00::4
sudo ip netns exec mc-srv ping6 -c 3 fd00::1
sudo ip netns exec mc-srv ping6 -c 3 fd00::2
sudo ip netns exec mc-srv ping6 -c 3 fd00::3
sudo ip netns exec mc-srv ping6 -c 3 fd00::4
sudo ip netns exec mc-cli1 ping6 -c 3 fd00::1
sudo ip netns exec mc-cli1 ping6 -c 3 fd00::2
sudo ip netns exec mc-cli1 ping6 -c 3 fd00::3
sudo ip netns exec mc-cli1 ping6 -c 3 fd00::4
sudo ip netns exec mc-cli2 ping6 -c 3 fd00::1
sudo ip netns exec mc-cli2 ping6 -c 3 fd00::2
sudo ip netns exec mc-cli2 ping6 -c 3 fd00::3
sudo ip netns exec mc-cli2 ping6 -c 3 fd00::4
echo 'OK!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment