-
-
Save brunoperezm/b9a07852ba3b6e6a4649eb871fa8519b to your computer and use it in GitHub Desktop.
IPv6 Linux Namespaces
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
TODO: cambiar el ipv6 del router port forwarding