root / hooks / network-connect-post.d / snf-network @ 63a8d2cc
History | View | Annotate | Download (1.5 kB)
1 |
#!/bin/bash |
---|---|
2 |
|
3 |
source /etc/default/snf-network |
4 |
|
5 |
source $CONF |
6 |
|
7 |
GROUP=$GANETI_GROUP_NAME |
8 |
NETWORK=$GANETI_GROUP_NETWORK_NAME |
9 |
MODE=$GANETI_GROUP_NETWORK_MODE |
10 |
LINK=$GANETI_GROUP_NETWORK_LINK |
11 |
|
12 |
HOSTNAME=$(hostname) |
13 |
|
14 |
NETFILE=$SHAREDDIR/networks/$NETWORK |
15 |
NODEMAPFILE=$SHAREDDIR/mappings/$NETWORK-$HOSTNAME |
16 |
NODEINFRAFILE=$SHAREDDIR/infra/$HOSTNAME |
17 |
|
18 |
RT_TABLES=/etc/iproute2/rt_tables |
19 |
|
20 |
cat > $NODEMAPFILE <<EOF |
21 |
MODE=$MODE |
22 |
LINK=$LINK |
23 |
EOF |
24 |
|
25 |
|
26 |
source $NODEINFRAFILE |
27 |
source $NETFILE |
28 |
|
29 |
if [ "$MODE" == "routed" ]; then |
30 |
TABLE=rt_$NETWORK |
31 |
if [ "$TYPE" == "public" ]; then |
32 |
VLAN=$PUBLIC_VLAN |
33 |
ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}') |
34 |
|
35 |
ip link set $VLAN up |
36 |
|
37 |
echo 1 > "/proc/sys/net/ipv4/conf/$VLAN/proxy_arp" |
38 |
|
39 |
ID=$(wc -l < $RT_TABLES) |
40 |
echo $((ID+1)) $TABLE >> $RT_TABLES |
41 |
|
42 |
ip rule add iif $VLAN table $TABLE |
43 |
|
44 |
ip route add $SUBNET dev $VLAN table main |
45 |
|
46 |
ip route add $SUBNET dev $VLAN table $TABLE |
47 |
ip route add default via $GATEWAY dev $VLAN table $TABLE |
48 |
|
49 |
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding |
50 |
|
51 |
arptables -A OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP |
52 |
fi |
53 |
fi |
54 |
|
55 |
|
56 |
|
57 |
if [ "$MODE" == "bridged" ]; then |
58 |
BRIDGE=$LINK |
59 |
if [ ! -z "$GATEWAY" -a $ENABLE_MASQ ]; then |
60 |
if [ "$TYPE" == "private" ]; then |
61 |
if [ "$HOSTNAME" == "$ROUTER" ]; then |
62 |
NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}') |
63 |
ip addr add $GATEWAY/$NETMASK dev $BRIDGE |
64 |
iptables -t nat -A POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE |
65 |
fi |
66 |
fi |
67 |
fi |
68 |
fi |
69 |
|