-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·73 lines (56 loc) · 2.08 KB
/
setup.sh
File metadata and controls
executable file
·73 lines (56 loc) · 2.08 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
#!/bin/bash
# Exit immediately if any command fails
set -e
# Get project root directory dynamically
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "Project root: $BASE_DIR"
# ✅ Check if cert directories exist AND are not empty
if [ -z "$(ls -A "$BASE_DIR/red_namespace" 2>/dev/null)" ] || \
[ -z "$(ls -A "$BASE_DIR/blue_namespace" 2>/dev/null)" ]; then
echo "❌ Certificates missing or empty."
echo "👉 Run: ./generate_certs.sh"
exit 1
fi
echo "✅ Certificates found."
# Clean previous namespaces if they exist
ip netns del red 2>/dev/null || true
ip netns del router 2>/dev/null || true
ip netns del blue 2>/dev/null || true
# Create namespaces
ip netns add red
ip netns add router
ip netns add blue
# Create veth pairs
ip link add veth-red type veth peer name veth-r1
ip link add veth-blue type veth peer name veth-r2
# Assign to namespaces
ip link set veth-red netns red
ip link set veth-r1 netns router
ip link set veth-r2 netns router
ip link set veth-blue netns blue
# Assign IP addresses
ip netns exec red ip addr add 10.0.1.2/24 dev veth-red
ip netns exec router ip addr add 10.0.1.1/24 dev veth-r1
ip netns exec router ip addr add 10.0.2.1/24 dev veth-r2
ip netns exec blue ip addr add 10.0.2.2/24 dev veth-blue
# Bring interfaces up
ip netns exec red ip link set veth-red up
ip netns exec router ip link set veth-r1 up
ip netns exec router ip link set veth-r2 up
ip netns exec blue ip link set veth-blue up
ip netns exec red ip link set lo up
ip netns exec router ip link set lo up
ip netns exec blue ip link set lo up
# Enable Routing in Router
ip netns exec router sysctl -w net.ipv4.ip_forward=1
# Add Default Routes
ip netns exec red ip route add default via 10.0.1.1
ip netns exec blue ip route add default via 10.0.2.1
# Create cert directories inside namespaces
ip netns exec red mkdir -p /certs
ip netns exec blue mkdir -p /certs
# Copy certificates safely
ip netns exec blue cp -r "$BASE_DIR/blue_namespace/." /certs/
ip netns exec red cp -r "$BASE_DIR/red_namespace/." /certs/
echo "✅ Certificates copied into namespaces."
echo "🚀 Setup complete."