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