forked from includeos/IncludeOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·80 lines (65 loc) · 1.89 KB
/
setup.sh
File metadata and controls
executable file
·80 lines (65 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#! /bin/bash
set -e #abort on first command returning a failure
source_net=10.0.0.0/24
source_bridge=bridge43
dest_net=10.42.42.0/24
dest_bridge=bridge44
dest_gateway=10.42.42.2
if1=tap0
if2=tap1
export NSNAME="server1"
shopt -s expand_aliases
alias server1="sudo ip netns exec $NSNAME"
setup() {
# Create veth link
sudo ip link add veth_src type veth peer name veth_dest
# Bring up source end
sudo ip link set veth_src up
# Add network namespace
sudo ip netns add $NSNAME
# Add destination to namespace
sudo ip link set veth_dest netns $NSNAME
# Bring up destination end, with IP, inside namespace
server1 ip addr add $dest_gateway/24 dev veth_dest
server1 ip link set veth_dest up
server1 ip link set lo up
# Create a second bridge and bring it up, no IP
sudo ip link add name $dest_bridge type bridge
sudo ip link set dev $dest_bridge up
# Add source end to bridge44
sudo ip link set dev veth_src master $dest_bridge
# Route all traffic to the isolated network via bridge43
sudo ip route add $dest_net dev $source_bridge
# Route all traffic from server1 back to root namespace, via veth_dest
server1 sudo ip route add $source_net via $dest_gateway
echo ">>> Setup complete"
}
undo(){
# Always run all cleanup commands even if one fails
set +e
echo ">>> Deleting veth_src"
sudo ip link delete veth_src
echo ">>> Deleting $dest_bridge"
sudo ip link set $dest_bridge down
sudo ip link del $dest_bridge
echo ">>> Deleting namespace and veth pair"
sudo ip netns del $NSNAME
echo ">>> Deleting route to namespace"
sudo ip route del $dest_net dev $source_bridge
}
vmsetup(){
echo ">>> Moving VM iface $if2 to $dest_bridge"
sudo ip link set dev $if2 nomaster
sudo ip link set dev $if2 master $dest_bridge
sudo ip link set $if2 up
echo ">>> Done."
}
if [ "$1" == "--clean" ]
then
undo
elif [ "$1" == "--vmsetup" ]
then
vmsetup
else
setup
fi