diff options
Diffstat (limited to 'src/testing/netjail_start.sh')
-rwxr-xr-x | src/testing/netjail_start.sh | 70 |
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 | ||
4 | set -eu | 5 | set -eu |
5 | set -x | 6 | set -x |
6 | 7 | ||
7 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | 8 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" |
8 | 9 | ||
9 | LOCAL_M=$1 | 10 | filename=$1 |
10 | GLOBAL_N=$2 | 11 | PREFIX=$2 |
11 | 12 | ||
12 | # TODO: stunserver? ..and globally known peer? | 13 | read_topology $filename |
13 | 14 | ||
14 | shift 2 | 15 | shift 2 |
15 | 16 | ||
16 | LOCAL_GROUP="192.168.15" | 17 | LOCAL_GROUP="192.168.15" |
17 | GLOBAL_GROUP="92.68.150" | 18 | GLOBAL_GROUP="92.68.150" |
19 | KNOWN_GROUP="92.68.151" | ||
18 | 20 | ||
19 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) | ||
20 | 21 | ||
21 | netjail_bridge $NETWORK_NET | 22 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16]" |
22 | 23 | ||
23 | for N in $(seq $GLOBAL_N); do | 24 | netjail_bridge |
24 | ROUTER=$(netjail_print_name "R" $N) | 25 | NETWORK_NET=$RESULT |
25 | 26 | ||
26 | netjail_node $ROUTER | 27 | for 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 | ||
32 | done | ||
28 | 33 | ||
29 | ROUTER_NET=$(netjail_print_name "r" $N) | 34 | declare -A NODES |
35 | declare -A NODE_LINKS | ||
30 | 36 | ||
31 | netjail_bridge $ROUTER_NET | 37 | for 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 |
50 | done | ||
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 | ||
74 | done | ||