Korzystam z dystrybucji: Linux version 2.6.32-5-amd64 (Debian 2.6.32-38). Zainstalowałem KVM na hoście i uruchomiłem kilka maszyn wirtualnych, ale po fakcie uznałem, że chciałbym, aby maszyny były w tej samej podsieci, w której znajduje się host. Dodam, że w domyślnej konfiguracji (NAT) maszyny wirtualne miały dostęp do sieci internet. Wymyśliłem taką konfigurację sieci (/etc/network/interfaces) na poziomie hosta:
Kod: Zaznacz cały
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.10.105
netmask 255.255.255.0
gateway 192.168.10.203
post-up /sbin/sysctl -w net.ipv6.conf.eth0.accept_ra=0
pre-down /sbin/sysctl -w net.ipv6.conf.eth0.accept_ra=1
# vm_0
auto vbr0
iface vbr0 inet manual
pre-up /usr/sbin/brctl addbr vbr0
pre-up /sbin/ifconfig vbr0 up
post-up /sbin/sysctl -w net.ipv4.conf.vbr0.proxy_arp=1
post-up /sbin/ip route add 192.168.10.106/32 dev vbr0
pre-down /sbin/ip route del 192.168.10.106/32 dev vbr0
post-down /sbin/ifconfig vbr0 down
post-down /usr/sbin/brctl delbr vbr0
# vm_1
auto vbr1
iface vbr1 inet manual
pre-up /usr/sbin/brctl addbr vbr1
pre-up /sbin/ifconfig vbr1 up
post-up /sbin/sysctl -w net.ipv4.conf.vbr1.proxy_arp=1
post-up /sbin/ip route add 192.168.10.107/32 dev vbr1
pre-down /sbin/ip route del 192.168.10.107/32 dev vbr1
post-down /sbin/ifconfig vbr1 down
post-down /usr/sbin/brctl delbr vbr1
Tablica routingu wygląda następująco:
Kod: Zaznacz cały
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.107 0.0.0.0 255.255.255.255 UH 0 0 0 vbr1
192.168.10.106 0.0.0.0 255.255.255.255 UH 0 0 0 vbr0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.10.203 0.0.0.0 UG 0 0 0 eth0
Abym mógł mieć dostęp do sieci z poziomu maszyn wirtualnym musiałem dodać do firewalla następujące reguły:
Kod: Zaznacz cały
iptables -t nat -A POSTROUTING ! -s 192.168.10.106 -d 192.168.10.106 -j MASQUERADE
iptables -t nat -A POSTROUTING ! -d 192.168.10.106 -s 192.168.10.106 -j MASQUERADE
iptables -t nat -A POSTROUTING ! -s 192.168.10.106 -d 192.168.10.106 -j MASQUERADE
iptables -t nat -A POSTROUTING ! -d 192.168.10.106 -s 192.168.10.106 -j MASQUERADE
Mój problem polega na tym, że nie mam możliwości połączenia się z maszynami wirtualnymi z poza hosta. Próbowałem na poziomie iptables z regułami typu:
Kod: Zaznacz cały
iptables -t filer -A PREROUTING -i eth0 -d 192.168.10.106 -j ACCEPT
iptables -t filer -A PREROUTING -i eth0 -d 192.168.10.107 -j ACCEPT
Przekierowanie adresów też nie pomogło:
Kod: Zaznacz cały
iptables -t nat -A PREROUTING -d 196.169.169.105 -j DNAT --to-destination 196.169.169.106
iptables -t nat -A POSTROUTING -s 196.169.169.106 -j SNAT --to-source 196.169.169.105
Pozdrawiam.