Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] I can't manage having my openbsd qemu guest network
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Networking & Security
View previous topic :: View next topic  
Author Message
lalebarde
Guru
Guru


Joined: 03 Sep 2006
Posts: 436
Location: France, Haute-Garonne

PostPosted: Tue Nov 09, 2010 11:37 pm    Post subject: [SOLVED] I can't manage having my openbsd qemu guest network Reply with quote

EDIT Nov 14th in dark red --> SOLVED
EDIT Nov 13th in dark blue

Hi all,
I want to use kvm-qemu with openbsd as a guest, and tun/tap to access the web with the host (my gentoo) as a router with NAT (I did not manage with the direct bridging method). I have followed this howto : http://en.gentoo-wiki.com/wiki/KVM#Enabling_the_access_to_Internet, with some help from here for tun/tap : http://forums.gentoo.org/viewtopic-t-851828.html.
But when I boot openbsd in kvm-qemu, I don't see the router, though the configuration looks ok to me (but I am a network noob).

In fact, it is not exactly I don't see it. It answers :
Code:
#ping 192.168.99.1
ping: sendto: Host is down
ping: wrote 192.168.99.1 64 chars, ret=-1
My interpretation is that the guest can send packets to the bridge, but receive no answer.

Code:
# uname -a
Linux JANUS 2.6.30-tuxonice-r6 #11 SMP PREEMPT Sat Nov 6 18:03:52 CET 2010 x86_64 Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz GenuineIntel GNU/Linux


Here is what I did :
Code:
# cat /etc/conf.d/net
dns_domain_lo="MAISON"
bridge_br0="qtap0"
brctl_br0=( "setfd 0" "sethello 10" "stp off" )
rc_need_br0="net.qtap0"
config_eth0=( "192.168.0.10/24" )
routes_eth0=( "default via 192.168.0.1" )
dns_servers_eth0="212.27.40.240 212.27.40.241"
config_br0=( "192.168.99.1/24" )
config_qtap0=( "null" )
tuntap_qtap0="tap"
tunctl_qtap0="-u chronos"
mac_qtap0="02:5a:4b:3c:2d:1e"
Code:
# ls -l /etc/init.d/net.*
lrwxrwxrwx 1 root root     6  8 nov.  00:14 /etc/init.d/net.br0 -> net.lo
lrwxrwxrwx 1 root root     6  5 nov.  23:00 /etc/init.d/net.eth0 -> net.lo
-rwxr-xr-x 1 root root 30689  5 nov.  22:57 /etc/init.d/net.lo
lrwxrwxrwx 1 root root     6  8 nov.  00:14 /etc/init.d/net.tap0 -> net.lo
Code:
# lsmod | egrep -i "kvm|qemu|tun"
tun                    14264  1
kvm_intel              39040  0
kvm                   157504  1 kvm_intel
Code:
# tail  /etc/sysctl.conf
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
Code:
[color=darkblue]# rc-update show | egrep -i "kvm|net|bridge"[/color]
      bridge_forward |      default                 
                 kvm |      default                 
               local |      default nonetwork       
             net.eth0 |      default                 
              net.lo | boot                         
            netmount |      default 

/etc/init.d/kvm and /etc/init.d/bridge_forward being the scripts from the howto. I had to change one line in kvm in the start function for the address of the host which serves as the guest router:
Code:
/sbin/ifconfig br0 192.168.0.10 netmask 255.255.255.0 up}

As a result, here is my network configuration :
Code:
# ifconfig -a
br0       Lien encap:Ethernet  HWaddr 02:5a:4b:3c:2d:1e 
          inet adr:192.168.99.1  Bcast:192.168.99.255  Masque:255.255.255.0
          adr inet6: fe80::5a:4bff:fe3c:2d1e/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:367 errors:0 dropped:0 overruns:0 frame:0
          TX packets:394 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:10320 (10.0 KiB)  TX bytes:17016 (16.6 KiB)

eth0      Lien encap:Ethernet  HWaddr a4:ba:db:e9:66:02 
          inet adr:192.168.0.10  Bcast:192.168.0.255  Masque:255.255.255.0
          adr inet6: fe80::a6ba:dbff:fee9:6602/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8526 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10184 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:6556042 (6.2 MiB)  TX bytes:1857714 (1.7 MiB)
          Interruption:17

lo        Lien encap:Boucle locale 
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:361 errors:0 dropped:0 overruns:0 frame:0
          TX packets:361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:50193 (49.0 KiB)  TX bytes:50193 (49.0 KiB)

