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