|
@@ -0,0 +1,79 @@ |
|
|
|
|
|
#!/usr/bin/bash |
|
|
|
|
|
# |
|
|
|
|
|
NATNET=172.16.0.0/16 |
|
|
|
|
|
NUMOFNS=5 |
|
|
|
|
|
alias IPN='sudo ip net' |
|
|
|
|
|
alias IPL='sudo ip link' |
|
|
|
|
|
alias IPA='sudo ip addr add' |
|
|
|
|
|
|
|
|
|
|
|
peers='tcp://188.40.132.242:9651 tcp://65.21.231.58:9651' |
|
|
|
|
|
|
|
|
|
|
|
function IPNA() { |
|
|
|
|
|
local name=$1 |
|
|
|
|
|
shift |
|
|
|
|
|
sudo ip -n ${name} addr add $@ |
|
|
|
|
|
} |
|
|
|
|
|
function IPNL() { |
|
|
|
|
|
local name=$1 |
|
|
|
|
|
shift |
|
|
|
|
|
sudo ip -n ${name} link $@ |
|
|
|
|
|
} |
|
|
|
|
|
function IPNR() { |
|
|
|
|
|
local name=$1 |
|
|
|
|
|
shift |
|
|
|
|
|
local defrtr=${1/\/24/} |
|
|
|
|
|
shift |
|
|
|
|
|
sudo ip -n ${name} route add default via ${defrtr} |
|
|
|
|
|
} |
|
|
|
|
|
function createns() { |
|
|
|
|
|
local iname=$1 |
|
|
|
|
|
local in_ip=$2 |
|
|
|
|
|
local out_ip=$3 |
|
|
|
|
|
local name=n-${iname} |
|
|
|
|
|
IPN add $name |
|
|
|
|
|
IPL add in_${iname} type veth peer name out_${iname} |
|
|
|
|
|
IPL set in_${iname} netns ${name} |
|
|
|
|
|
IPNL ${name} set lo up |
|
|
|
|
|
IPNL ${name} set in_${iname} up |
|
|
|
|
|
IPL set out_${iname} up |
|
|
|
|
|
IPNA ${name} ${in_ip} dev in_${iname} |
|
|
|
|
|
IPA ${out_ip} dev out_${iname} |
|
|
|
|
|
IPNR ${name} ${out_ip} |
|
|
|
|
|
# start mycelium, relying on local discovery |
|
|
|
|
|
nohup sudo ip netns exec ${name} ./mycelium --key-file ${name}.bin --disable-peer-discovery --api-addr ${in_ip/\/24/}:8989 --peers ${peers} > ${iname}.out & |
|
|
|
|
|
} |
|
|
|
|
|
function dropns() { |
|
|
|
|
|
local iname=$1 |
|
|
|
|
|
local name=n-${iname} |
|
|
|
|
|
IPL del out_${iname} |
|
|
|
|
|
IPN del ${name} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function doit() { |
|
|
|
|
|
nohup sudo ./mycelium --key-file host.bin --api-addr 127.0.0.1:8989 --peers ${peers}>host.out & |
|
|
|
|
|
for i in $(seq 1 $NUMOFNS); do |
|
|
|
|
|
createns ${i} 172.16.${i}.2/24 172.16.${i}.1/24 |
|
|
|
|
|
done |
|
|
|
|
|
} |
|
|
|
|
|
function dropit() { |
|
|
|
|
|
sudo pkill -9 mycelium |
|
|
|
|
|
for i in $(seq 1 $NUMOFNS); do |
|
|
|
|
|
dropns ${i} |
|
|
|
|
|
done |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function cleanit() { |
|
|
|
|
|
dropit |
|
|
|
|
|
sudo rm ./*.bin |
|
|
|
|
|
sudo rm ./*.out |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function showit() { |
|
|
|
|
|
sudo killall -USR1 mycelium |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getmycelium(){ |
|
|
|
|
|
wget https://github.com/threefoldtech/mycelium/releases/latest/download/mycelium-x86_64-unknown-linux-musl.tar.gz \ |
|
|
|
|
|
-O- | gunzip -c | tar xvf - -C ${PWD} |
|
|
|
|
|
|
|
|
|
|
|
} |