diff --git a/scripts/r2_r3_bridge.sh b/scripts/r2_r3_bridge.sh new file mode 100755 index 0000000000000000000000000000000000000000..85ef996d95cfd93355b246b0267d20d2178294aa --- /dev/null +++ b/scripts/r2_r3_bridge.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +echo "======= R1: Creating ns2 and ns3 namespaces =======" +ssh R1 ip netns add ns2 +ssh R1 ip netns add ns3 + +echo "======= R2: Activating IP forwarding =======" +ssh R1 ip netns exec ns2 sysctl net.ipv4.ip_forward=1 + +echo "======= R3: Activating IP forwarding =======" +ssh R1 ip netns exec ns3 sysctl net.ipv4.ip_forward=1 + +echo "======= R1: Creating veth pair (for default-veth1 and ns3-veth1) for ns-default and ns3 =======" +ssh R1 ip link add default-veth1 type veth peer name ns3-veth1 netns ns3 + +echo "======= R1: Creating veth pair (for ns3-veth0 and ns2-veth1) for ns3 and ns2 =======" +ssh R1 ip link add ns3-veth0 type veth peer name ns2-veth1 netns ns2 +ssh R1 ip link set ns3-veth0 netns ns3 + +echo "======= R1: Creating veth pair (for default-veth0 and ns3-veth0) for ns-default and ns2 =======" +ssh R1 ip link add default-veth0 type veth peer name ns2-veth0 netns ns2 + +echo "======= R1: Creating and upping br1 bridge =======" +ssh R1 ip link add name br1 type bridge +ssh R1 ip link set dev br1 up + +echo "======= R1: Connecting and upping default-veth1 to br1 =======" +ssh R1 ip link set default-veth1 master br1 +ssh R1 ip link set dev default-veth1 up + +echo "======= R1: Connecting and upping eth1 to br1 =======" +ssh R1 ip link set eth1 master br1 +ssh R1 ip link set dev eth1 up + +echo "======= R1: Creating and upping br0 bridge =======" +ssh R1 ip link add name br0 type bridge +ssh R1 ip link set dev br0 up + +echo "======= R1: Connecting and upping default-veth0 to br0 =======" +ssh R1 ip link set default-veth0 master br0 +ssh R1 ip link set dev default-veth0 up + +echo "======= R1: Connecting and upping eth0 to br0 =======" +ssh R1 ip link set eth0 master br0 +ssh R1 ip link set dev eth0 up + +echo "======= R3: Upping the veths in ns3 =======" +ssh R1 ip netns exec ns3 ip link set dev ns3-veth0 up +ssh R1 ip netns exec ns3 ip link set dev ns3-veth1 up + +echo "======= R2: Upping the veths in ns2 =======" +ssh R1 ip netns exec ns2 ip link set dev ns2-veth0 up +ssh R1 ip netns exec ns2 ip link set dev ns2-veth1 up + +echo "======= R2: Obtaining IP for ns2-veth0 via DHCP =======" +ssh R1 ip netns exec ns2 dhclient -v ns2-veth0 + +echo "======= R3: Configuring static 10.0.0.2 IP for ns3-veth1 =======" +ssh R1 ip netns exec ns3 ip addr add 10.0.0.2/24 dev ns3-veth1 + +echo "======= R3: Configuring static 192.168.0.1 IP for ns3-veth0 =======" +ssh R1 ip netns exec ns3 ip addr add 192.168.0.1/24 dev ns3-veth0 + +echo "======= R2: Configuring static 192.168.0.2 IP for ns2-veth1 =======" +ssh R1 ip netns exec ns2 ip addr add 192.168.0.2/24 dev ns2-veth1 + +echo "======= R3: Setting up default route =======" +ssh R1 ip netns exec ns3 ip r add default via 192.168.0.2 dev ns3-veth0 + +echo "======= R2: Setting up route for 10.0.0.0/24 via 192.168.0.1 =======" +ssh R1 ip netns exec ns2 ip route add 10.0.0.0/24 via 192.168.0.1 dev ns2-veth1 + +echo "======= R2: Implementing NAT inside ns2 ======" +scp ./r2_nat.ruleset root@R1:/root +ssh R1 ip netns exec ns2 nft -f ./r2_nat.ruleset + +echo "======= H1: Setting up static 10.0.0.1/24 IP for eth0 =======" +ssh H1 ip addr add 10.0.0.1/24 dev eth0 +ssh H1 ip link set dev eth0 up + +echo "======= H1: Setting default route via R1 (i.e. 10.0.0.2) =======" +ssh H1 ip route add default via 10.0.0.2