qtap0     Lien encap:Ethernet  HWaddr 02:5a:4b:3c:2d:1e 
          adr inet6: fe80::5a:4bff:fe3c:2d1e/64 Scope:Lien
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:422 errors:0 dropped:18 overruns:0 carrier:0
          collisions:0 lg file transmission:500
          RX bytes:16418 (16.0 KiB)  TX bytes:18472 (18.0 KiB)

sit0      Lien encap:IPv6-dans-IPv4 
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Code:
[color=darkblue]# route[/color]
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.99.0    *               255.255.255.0   U     0      0        0 br0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         GATEWAY         0.0.0.0         UG    0      0        0 eth0
Code:
# cat /etc/hosts
127.0.0.1   JANUS.MAISON JANUS localhost
#::1      localhost
192.168.0.1   GATEWAY FREEBOX


I have no EE (error) nor WW (warnings) in dmesg. Internet works well on the host. kvm looks ok :
Code:
# dmesg | grep kvm
[   29.847152] loaded kvm module (kvm-kmod-2.6.34.1)
[   29.847153] kvm: paravirtual wallclock will not work reliably accross host suspend/resume
[  170.789202] kvm: 6257: cpu0 unhandled wrmsr: 0x198 data 0

tun, tap also :
Code:
# dmesg | grep tun
[   14.195902] IPv6 over IPv4 tunneling driver
[   29.879689] tun: Universal TUN/TAP device driver, 1.6
[   29.879691] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>

# dmesg | grep tap
[   29.927801] device qtap0 entered promiscuous mode
[   29.929892] br0: port 1(qtap0) entering forwarding state
[   30.341617] br0: port 1(qtap0) entering disabled state
[   30.353903] br0: port 1(qtap0) entering forwarding state
[   41.048955] qtap0: no IPv6 routers present
[  203.002125] qtap0: received packet with  own address as source address
[  203.002143] qtap0: received packet with  own address as source address
[  204.469756] qtap0: received packet with  own address as source address
[  205.656161] qtap0: received packet with  own address as source address
[  209.620494] qtap0: received packet with  own address as source address
[  210.658634] qtap0: received packet with  own address as source address
[  214.641578] qtap0: received packet with  own address as source address
[  249.699513] qtap0: received packet with  own address as source address
[  253.753471] qtap0: received packet with  own address as source address
[  254.710414] qtap0: received packet with  own address as source address
[  259.721689] qtap0: received packet with  own address as source address
[  264.722716] qtap0: received packet with  own address as source address
[  294.699835] qtap0: received packet with  own address as source address
[  299.700741] qtap0: received packet with  own address as source address
[  304.701844] qtap0: received packet with  own address as source address
[  309.703083] qtap0: received packet with  own address as source address
[  314.704215] qtap0: received packet with  own address as source address
[  354.793298] qtap0: received packet with  own address as source address
[  359.794181] qtap0: received packet with  own address as source address
[  364.795423] qtap0: received packet with  own address as source address
[  369.796571] qtap0: received packet with  own address as source address
[  374.797705] qtap0: received packet with  own address as source address
[  389.909717] br0: port 1(qtap0) entering disabled state
[  389.916535] device qtap0 left promiscuous mode
[  389.916537] br0: port 1(qtap0) entering disabled state
[  389.950251] device qtap0 entered promiscuous mode
[  389.960554] br0: port 1(qtap0) entering forwarding state
[  390.808870] qtap0: received packet with  own address as source address
[  414.766997] qtap0: received packet with  own address as source address
[  419.767797] qtap0: received packet with  own address as source address
This is suspicious.SOLVED

I installed the guest with :
Code:
$ qemu-img create -f qcow2 openbsd-4.8-amd64.img 10G
$ kvm -hda openbsd-4.8-amd64.img -cdrom install48.iso -boot d -m 1000 -k fr -smp 1 -cpu Nehalem -net nic,macaddr=02:5a:4b:3c:2d:1e -net tap,ifname=qtap0,script=no,downscript=no

And I run it with :
Code:
kvm -hda openbsd-4.8-amd64.img -m 1000 -k fr -net nic,macaddr=02:5a:4b:3c:2d:1e -net tap,ifname=qtap0,script=no,downscript=no

replaced by :
Code:
kvm -hda openbsd-4.8-amd64.img -m 1000 -k fr -net nic,macaddr=02:5a:4b:3c:2d:10 -net tap,ifname=qtap0,script=no,downscript=no
Note the different MAC address.

