blob: dd8997cefc14813844d518abdb712cf1c799b316 (
plain) (
blame)
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
|
libvirtd reload and hooks problem routed-net
if we do a reload of libvirt, some iptables rules, which are created through /etc/libvirt/hooks/qemu are not working anymore.
Every time a other (one or two,thee) vm is affected.
our qemu file:
#!/bin/bash
do_net() {
local status=$2
local ip=$3
local in=$4
local out=$5
if [[ ! $status || ! $ip || ! $in || ! $out ]]; then
echo "Not all parameters were passed!"
exit 1
fi
if [ "$status" = "stopped" -o "$status" = "reconnect" ]; then
ip route del $ip via 191.255.255.1 dev $out
ip neigh del proxy $ip dev $in
iptables -D FORWARD -i $in -o $out -s 0.0.0.0/0 -d $ip/32 -j ACCEPT
iptables -D FORWARD -i $out -o $in -s $ip/32 -d 0.0.0.0/0 -j ACCEPT
fi
if [ "$status" = "start" -o "$status" = "reconnect" ]; then
ip route add $ip via 191.255.255.1 dev $out
ip neigh add proxy $ip dev $in
iptables -I FORWARD 4 -i $in -o $out -s 0.0.0.0/0 -d $ip/32 -j ACCEPT
iptables -I FORWARD 4 -i $out -o $in -s $ip/32 -d 0.0.0.0/0 -j ACCEPT
fi
}
CONF=//etc/libvirt/hooks/vms/*
for file in $CONF
do
guest_ipaddr=""
guest_name=""
type=""
destination="0.0.0.0/0"
while read line; do
eval $line
done < $file
guest_ipaddrnet=$guest_ipaddr"/32"
for dest in ${destination}
do
if [ "${1}" = "${guest_name}" ]; then
echo "SRC-IP="$guest_ipaddr " " $guest_ipaddrnet " VM="$guest_name " Dest="$dest
if [ "${2}" = "stopped" ]; then
ip route del $guest_ipaddr via 191.255.255.1 dev virbr1
ip neigh del proxy $guest_ipaddr dev bond0
iptables -D FORWARD -i bond0 -o virbr1 -s $dest -d $guest_ipaddrnet -j ACCEPT
iptables -D FORWARD -i virbr1 -o bond0 -s $guest_ipaddrnet -d $dest -j ACCEPT
fi
if [ "${2}" = "start" ]; then
ip route add $guest_ipaddr via 191.255.255.1 dev virbr1
ip neigh add proxy $guest_ipaddr dev bond0
iptables -I FORWARD 4 -i bond0 -o virbr1 -s $dest -d $guest_ipaddrnet -j ACCEPT
iptables -I FORWARD 4 -i virbr1 -o bond0 -s $guest_ipaddrnet -d $dest -j ACCEPT
fi
if [ "${2}" = "reconnect" ]; then
ip route del $guest_ipaddr via 191.255.255.1 dev virbr1
ip neigh del proxy $guest_ipaddr dev bond0
iptables -D FORWARD -i bond0 -o virbr1 -s $dest -d $guest_ipaddrnet -j ACCEPT
iptables -D FORWARD -i virbr1 -o bond0 -s $guest_ipaddrnet -d $dest -j ACCEPT
sleep 1
ip route add $guest_ipaddr via 191.255.255.1 dev virbr1
ip neigh add proxy $guest_ipaddr dev bond0
iptables -I FORWARD 4 -i bond0 -o virbr1 -s $dest -d $guest_ipaddrnet -j ACCEPT
iptables -I FORWARD 4 -i virbr1 -o bond0 -s $guest_ipaddrnet -d $dest -j ACCEPT
fi
fi
done
done
|