aboutsummaryrefslogtreecommitdiff
path: root/src/testing/netjail_start.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing/netjail_start.sh')
-rwxr-xr-xsrc/testing/netjail_start.sh70
1 files changed, 46 insertions, 24 deletions
diff --git a/src/testing/netjail_start.sh b/src/testing/netjail_start.sh
index 0984a3c42..1dfe1dfdf 100755
--- a/src/testing/netjail_start.sh
+++ b/src/testing/netjail_start.sh
@@ -1,52 +1,74 @@
1#!/bin/sh 1#!/bin/bash
2. "./../testing/netjail_core.sh" 2. "./../testing/netjail_core.sh"
3. "./../testing/topo.sh"
3 4
4set -eu 5set -eu
5set -x 6set -x
6 7
7export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 8export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8 9
9LOCAL_M=$1 10filename=$1
10GLOBAL_N=$2 11PREFIX=$2
11 12
12# TODO: stunserver? ..and globally known peer? 13read_topology $filename
13 14
14shift 2 15shift 2
15 16
16LOCAL_GROUP="192.168.15" 17LOCAL_GROUP="192.168.15"
17GLOBAL_GROUP="92.68.150" 18GLOBAL_GROUP="92.68.150"
19KNOWN_GROUP="92.68.151"
18 20
19NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
20 21
21netjail_bridge $NETWORK_NET 22echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16]"
22 23
23for N in $(seq $GLOBAL_N); do 24netjail_bridge
24 ROUTER=$(netjail_print_name "R" $N) 25NETWORK_NET=$RESULT
25 26
26 netjail_node $ROUTER 27for X in $(seq $KNOWN); do
27 netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 24 28 netjail_node
29 KNOWN_NODES[$X]=$RESULT
30 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16
31 KNOWN_LINKS[$X]=$RESULT
32done
28 33
29 ROUTER_NET=$(netjail_print_name "r" $N) 34declare -A NODES
35declare -A NODE_LINKS
30 36
31 netjail_bridge $ROUTER_NET 37for N in $(seq $GLOBAL_N); do
38 netjail_node
39 ROUTERS[$N]=$RESULT
40 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16
41 NETWORK_LINKS[$N]=$RESULT
42 netjail_bridge
43 ROUTER_NETS[$N]=$RESULT
32 44
33 for M in $(seq $LOCAL_M); do 45 for M in $(seq $LOCAL_M); do
34 NODE=$(netjail_print_name "N" $N $M) 46 netjail_node
35 47 NODES[$N,$M]=$RESULT
36 netjail_node $NODE 48 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24
37 netjail_node_link_bridge $NODE $ROUTER_NET "$LOCAL_GROUP.$M" 24 49 NODE_LINKS[$N,$M]=$RESULT
38 done 50 done
39 51
40 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))" 52 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
41 53 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24
42 netjail_node_link_bridge $ROUTER $ROUTER_NET $ROUTER_ADDR 24 54 ROUTER_LINKS[$N]=$RESULT
43 netjail_node_add_nat $ROUTER $ROUTER_ADDR 24 55
56 netjail_node_add_nat ${ROUTERS[$N]} $ROUTER_ADDR 24
44 57
45 for M in $(seq $LOCAL_M); do 58 for M in $(seq $LOCAL_M); do
46 NODE=$(netjail_print_name "N" $N $M) 59 netjail_node_add_default ${NODES[$N,$M]} $ROUTER_ADDR
47
48 netjail_node_add_default $NODE $ROUTER_ADDR
49 done 60 done
50done
51
52 61
62 # TODO Topology configuration must be enhanced to configure forwarding to more than one subnet node via different ports.
63
64 if [ "1" == "${R_TCP[$N]}" ]
65 then
66 ip netns exec ${ROUTERS[$N]} iptables -t nat -A PREROUTING -p tcp -d $GLOBAL_GROUP.$N --dport 60002 -j DNAT --to $LOCAL_GROUP.1
67 ip netns exec ${ROUTERS[$N]} iptables -A FORWARD -d $LOCAL_GROUP.1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
68 fi
69 if [ "1" == "${R_UDP[$N]}" ]
70 then
71 ip netns exec ${ROUTERS[$N]} iptables -t nat -A PREROUTING -p udp -d $GLOBAL_GROUP.$N --dport 60002 -j DNAT --to $LOCAL_GROUP.1
72 ip netns exec ${ROUTERS[$N]} iptables -A FORWARD -d $LOCAL_GROUP.1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
73 fi
74done