Skip to content

Instantly share code, notes, and snippets.

@brunoperezm
Forked from natitomattis/setup.sh
Last active April 2, 2020 20:38
Show Gist options
  • Save brunoperezm/b9a07852ba3b6e6a4649eb871fa8519b to your computer and use it in GitHub Desktop.
Save brunoperezm/b9a07852ba3b6e6a4649eb871fa8519b to your computer and use it in GitHub Desktop.
IPv6 Linux Namespaces
# Install utils
apt install bridge-utils radvd
# Create config files
tee -a /etc/radvd.conf <<EOF
interface vpeer-router {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix 2001::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
interface veth3 {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix 2002::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
EOF
# Create DHCP server
tee -a /etc/dhcp/dhcpd.conf <<EOF
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.30;
option routers 192.168.2.12;
}
EOF
# Create resources
ip netns add h1
ip netns add h2
ip netns add h3
ip netns add dhcp
ip netns add r1
ip link add name veth1 type veth peer name vpeer1
ip link add name veth2 type veth peer name vpeer2
ip link add name veth3 type veth peer name vpeer3
ip link add name veth-dhcp type veth peer name vpeer-dhcp
ip link add name veth-router type veth peer name vpeer-router
brctl addbr sw1
# Set peer link up
ip link set veth1 up
ip link set veth2 up
ip link set veth3 up
ip link set veth-dhcp up
ip link set veth-router up
ip link set sw1 up
# Assign interfaces to namespaces
ip link set dev vpeer1 netns h1
ip link set dev vpeer2 netns h2
ip link set dev vpeer3 netns h3
ip link set dev vpeer-dhcp netns dhcp
ip link set dev vpeer-router netns r1
ip link set dev veth3 netns r1
# Connect veth to bridge
brctl addif sw1 veth1
brctl addif sw1 veth2
brctl addif sw1 veth-dhcp
brctl addif sw1 veth-router
# Configure router as router
ip netns exec r1 sysctl -w net.ipv4.conf.all.forwarding=1
# Configure IP addresses
ip netns exec r1 ip addr add 192.168.2.12/24 dev vpeer-router
ip netns exec r1 ip addr add 192.168.1.11/24 dev veth3
ip netns exec h3 ip addr add 192.168.1.10/24 dev vpeer3
ip netns exec h3 route add default gw 192.168.1.11
ip netns exec dhcp ip addr add 192.168.2.15/24 dev vpeer-dhcp
# Set Up interfaces
ip netns exec h1 ip link set lo up
ip netns exec h2 ip link set lo up
ip netns exec h3 ip link set lo up
ip netns exec dhcp ip link set lo up
ip netns exec r1 ip link set lo up
ip netns exec h1 ip link set vpeer1 up
ip netns exec h2 ip link set vpeer2 up
ip netns exec h3 ip link set vpeer3 up
ip netns exec dhcp ip link set vpeer-dhcp up
ip netns exec r1 ip link set veth3 up
ip netns exec r1 ip link set vpeer-router up
sudo ip netns exec dhcp dnsmasq --dhcp-range=192.168.2.20,192.168.2.30,255.255.255.0 --interface=vpeer-dhcp --no-daemon --dhcp-option=option:router,192.168.2.12
sudo ip netns exec h2 dhclient -d
sudo ip netns exec h2 ping 192.168.1.10
# Init router advertisement daemon
ip netns exec r1 radvd -n
#Clear environment
ip netns delete h1
ip netns delete h2
ip netns delete h3
ip netns delete r1
ip netns delete dhcp
ip link delete veth-router
ip link delete veth1
ip link delete veth2
ip link delete veth3
ip link delete veth-dhcp
ip link set sw1 down
brctl delbr sw1
rm /etc/radvd.conf
@brunoperezm
Copy link
Author

TODO: cambiar el ipv6 del router port forwarding

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment