summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2020-01-12 04:10:38 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-12 04:41:59 -0500
commitf71f6139f4401474166a41b8918df7e29318c405 (patch)
treebdac89df06a3202a22013d7612dbf27331ad2f9d
parenta7cc1e718b87240ef83e2c4abfd4f2efdd6a7e87 (diff)
Scripts to run a toxcore DHT network on localhost.
-rw-r--r--dht/vnet/README.vnet.md2
-rwxr-xr-xdht/vnet/build.sh4
-rwxr-xr-xdht/vnet/core-build.sh183
-rwxr-xr-xdht/vnet/core-clean.sh46
-rwxr-xr-xdht/vnet/core-run.sh49
-rwxr-xr-xdht/vnet/core-screen-shell.sh58
-rwxr-xr-xdht/vnet/run.sh2
7 files changed, 342 insertions, 2 deletions
diff --git a/dht/vnet/README.vnet.md b/dht/vnet/README.vnet.md
index caa84057..9bceb221 100644
--- a/dht/vnet/README.vnet.md
+++ b/dht/vnet/README.vnet.md
@@ -65,6 +65,8 @@ environments. The following man pages are relevant:
65 man 2 clone 65 man 2 clone
66 man 8 iptables 66 man 8 iptables
67 man 7 cgroups 67 man 7 cgroups
68 man 7 network_namespaces
69 man 1 nsenter
68 70
69We need to bootstrap an instance of dhtd off of our test network and also an 71We need to bootstrap an instance of dhtd off of our test network and also an
70instance of uTox (or some other toxcore-based client) and get them to build a 72instance of uTox (or some other toxcore-based client) and get them to build a
diff --git a/dht/vnet/build.sh b/dht/vnet/build.sh
index 5354969a..7f7787f0 100755
--- a/dht/vnet/build.sh
+++ b/dht/vnet/build.sh
@@ -72,7 +72,9 @@ buildtaps() {
72 72
73buildtaps 73buildtaps
74 74
75num=$(ip addr show wlan0 | sed -n '/\s\+inet 192/ s/\s\+inet 192\.168\.[0-9]*\.\([0-9]*\).*$/\1/ p') 75iface=$(ip route | awk '/^default/{ if ($4 == "dev") print($5); }')
76iface=${iface:-wlan0}
77num=$(ip addr show $iface | sed -n '/\s\+inet 192/ s/\s\+inet 192\.168\.[0-9]*\.\([0-9]*\).*$/\1/ p')
76num=${num:-88} 78num=${num:-88}
77 79
78ip addr add 80.$num.99.99 dev ep0 80ip addr add 80.$num.99.99 dev ep0
diff --git a/dht/vnet/core-build.sh b/dht/vnet/core-build.sh
new file mode 100755
index 00000000..1b8f3d8a
--- /dev/null
+++ b/dht/vnet/core-build.sh
@@ -0,0 +1,183 @@
1#!/bin/sh
2
3set -x
4
5buildveths() {
6 ip link add ve0 type veth peer name vep0
7 ip link add ve1 type veth peer name vep1
8 ip link add ve2 type veth peer name vep2
9 ip link add ve3 type veth peer name vep3
10 ip link add ve4 type veth peer name vep4
11 ip link add ve5 type veth peer name vep5
12 ip link add ve6 type veth peer name vep6
13 ip link add ve7 type veth peer name vep7
14 ip link add ve8 type veth peer name vep8
15 ip link add ve9 type veth peer name vep9
16 ip link add veA type veth peer name vepA
17 ip link add veB type veth peer name vepB
18 ip link add veC type veth peer name vepC
19 ip link add veD type veth peer name vepD
20 ip link add veE type veth peer name vepE
21 ip link add veF type veth peer name vepF
22
23 ip netns add vep0; ip link set vep0 netns vep0
24 ip netns add vep1; ip link set vep1 netns vep1
25 ip netns add vep2; ip link set vep2 netns vep2
26 ip netns add vep3; ip link set vep3 netns vep3
27 ip netns add vep4; ip link set vep4 netns vep4
28 ip netns add vep5; ip link set vep5 netns vep5
29 ip netns add vep6; ip link set vep6 netns vep6
30 ip netns add vep7; ip link set vep7 netns vep7
31 ip netns add vep8; ip link set vep8 netns vep8
32 ip netns add vep9; ip link set vep9 netns vep9
33 ip netns add vepA; ip link set vepA netns vepA
34 ip netns add vepB; ip link set vepB netns vepB
35 ip netns add vepC; ip link set vepC netns vepC
36 ip netns add vepD; ip link set vepD netns vepD
37 ip netns add vepE; ip link set vepE netns vepE
38 ip netns add vepF; ip link set vepF netns vepF
39}
40
41buildveths
42
43iface=$(ip route | awk '/^default/{ if ($4 == "dev") print($5); }')
44iface=${iface:-wlan0}
45num=$(ip addr show $iface | sed -n '/\s\+inet 192/ s/\s\+inet 192\.168\.[0-9]*\.\([0-9]*\).*$/\1/ p')
46num=${num:-88}
47
48ip addr add 60.$num.99.98/31 dev ve0
49ip addr add 61.$num.99.98/31 dev ve1
50ip addr add 62.$num.99.98/31 dev ve2
51ip addr add 63.$num.99.98/31 dev ve3
52ip addr add 64.$num.99.98/31 dev ve4
53ip addr add 65.$num.99.98/31 dev ve5
54ip addr add 66.$num.99.98/31 dev ve6
55ip addr add 67.$num.99.98/31 dev ve7
56ip addr add 68.$num.99.98/31 dev ve8
57ip addr add 69.$num.99.98/31 dev ve9
58ip addr add 70.$num.99.98/31 dev veA
59ip addr add 71.$num.99.98/31 dev veB
60ip addr add 72.$num.99.98/31 dev veC
61ip addr add 73.$num.99.98/31 dev veD
62ip addr add 74.$num.99.98/31 dev veE
63ip addr add 75.$num.99.98/31 dev veF
64
65ip link set up dev ve0
66ip link set up dev ve1
67ip link set up dev ve2
68ip link set up dev ve3
69ip link set up dev ve4
70ip link set up dev ve5
71ip link set up dev ve6
72ip link set up dev ve7
73ip link set up dev ve8
74ip link set up dev ve9
75ip link set up dev veA
76ip link set up dev veB
77ip link set up dev veC
78ip link set up dev veD
79ip link set up dev veE
80ip link set up dev veF
81
82
83nsenter --net=/var/run/netns/vep0 ip addr add 60.$num.99.99/31 dev vep0
84nsenter --net=/var/run/netns/vep1 ip addr add 61.$num.99.99/31 dev vep1
85nsenter --net=/var/run/netns/vep2 ip addr add 62.$num.99.99/31 dev vep2
86nsenter --net=/var/run/netns/vep3 ip addr add 63.$num.99.99/31 dev vep3
87nsenter --net=/var/run/netns/vep4 ip addr add 64.$num.99.99/31 dev vep4
88nsenter --net=/var/run/netns/vep5 ip addr add 65.$num.99.99/31 dev vep5
89nsenter --net=/var/run/netns/vep6 ip addr add 66.$num.99.99/31 dev vep6
90nsenter --net=/var/run/netns/vep7 ip addr add 67.$num.99.99/31 dev vep7
91nsenter --net=/var/run/netns/vep8 ip addr add 68.$num.99.99/31 dev vep8
92nsenter --net=/var/run/netns/vep9 ip addr add 69.$num.99.99/31 dev vep9
93nsenter --net=/var/run/netns/vepA ip addr add 70.$num.99.99/31 dev vepA
94nsenter --net=/var/run/netns/vepB ip addr add 71.$num.99.99/31 dev vepB
95nsenter --net=/var/run/netns/vepC ip addr add 72.$num.99.99/31 dev vepC
96nsenter --net=/var/run/netns/vepD ip addr add 73.$num.99.99/31 dev vepD
97nsenter --net=/var/run/netns/vepE ip addr add 74.$num.99.99/31 dev vepE
98nsenter --net=/var/run/netns/vepF ip addr add 75.$num.99.99/31 dev vepF
99
100nsenter --net=/var/run/netns/vep0 ip link set up dev vep0
101nsenter --net=/var/run/netns/vep1 ip link set up dev vep1
102nsenter --net=/var/run/netns/vep2 ip link set up dev vep2
103nsenter --net=/var/run/netns/vep3 ip link set up dev vep3
104nsenter --net=/var/run/netns/vep4 ip link set up dev vep4
105nsenter --net=/var/run/netns/vep5 ip link set up dev vep5
106nsenter --net=/var/run/netns/vep6 ip link set up dev vep6
107nsenter --net=/var/run/netns/vep7 ip link set up dev vep7
108nsenter --net=/var/run/netns/vep8 ip link set up dev vep8
109nsenter --net=/var/run/netns/vep9 ip link set up dev vep9
110nsenter --net=/var/run/netns/vepA ip link set up dev vepA
111nsenter --net=/var/run/netns/vepB ip link set up dev vepB
112nsenter --net=/var/run/netns/vepC ip link set up dev vepC
113nsenter --net=/var/run/netns/vepD ip link set up dev vepD
114nsenter --net=/var/run/netns/vepE ip link set up dev vepE
115nsenter --net=/var/run/netns/vepF ip link set up dev vepF
116
117nsenter --net=/var/run/netns/vep0 ip route add default via 60.$num.99.98
118nsenter --net=/var/run/netns/vep1 ip route add default via 61.$num.99.98
119nsenter --net=/var/run/netns/vep2 ip route add default via 62.$num.99.98
120nsenter --net=/var/run/netns/vep3 ip route add default via 63.$num.99.98
121nsenter --net=/var/run/netns/vep4 ip route add default via 64.$num.99.98
122nsenter --net=/var/run/netns/vep5 ip route add default via 65.$num.99.98
123nsenter --net=/var/run/netns/vep6 ip route add default via 66.$num.99.98
124nsenter --net=/var/run/netns/vep7 ip route add default via 67.$num.99.98
125nsenter --net=/var/run/netns/vep8 ip route add default via 68.$num.99.98
126nsenter --net=/var/run/netns/vep9 ip route add default via 69.$num.99.98
127nsenter --net=/var/run/netns/vepA ip route add default via 70.$num.99.98
128nsenter --net=/var/run/netns/vepB ip route add default via 71.$num.99.98
129nsenter --net=/var/run/netns/vepC ip route add default via 72.$num.99.98
130nsenter --net=/var/run/netns/vepD ip route add default via 73.$num.99.98
131nsenter --net=/var/run/netns/vepE ip route add default via 74.$num.99.98
132nsenter --net=/var/run/netns/vepF ip route add default via 75.$num.99.98
133
134nsenter --net=/var/run/netns/vep0 ip addr add 127.0.0.1/8 dev lo
135nsenter --net=/var/run/netns/vep1 ip addr add 127.0.0.1/8 dev lo
136nsenter --net=/var/run/netns/vep2 ip addr add 127.0.0.1/8 dev lo
137nsenter --net=/var/run/netns/vep3 ip addr add 127.0.0.1/8 dev lo
138nsenter --net=/var/run/netns/vep4 ip addr add 127.0.0.1/8 dev lo
139nsenter --net=/var/run/netns/vep5 ip addr add 127.0.0.1/8 dev lo
140nsenter --net=/var/run/netns/vep6 ip addr add 127.0.0.1/8 dev lo
141nsenter --net=/var/run/netns/vep7 ip addr add 127.0.0.1/8 dev lo
142nsenter --net=/var/run/netns/vep8 ip addr add 127.0.0.1/8 dev lo
143nsenter --net=/var/run/netns/vep9 ip addr add 127.0.0.1/8 dev lo
144nsenter --net=/var/run/netns/vepA ip addr add 127.0.0.1/8 dev lo
145nsenter --net=/var/run/netns/vepB ip addr add 127.0.0.1/8 dev lo
146nsenter --net=/var/run/netns/vepC ip addr add 127.0.0.1/8 dev lo
147nsenter --net=/var/run/netns/vepD ip addr add 127.0.0.1/8 dev lo
148nsenter --net=/var/run/netns/vepE ip addr add 127.0.0.1/8 dev lo
149nsenter --net=/var/run/netns/vepF ip addr add 127.0.0.1/8 dev lo
150
151nsenter --net=/var/run/netns/vep0 ip addr add ::1/128 dev lo
152nsenter --net=/var/run/netns/vep1 ip addr add ::1/128 dev lo
153nsenter --net=/var/run/netns/vep2 ip addr add ::1/128 dev lo
154nsenter --net=/var/run/netns/vep3 ip addr add ::1/128 dev lo
155nsenter --net=/var/run/netns/vep4 ip addr add ::1/128 dev lo
156nsenter --net=/var/run/netns/vep5 ip addr add ::1/128 dev lo
157nsenter --net=/var/run/netns/vep6 ip addr add ::1/128 dev lo
158nsenter --net=/var/run/netns/vep7 ip addr add ::1/128 dev lo
159nsenter --net=/var/run/netns/vep8 ip addr add ::1/128 dev lo
160nsenter --net=/var/run/netns/vep9 ip addr add ::1/128 dev lo
161nsenter --net=/var/run/netns/vepA ip addr add ::1/128 dev lo
162nsenter --net=/var/run/netns/vepB ip addr add ::1/128 dev lo
163nsenter --net=/var/run/netns/vepC ip addr add ::1/128 dev lo
164nsenter --net=/var/run/netns/vepD ip addr add ::1/128 dev lo
165nsenter --net=/var/run/netns/vepE ip addr add ::1/128 dev lo
166nsenter --net=/var/run/netns/vepF ip addr add ::1/128 dev lo
167
168nsenter --net=/var/run/netns/vep0 ip link set up dev lo
169nsenter --net=/var/run/netns/vep1 ip link set up dev lo
170nsenter --net=/var/run/netns/vep2 ip link set up dev lo
171nsenter --net=/var/run/netns/vep3 ip link set up dev lo
172nsenter --net=/var/run/netns/vep4 ip link set up dev lo
173nsenter --net=/var/run/netns/vep5 ip link set up dev lo
174nsenter --net=/var/run/netns/vep6 ip link set up dev lo
175nsenter --net=/var/run/netns/vep7 ip link set up dev lo
176nsenter --net=/var/run/netns/vep8 ip link set up dev lo
177nsenter --net=/var/run/netns/vep9 ip link set up dev lo
178nsenter --net=/var/run/netns/vepA ip link set up dev lo
179nsenter --net=/var/run/netns/vepB ip link set up dev lo
180nsenter --net=/var/run/netns/vepC ip link set up dev lo
181nsenter --net=/var/run/netns/vepD ip link set up dev lo
182nsenter --net=/var/run/netns/vepE ip link set up dev lo
183nsenter --net=/var/run/netns/vepF ip link set up dev lo
diff --git a/dht/vnet/core-clean.sh b/dht/vnet/core-clean.sh
new file mode 100755
index 00000000..e905c61a
--- /dev/null
+++ b/dht/vnet/core-clean.sh
@@ -0,0 +1,46 @@
1#!/bin/sh
2
3cleanveths()
4{
5 ip link del ve0
6 ip link del ve1
7 ip link del ve2
8 ip link del ve3
9 ip link del ve4
10 ip link del ve5
11 ip link del ve6
12 ip link del ve7
13
14 ip link del ve8
15 ip link del ve9
16 ip link del veA
17 ip link del veB
18 ip link del veC
19 ip link del veD
20 ip link del veE
21 ip link del veF
22}
23
24set -x
25
26cleanveths
27
28rm -rf ve0 ve1 ve2 ve3 ve4 ve5 ve6 ve7 \
29 ve8 ve9 veA veB veC veD veE veF
30
31ip netns del vep0
32ip netns del vep1
33ip netns del vep2
34ip netns del vep3
35ip netns del vep4
36ip netns del vep5
37ip netns del vep6
38ip netns del vep7
39ip netns del vep8
40ip netns del vep9
41ip netns del vepA
42ip netns del vepB
43ip netns del vepC
44ip netns del vepD
45ip netns del vepE
46ip netns del vepF
diff --git a/dht/vnet/core-run.sh b/dht/vnet/core-run.sh
new file mode 100755
index 00000000..b2db5354
--- /dev/null
+++ b/dht/vnet/core-run.sh
@@ -0,0 +1,49 @@
1#!/bin/sh
2
3[ -L ./DHT_bootstrap ] || { echo "Missing symbolic link to DHT_bootstrap." ; exit 1 ; }
4
5rm -rf ve0 ve1 ve2 ve3 ve4 ve5 ve6 ve7 ve8 ve9 veA veB veC veD veE veF
6echo nobody > core-user
7user=$(cat core-user)
8mkdir -p ve0 ve1 ve2 ve3 ve4 ve5 ve6 ve7 ve8 ve9 veA veB veC veD veE veF
9chown $user ve0 ve1 ve2 ve3 ve4 ve5 ve6 ve7 ve8 ve9 veA veB veC veD veE veF
10
11rm -f core-count
12echo detach > core-detached
13
14set -x
15
16screen -S core-test -s ./core-screen-shell.sh -c core-detached
17sleep 3
18screen -S core-test -X screen
19sleep 0.5
20screen -S core-test -X screen
21sleep 0.5
22screen -S core-test -X screen
23sleep 0.5
24
25screen -S core-test -X screen
26sleep 0.5
27screen -S core-test -X screen
28sleep 0.5
29screen -S core-test -X screen
30sleep 0.5
31screen -S core-test -X screen
32sleep 0.5
33
34screen -S core-test -X screen
35sleep 0.5
36screen -S core-test -X screen
37sleep 0.5
38screen -S core-test -X screen
39sleep 0.5
40screen -S core-test -X screen
41sleep 0.5
42
43screen -S core-test -X screen
44sleep 0.5
45screen -S core-test -X screen
46sleep 0.5
47screen -S core-test -X screen
48sleep 0.5
49screen -S core-test -X screen
diff --git a/dht/vnet/core-screen-shell.sh b/dht/vnet/core-screen-shell.sh
new file mode 100755
index 00000000..012c8540
--- /dev/null
+++ b/dht/vnet/core-screen-shell.sh
@@ -0,0 +1,58 @@
1#!/bin/bash
2digit=$1
3[ -z "$digit" ] && {
4 touch core-count
5 count=$(cat core-count)
6 count=${count:-(-1)}
7 count=$(( $count + 1 ))
8 echo $count > core-count
9 digit=$(printf '%X' $count)
10 user=$(cat core-user)
11 (
12 cd ve$digit
13 port=$(( 33400 + $count ))
14 echo nsenter --net=/var/run/netns/vep$digit chpst -u $user ../$0 $digit $port > cmd0
15 exec nsenter --net=/var/run/netns/vep$digit chpst -u $user ../$0 $digit $port
16 exit 1
17 )
18}
19port=$2
20
21addr=$(ip -o address show dev vep$digit | sed -n 's#.* inet \([^ /]*\).*#\1#p')
22echo $addr
23pwd
24whoami
25# Usage (connected) : ./DHT_bootstrap [--ipv4|--ipv6] IP PORT KEY
26# Usage (unconnected): ./DHT_bootstrap [--ipv4|--ipv6]
27
28if [ "$digit" = 0 ]
29then
30 echo $$ > pid
31 echo ../DHT_bootstrap > cmd.txt
32 echo $addr > addr.txt
33 {
34 sleep 0.5
35 echo IP: $addr >> PUBLIC_ID.txt
36 } &
37 exec ../DHT_bootstrap
38else
39 vars='{
40 if( boot_key == "" ) { boot_key=$0 ; print("boot_key=" boot_key) }
41 else if( $1 == "Port:" ) print("boot_port=" $2);
42 else if( $1 == "IP:" ) print("boot_ip=" $2);
43 }'
44 boot_ip=
45 boot_port=
46 boot_key=
47 awk "$vars" ../ve0/PUBLIC_ID.txt > vars.txt 2>&1
48 . vars.txt
49 echo ../DHT_bootstrap $boot_ip $boot_port $boot_key > cmd.txt
50 echo $$ > pid
51 echo $addr > addr.txt
52 {
53 sleep 0.5
54 echo IP: $addr >> PUBLIC_ID.txt
55 } &
56 exec ../DHT_bootstrap $boot_ip $boot_port $boot_key
57fi
58sleep 30
diff --git a/dht/vnet/run.sh b/dht/vnet/run.sh
index 0189b6b7..16854026 100755
--- a/dht/vnet/run.sh
+++ b/dht/vnet/run.sh
@@ -1,6 +1,6 @@
1#!/bin/sh 1#!/bin/sh
2 2
3[ -L ./dhtd ] || ( echo "Missing symbolic link to your build: ./dhtd" ; exit 1 ) 3[ -L ./dhtd ] || { echo "Missing symbolic link to your build: ./dhtd" ; exit 1; }
4 4
5mkdir -p ep0 ep1 ep2 ep3 ep4 ep5 ep6 ep7 \ 5mkdir -p ep0 ep1 ep2 ep3 ep4 ep5 ep6 ep7 \
6 ep8 ep9 epA epB epC epD epE epF 6 ep8 ep9 epA epB epC epD epE epF