Now let's have a look in the guest :
Code:
# dmesg | grep re0
re0 at pci0 dev 3 function 0 "Realtek 8139" rev 0x20: RTL8139C+ (0x7480), apic 1 int 11 (irq 11), address 02:5a:4b:3c:2d:1e
rlphy0 at re0 phy 0: RTL internal PHY
Code:
# ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33160
   priority: 0
   groups: lo
   inet 127.0.0.1 netmask 0xff000000
   inet6 ::1 prefixlen 128
   inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
   lladdr 02:5a:4b:3c:2d:1e
   priority: 0
   groups: egress
   media: Ethernet autoselect (100baseTX full-duplex)
   status: active
   inet 192.168.99.66 netmask 0xffffff00 broadcast 192.168.99.255
   inet6 fe80::5a:4bff:fe3c:2d1e%re0 prefixlen 64 scopeid 0x1
enc0: flags=0<>
   priority: 0
   groups: enc
   status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33160
   priority: 0
   groups: pflog
Code:
# cat /etc/hostname.re0
inet 192.168.99.66 255.255.255.0
Code:
# cat /etc/mygate
192.168.0.10
Code:
#cat /etc/resolv.conf
lookup file bind
nameserver 212.27.40.240
nameserver 212.27.40.241

So I thing I could ping the host at 192.168.0.10 or whatever else as www.google.fr, but it does not work.

Any clue ?

EDIT Nov 10th : In the host, I get :
Code:
# rc-status
Runlevel: default
 bridge_forward                                                                                                [ stopped  ]
 net.br0                                                                                                       [ stopped  ]
Code:
# /etc/init.d/net.br0 start
 * Service net.br0 starting
 set hello timer failed: Invalid argument
 network interface tap0 does not exist
 Please verify hardware or kernel module (driver)                                                                    [ !! ]
 * ERROR:  net.br0 failed to start


EDIT Nov 12th : If I run bridge_forward after boot, the Nov 10th problem is solved. Their shall be some conditions to add for the service to start in the right order.
Code:
# /etc/init.d/bridge_forward start
 * Service bridge_forward starting
 * Service net.br0 starting
 set hello timer failed: Invalid argument
 * Service net.br0 started
 * Service bridge_forward started

So now my bridge and it's tap interface looks ok, and the guest looks ok too but no one can see the other. I wonder about iptables.....

EDIT Nov 13th : I have added a udev rule like described here : http://forums.gentoo.org/viewtopic-t-631334-start-0.html, but it does not solve my problem. Also found this for some explanations (in french) : http://www.adella.org/spip/QEMU-Configurer-le-reseau.

EDIT Nov 13th : One point I have understood of great importance, if I don't fool myself, is that the host bridge ip corresponds to the guest gateway. Second point, in the doc http://en.gentoo-wiki.com/wiki/KVM, for file : /etc/conf.d/net, in line : brctl_br0=( "setfd 0" "sethello 0" "stp off" ), put something else than 0 for sethello. Cf : http://forums.gentoo.org/viewtopic-t-731171.html.

EDIT Nov 13th : I tried to add ip rules found here : http://felipec.wordpress.com/2009/12/27/setting-up-qemu-with-a-nat/
Code:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -I FORWARD 1 -i tap0 -j ACCEPT
# iptables -I FORWARD 1 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
but it changes nothing.

:cry: :cry: :cry: HELP PLEASE :cry: :cry: :cry: :cry:

EDIT Nov 14th : solved thanks to : http://hardenedgentoo.blogspot.com/2010/04/kvm-setup-with-bridged-networking.html. Contrary to what is in the doc http://en.gentoo-wiki.com/wiki/KVM
Quote:
The key to this approach is to make sure you have unique mac addresses on both the host's tuntap interface as well as the guest.
That is what makes it fails. The MAC address SHALL be different
Quote:
Moreover, you need to specify mac address for the VM and it has to be different that the one specified for given tap interface in /etc/conf.d/net file.
Thanks radegand :D :D :D :D .I have opened a bug : http://bugs.gentoo.org/show_bug.cgi?id=345327
Back to top
View user's profile Send private message
FranZ
Apprentice
Apprentice


Joined: 15 Feb 2004
Posts: 212
Location: Enschede, Holland

PostPosted: Tue Nov 23, 2010 8:23 pm    Post subject: Reply with quote

Removing from unanswered posts.
_________________
Horse sense is the thing that keeps horses from betting on people. --W.C. Fields

Ask Smart Questions
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Networking & Security All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum