Здравствуйте!
Имеется сервак на gentoo 2008.1. Имеется сетка, 2 VLAN (20 и 30). на серваке подняты 2 интерфейса (соответсвенно eth0.20 и eth0.30), eth0 - без ипей
Подняты под kvm две гостевых системы win2k3собственно вопрос - как мне прибиндить гостевые системы к своим вланам? прозрачно для остальных, кто в данных виланах сидит.
Делал для 20 влана - поднимал бридж br0, поднимал tap0, связывал eth0.20+br0+tap0 в бридж
(brctl addif br0 eth0.20 tap0), tap0 в промиск моде, на гостевой машине поднимал ИП из сетки - нифига, даже с хост-машины не пингуется...В инете много инфы, как выпустить гостей в инет... или как-то между собой их в сеть связать...
Заранее спасибо
В дополнение
Плюнул пока на вланы
на другой железяке поднял
добавил sysctl -w net.ipv4.ip_forwarding=1
сделал такой скриптик (по манам, чаво и т.п.)
----------------------------
#!/bin/sh
#Guest win2k3 test
USERID=`whoami`
sudo modprobe tun
TAP=`sudo tunctl -b -u $USERID`sudo ifconfig $TAP up -promisc
sudo brctl addbr br0
sudo ifconfig br0 up 10.99.0.1/24
sudo brctl addif br0 $TAPkvm -hda /.2/win_1.img -vga std -localtime \
-net nic,model=e1000,macaddr=00:21:5a:a4:75:70 \
-net tap,ifname=$TAP,script=no \
-m 512 -vnc :1 -smp 1sudo brctl delif br0 $TAP
sudo tunctl -d $TAP
sudo brctl delbr br0
----------------------------
на гостевой винде прописал ИП 10.99.0.254 маска /24
пингую - нет ответа
на хосте смотрю-core-01 ~ # tcpdump -vv -i br0
tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:00:37.814223 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.1 tell 10.99.0.254, l ength 28
18:00:43.066430 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.1 tell 10.99.0.254, l ength 28
18:00:48.566440 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.1 tell 10.99.0.254, l ength 28
18:00:54.066408 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.1 tell 10.99.0.254, l ength 28в арп-таблице записей нет (ни в госте, ни в хосте)
делаю пинг с хоста на гостя, нет ответа, на интерфейсе (tap0)^
core-01 ~ # tcpdump -vv -i tap0
tcpdump: listening on tap0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:04:33.259240 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28
18:04:34.259238 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28
18:04:35.259236 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28
18:04:37.269239 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28
18:04:38.269236 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28
18:04:39.269237 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.99.0.254 tell 10.99.0.1, length 28в арптаблице на хосте появилась запись про 10.99.0.254 - incompleted, естественно
куда рыть дальше?
А почему для nic MAC аддрес прописан, а для tap нет?Вот это работает.
#!/bin/sh
USERID=`whoami`
TAP=`sudo tunctl -b -u $USERID`#echo $TAP
#sudo ifconfig $TAP hw ether 00:00:AA:BB:CC:DD
sudo ifconfig $TAP up -promiscsudo brctl addif br0 $TAP
#Run qemu
/usr/bin/kvm -boot d -m 512 -cdrom '/home/stress/ISO/client_20080729.iso' \
-net nic,vlan=1,macaddr=00:07:e9:0f:84:ff \
-net tap,vlan=1,ifname=$TAP,script=no,macaddr=00:07:e9:0f:84:ff -localtime
#-std-vga -vnc :3
##sudo ifconfig $TAP down
sudo brctl delif br0 $TAP
sudo tunctl -d $TAP &> /dev/null
┌(stress@vento:pts/22)─(J:0)
└(15:02:11 12/10/09) % cat /proc/sys/net/ipv4ip_forward
0cat /etc/network/interfaces(~)┘
# 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 br0
iface br0 inet static
address 192.168.X.X
network 192.168.X.0
netmask 255.255.255.0
broadcast 192.168.X.255
gateway 192.168.X.X
dns-nameservers 192.168.X.X
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
>А почему для nic MAC аддрес прописан, а для tap нет?а почему-то мне ошибку дает на мак для тапа...
qemu: invalid parameter 'macaddr' in 'ifname=tap0,script=no,macaddr=00:21:5a:a4:75:70'
>>А почему для nic MAC аддрес прописан, а для tap нет?
>
>а почему-то мне ошибку дает на мак для тапа...
>qemu: invalid parameter 'macaddr' in 'ifname=tap0,script=no,macaddr=00:21:5a:a4:75:70'Патамуша ламерюги пишуть...
tap управляется из ядра, системы, ifconfig_ом на конец.
--------
#!/bin/sh
#Guest win2k3 testUSERID=`whoami`
sudo modprobe tun;
TAP=`sudo tunctl -b -u $USERID` # от этого толку никакого, если ядро без POSIX_CAPABILITIES собрано.
sudo ifconfig $TAP 0.0.0.0 promisc up
sudo ifconfig eth0 0.0.0.0 promisc up # у тя было "-promisc"sudo brctl addbr br0
sudo brctl addif tap0
sudo brctl addif eth0sudo ifconfig br0 10.99.0.1/24 up
# Ну тогда уж и тут судно, а то думается без рута к тапу не пустит
sudo \
kvm -hda /.2/win_1.img -vga std -localtime \
-net nic,model=e1000,macaddr=00:18:de:a4:75:70 \ # 00:18:DE это Intel
-net tap,ifname=$TAP,script=no \
-m 512 -vnc :1 -smp 1sudo brctl delif br0 $TAP
sudo tunctl -d $TAP
sudo brctl delbr br0
>В дополнение
>Плюнул пока на вланы
>на другой железяке поднял
>добавил sysctl -w net.ipv4.ip_forwarding=1ну конечно здесь ip_forward
>[оверквотинг удален]
>sudo modprobe tun
>TAP=`sudo tunctl -b -u $USERID`
>
>sudo ifconfig $TAP up -promisc
>sudo brctl addbr br0
>sudo ifconfig br0 up 10.99.0.1/24
>sudo brctl addif br0 $TAP
>
>kvm -hda /.2/win_1.img -vga std -localtime \
> -net nic,model=e1000,macaddr=00:21:5a:a4:75:70 \вот тут ля!!!! вычитал в инете, что косячный драйвер этот e1000!!!!
строчка стала выглядеть:
-net nic,macaddr=00:21:5a:a4:75:70 \
гостевая винда определила его как rtl8139
> -net tap,ifname=$TAP,script=no \
> -m 512 -vnc :1 -smp 1
>и все заработало!
спасибо всем :)