Настройка доступа к сети из гостевой Windows XP через TUN/TAP интерфейс для виртуальной машины QEMU в Debian/Ubuntu Linux.

Дано

  1. Хост-машина с Debian Squeeze и следующими сетевыми настройками

    $ sudo ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:1d:72:1c:d1:b9
              inet addr:192.168.0.64  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::21d:72ff:fe1c:d1b9/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:3392 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3491 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:2516375 (2.3 MiB)  TX bytes:634302 (619.4 KiB)
              Interrupt:16
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:3515 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3515 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:992323 (969.0 KiB)  TX bytes:992323 (969.0 KiB)
  2. Установленная и активированная на хост-машине в виртуальной машине в qemu Windows XP Home Edition со следующими пераметрами запуска:

    /usr/bin/qemu \
        -monitor stdio \
        -soundhw es1370 \
        -m 192 \
        -localtime \
        -cdrom /home/r-asian/qemu/vpn-client.iso \
        -hda /home/r-asian/qemu/192.168.0.32.img \
        -boot c \
        -net nic,vlan=0,macaddr=00:9f:a5:71:b7:b5,model=rtl8139

Требуется

Настроить из виртуальной машины подключение в локальной сети, в которой находится хост-машина

Последовательность действий

Устанавливаем пакеты для создания сетевых мостов

$sudo apt-get install bridge-utils vde2

Устанавливаем uml-utilities

$sudo apt-get install uml-utilities

Пишем скрипт запуска

#!/bin/bash

# IP tap интерфейса
HOST_IP='192.168.1.1'
# Интерфейс на котором есть подключение к интернету(смотрящий в реальную локальную сеть)
INET='eth0'
# Интерфейс виртуальной машниы
NET='tap0'
# Пользователь
USER="`whoami`"

# Поднимаем tap-bynthatqc
sudo modprobe tun
sudo tunctl -d $NET > /dev/null
echo "Starting $NET..."
sudo tunctl -b -u $USER -t $NET > /dev/null

# Создаём сетевой интерфейс
echo "Configure net $HOST_IP/24"
sudo ifconfig $NET $HOST_IP netmask 255.255.255.0

echo "Configure firewall...";
sudo sysctl net.ipv4.ip_forward=1

# Очищяем все правила
sudo iptables -F
sudo iptables -X
# Устанавливаем Nat на интернет интерфейс
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o tap0 --source 0.0.0.0/0 --destination 192.168.1.0/24 -j ACCEPT
sudo iptables -A FORWARD -i tap0 -o eth0 --source 192.168.1.0/24 --destination 0.0.0.0/0 -j ACCEPT

echo "Starting Qemu..."

/usr/bin/qemu \
    -monitor stdio \
    -soundhw es1370 \
    -m 192 \
    -localtime \
    -cdrom /home/r-asian/qemu/vpn-client.iso \
    -hda /home/r-asian/qemu/192.168.1.32.img \
    -boot c \
    -net nic,model=rtl8139 \
    -net tap,ifname=tap0

В виртуальной машине(под Windows) настраиваем параметры сети

  1. IP = любой IP из одной c TAP-интерфейсом подсети (192.168.1.32 в моём случае)
  2. Шлюз = IP TAP-интерфейса (192.168.1.64 в нашем случае)
  3. DNS — по вкусу (у меня он на 192.168.0.1, там же где реальный шлюз в интернет)

В итоге получается следующая картина

                                                         ХОСТ-машина
                                 +---------------------------------------------------------------------------+
                                 |                                               Виртуальная машина          |
                                 |                                       +----------------------------------+|
интернет-шлюз     реальная ЛВС   |    eth0         проброс       tap0    |   виртуальная ЛВС       eth0     ||
 192.168.0.1 <------------------> 192.168.0.64 [------------] 192.168.1.1<-------------------->192.168.1.32 ||
                                 |                                       +----------------------------------+|
                                 +---------------------------------------------------------------------------+

Добавить комментарий