Olej писал(а):
- Использованием TAP интерфейса для VM + NAT фильтрацией из TAP подсети в реальную LAN;
Например:
Есть LAN: 192.168.1.0/24, дефаултный шлюз 192.168.1.1, хост 192.168.1.20, на нём работает кэширующий DNS, DNS работает ещё на маршрутизаторе в WAN (ADSL 192.168.1.1) и резервный DNS Google 8.8.8.8
Требуется: запустить VM в QEMU с локальной виртуальной сетью 10.0.200.0/8 (любой, отличной от 192.168.1.0/24: 10.*, 172.*, 192.168.*) + настроить выход из сети VM в WAN.
1. запускать QEMU будем с созданием (автоматическим) интерфейса TAP...
2. для этого создаём скрипты запуска и останова TAP интерфейса (и устанавливаем этим файлам флаг исполнимости x):
Код:
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/qemu-ifup
#!/bin/sh
echo '---------------- IFUP -------------------'
/sbin/ifconfig $1 10.0.200.1
iptables -t nat -A POSTROUTING -s 10.0.200.0/24 -j MASQUERADE
Код:
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/qemu-ifdown
#!/bin/sh
echo '--------------- IFDOWN ------------------'
/sbin/ifconfig $1 down
iptables -t nat -D POSTROUTING -s 10.0.200.0/24 -j MASQUERADE
3. Проверяем (на всякий случай) включенность IP4 форвардинга на хосте ... и включаем его:
Код:
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ /sbin/sysctl -a | grep forward
...
Подправляем (на 1) 2 строки /etc/sysctl.conf:
Код:
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ cat /etc/sysctl.conf | grep forward
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1
Приводим их в действие (при следующих перезагрузках это будет происходить автоматом, если не правим /etc/sysctl.conf):
Код:
olej@notebook:~/2013_WORK/HISTORY/11.2013/15$ sudo /sbin/sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
4. Теперь всё готово для запуска QEMU (обязательно с правами root) с поднятием TAP интерфейса и установкой NAT-фильтрации (всё в одном флаконе

):
Код:
olej@notebook:~/Загрузки/ISO-Linux/Puppy$ sudo qemu -m 800M -hda /dev/sdb1 -cdrom precise-5.7.1-ru.iso -boot c -enable-kvm -net nic,vlan=0 -net tap,vlan=0 -localtime
---------------- IFUP -------------------
...
После такого старта должно быть (проверяем!!!):
- интерфейс tap0 поднят и ему присвоен IP:
Код:
root@notebook:/media# ip addr show dev tap0
15: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 7a:97:a9:1c:18:db brd ff:ff:ff:ff:ff:ff
inet 10.0.200.1/8 brd 10.255.255.255 scope global tap0
inet6 fe80::7897:a9ff:fe1c:18db/64 scope link
valid_lft forever preferred_lft forever
- правило NAT-фильтра установлено:
Код:
root@notebook:/media# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.200.0/24 anywhere
Всё!
Настройка и запуск со стороны хоста QEMU сделана.
Остаётся настройка встречной стороны на запущенной VM.