aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authort3sserakt <t3ss@posteo.de>2023-01-27 13:02:44 +0100
committert3sserakt <t3ss@posteo.de>2023-01-27 13:02:44 +0100
commita21cb18203056306fa08ecbcaf4100a6c94cc4d9 (patch)
tree5dd194edc938c7b8e2b2c508824e0d1dd71d1bce
parent6de2cb8f7a78d9bf1132100f51c19a6a1cb223c5 (diff)
downloadgnunet-a21cb18203056306fa08ecbcaf4100a6c94cc4d9.tar.gz
gnunet-a21cb18203056306fa08ecbcaf4100a6c94cc4d9.zip
TNG: Added code in the netjail scripts to enable router nodes to forward icmp requests
and response.
-rwxr-xr-xcontrib/netjail/netjail_core.sh14
-rwxr-xr-xcontrib/netjail/netjail_start.sh34
2 files changed, 39 insertions, 9 deletions
diff --git a/contrib/netjail/netjail_core.sh b/contrib/netjail/netjail_core.sh
index 302ae922f..cb2a271b8 100755
--- a/contrib/netjail/netjail_core.sh
+++ b/contrib/netjail/netjail_core.sh
@@ -145,12 +145,12 @@ netjail_node_link_bridge() {
145 local BRIDGE=$2 145 local BRIDGE=$2
146 local ADDRESS=$3 146 local ADDRESS=$3
147 local MASK=$4 147 local MASK=$4
148 148
149 netjail_next_interface 149 netjail_next_interface
150 local NUM_IF=$RESULT 150 local NUM_IF=$RESULT
151 netjail_next_interface 151 netjail_next_interface
152 local NUM_BR=$RESULT 152 local NUM_BR=$RESULT
153 153
154 local LINK_IF=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_IF) 154 local LINK_IF=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_IF)
155 local LINK_BR=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_BR) 155 local LINK_BR=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_BR)
156 156
@@ -163,18 +163,18 @@ netjail_node_link_bridge() {
163 ip -n $NODE link set up dev lo 163 ip -n $NODE link set up dev lo
164 164
165 ip link set $LINK_BR up 165 ip link set $LINK_BR up
166 166
167 RESULT=$LINK_BR 167 RESULT=$LINK_IF
168} 168}
169 169
170netjail_node_link_bridge_name() { 170netjail_node_link_bridge_name() {
171 171
172 netjail_next_interface 172 netjail_next_interface
173 netjail_next_interface 173 netjail_next_interface
174 local NUM_BR=$RESULT 174 local NUM_BR=$RESULT
175 175
176 local LINK_BR=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_BR) 176 local LINK_BR=$(printf $INTERFACE_FORMAT_STRING $PREPREFIX $PREFIX $NUM_BR)
177 177
178 RESULT=$LINK_BR 178 RESULT=$LINK_BR
179} 179}
180 180
diff --git a/contrib/netjail/netjail_start.sh b/contrib/netjail/netjail_start.sh
index e68745746..35e51abb4 100755
--- a/contrib/netjail/netjail_start.sh
+++ b/contrib/netjail/netjail_start.sh
@@ -52,6 +52,13 @@ for X in $(seq $KNOWN); do
52 KNOWN_NODES[$X]=$RESULT 52 KNOWN_NODES[$X]=$RESULT
53 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16 53 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16
54 KNOWN_LINKS[$X]=$RESULT 54 KNOWN_LINKS[$X]=$RESULT
55
56 # Execute echo 1 > /proc/sys/net/netfilter/nf_log_all_netns to make itables log to the host.
57 #ip netns exec ${KNOWN_NODES[$X]} iptables -A INPUT -j LOG --log-prefix '** Known ${KNOWN_NODES[$X]} **'
58 #ip netns exec ${KNOWN_NODES[$X]} iptables -A OUTPUT -j LOG --log-prefix '** Known ${KNOWN_NODES[$X]} **'
59 ip netns exec ${KNOWN_NODES[$X]} iptables -A OUTPUT -p icmp -j ACCEPT
60 ip netns exec ${KNOWN_NODES[$X]} iptables -A INPUT -p icmp -j ACCEPT
61
55done 62done
56 63
57declare -A NODES 64declare -A NODES
@@ -61,18 +68,36 @@ for N in $(seq $GLOBAL_N); do
61 netjail_node 68 netjail_node
62 ROUTERS[$N]=$RESULT 69 ROUTERS[$N]=$RESULT
63 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16 70 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16
64 NETWORK_LINKS[$N]=$RESULT 71 ROUTER_EXT_IF[$N]=$RESULT
65 netjail_bridge 72 netjail_bridge
66 ROUTER_NETS[$N]=$RESULT 73 ROUTER_NETS[$N]=$RESULT
67 74
75 #ip netns exec ${ROUTERS[$N]} iptables -A INPUT -j LOG --log-prefix '** Router ${ROUTERS[$N]} **'
76 ip netns exec ${ROUTERS[$N]} iptables -A INPUT -p icmp -j ACCEPT
77 ip netns exec ${ROUTERS[$N]} iptables -t nat -A PREROUTING -p icmp -d $GLOBAL_GROUP.$N -j DNAT --to $LOCAL_GROUP.1
78 ip netns exec ${ROUTERS[$N]} iptables -A FORWARD -p icmp -d $LOCAL_GROUP.1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
79 #ip netns exec ${ROUTERS[$N]} iptables -A OUTPUT -j LOG --log-prefix '** Router ${ROUTERS[$N]} **'
80 ip netns exec ${ROUTERS[$N]} iptables -A OUTPUT -p icmp -j ACCEPT
81
68 for M in $(seq $LOCAL_M); do 82 for M in $(seq $LOCAL_M); do
69 netjail_node 83 netjail_node
70 NODES[$N,$M]=$RESULT 84 NODES[$N,$M]=$RESULT
71 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24 85 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24
72 NODE_LINKS[$N,$M]=$RESULT 86 NODE_LINKS[$N,$M]=$RESULT
87
88 #ip netns exec ${NODES[$N,$M]} iptables -A INPUT -j LOG --log-prefix '** Node ${NODES[$N,$M]} **'
89 #ip netns exec ${NODES[$N,$M]} iptables -A OUTPUT -j LOG --log-prefix '** Node ${NODES[$N,$M]} **'
90 ip netns exec ${NODES[$N,$M]} iptables -A OUTPUT -p icmp -j ACCEPT
91 ip netns exec ${NODES[$N,$M]} iptables -A INPUT -p icmp -j ACCEPT
73 done 92 done
74 93
75 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))" 94 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
95
96 let X=$KNOWN+1
97 ip netns exec ${ROUTERS[$N]} ip route add "$KNOWN_GROUP.$X" dev ${ROUTER_EXT_IF[$N]}
98 ip netns exec ${ROUTERS[$N]} ip route add default via "$KNOWN_GROUP.$X"
99
100
76 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24 101 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24
77 ROUTER_LINKS[$N]=$RESULT 102 ROUTER_LINKS[$N]=$RESULT
78 103
@@ -135,3 +160,8 @@ for N in $(seq $GLOBAL_N); do
135 ip netns exec ${ROUTERS[$N]} ./${R_SCRIPT[$N]} ${ROUTER_NETS[$N]} 1 160 ip netns exec ${ROUTERS[$N]} ./${R_SCRIPT[$N]} ${ROUTER_NETS[$N]} 1
136 fi 161 fi
137done 162done
163
164# We like to have a node acting as a gateway for all router nodes. This is especially needed for sending fake ICMP packets.
165netjail_node
166GATEWAY=$RESULT
167netjail_node_link_bridge $GATEWAY $NETWORK_NET "$KNOWN_GROUP.$X" 16