[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Setting networking in vagrant virtualbox



On 19 April 2016 at 19:54, Arnaud Bailly <arnaud.oqube@xxxxxxxxx> wrote:
> Hello,
>
> (retry sending due to incorrect subscription address)
>
> I am trying to run mirage unikernels on a local VM on my laptop and I am
> stuck at a frustrating point. What I want to achieve is being able to query
> mirage-www unikernel runnning inside domU inside vagrant VM from my laptop.
> Here is what I did:
>
>  - installed ubuntu 14.04 Vagrant VM from
> https://github.com/mirage/mirage-vagrant-vms/
>  - configured the VM to have a host-only network interface at 192.168.77.2
>  - build mirage-www unikernel inside the VM with the following
> configuration:
> mirage configure --xen -vv --net direct --dhcp false --ip 192.168.77.3
> --netmask 255.255.255.0 --gateways 192.168.77.2 --tls false --network=0
>  - configure a br0 interface inside the VM:
>
> auto br0
> iface br0 inet static
>     bridge_ports eth1
>     address 192.168.77.2
>     broadcast 192.168.77.255
>     netmask 255.255.255.0
>
>  - configure www.xl to remove the disks (dont' know why they are generated
> )and network:
>
> name = 'www'
> kernel = '/home/vagrant/mirage-www/src/mir-www.xen'
> builder = 'linux'
> memory = 256
> on_crash = 'preserve'
>
> disk = []
> # if your system uses openvswitch then either edit /etc/xen/xl.conf and set
> #     vif.default.script="vif-openvswitch"
> # or add "script=vif-openvswitch," before the "bridge=" below:
> vif = [ 'bridge=br0' ]
>
> When I start the www domU I got:
>
> MirageOS booting...
> Initialising timer interface
> Initialising console ... done.
> getenv(OCAMLRUNPARAM) -> null
> getenv(CAMLRUNPARAM) -> null
> getenv(PATH) -> null
> Unsupported function lseek called in Mini-OS kernel
> Unsupported function lseek called in Mini-OS kernel
> Unsupported function lseek called in Mini-OS kernel
> getenv(OCAMLRUNPARAM) -> null
> getenv(CAMLRUNPARAM) -> null
> getenv(TMPDIR) -> null
> getenv(TEMP) -> null
> Netif: add resume hook
> getenv(DEBUG) -> null
> getenv(OMD_DEBUG) -> null
> getenv(OMD_FIX) -> null
> getenv(REDIRECT) -> null
> getenv(HOST) -> null
> Netif.connect 0
> Netfront.create: id=0 domid=0
>  sg:true gso_tcpv4:true rx_copy:true rx_flip:false smart_poll:false
> MAC: 00:16:3e:07:aa:90
> Attempt to open(/dev/urandom)!
> Unsupported function getpid called in Mini-OS kernel
> Unsupported function getppid called in Mini-OS kernel
> Manager: connect
> Manager: configuring
> Manager: Interface to 192.168.77.3 nm 255.255.255.0 gw [192.168.77.2]
>
> ARP: sending gratuitous from 192.168.77.3
> Manager: configuration done
> Listening on http://localhost/
>
> Inside the VM, I have the following configuration:
>
> $ ip link
>
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode
> DEFAULT group default
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UP mode DEFAULT group default qlen 1000
>     link/ether 08:00:27:c6:fe:5f brd ff:ff:ff:ff:ff:ff
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master
> br0 state UP mode DEFAULT group default qlen 1000
>     link/ether 08:00:27:df:14:31 brd ff:ff:ff:ff:ff:ff
> 7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
> mode DEFAULT group default
>     link/ether 08:00:27:df:14:31 brd ff:ff:ff:ff:ff:ff
> 9: vif4.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
> master br0 state UP mode DEFAULT group default qlen 32
>     link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
>
> $ ip addr
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
> default
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>     inet 127.0.0.1/8 scope host lo
>        valid_lft forever preferred_lft forever
>     inet6 ::1/128 scope host
>        valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UP group default qlen 1000
>     link/ether 08:00:27:c6:fe:5f brd ff:ff:ff:ff:ff:ff
>     inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
>        valid_lft forever preferred_lft forever
>     inet6 fe80::a00:27ff:fec6:fe5f/64 scope link
>        valid_lft forever preferred_lft forever
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master
> br0 state UP group default qlen 1000
>     link/ether 08:00:27:df:14:31 brd ff:ff:ff:ff:ff:ff
> 7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
> group default
>     link/ether 08:00:27:df:14:31 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.77.2/24 brd 192.168.77.255 scope global br0
>        valid_lft forever preferred_lft forever
>     inet6 fe80::a00:27ff:fedf:1431/64 scope link
>        valid_lft forever preferred_lft forever
> 9: vif4.0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
> master br0 state UP group default qlen 32
>     link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
>     inet6 fe80::fcff:ffff:feff:ffff/64 scope link
>        valid_lft forever preferred_lft forever
>
> $ ip route
> default via 10.0.2.2 dev eth0
> 10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
> 192.168.77.0/24 dev br0  proto kernel  scope link  src 192.168.77.2
>
>  - on my laptop it seems MAc addresses are correctly found:
>
> $ arp -a
> ? (192.168.0.1) at 40:65:a3:5:97:3c on en0 ifscope [ethernet]
> ? (192.168.0.10) at 8c:10:d4:dd:93:e3 on en0 ifscope [ethernet]
> ? (192.168.0.14) at 60:a4:4c:cf:89:93 on en0 ifscope [ethernet]
> ? (192.168.0.18) at d0:e1:40:8f:54:a on en0 ifscope permanent [ethernet]
> ? (192.168.0.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
> ? (192.168.77.2) at 8:0:27:df:14:31 on vboxnet4 ifscope [ethernet]
> ? (192.168.77.3) at 0:16:3e:7:aa:90 on vboxnet4 ifscope [ethernet]
> ? (192.168.77.255) at ff:ff:ff:ff:ff:ff on vboxnet4 ifscope [ethernet]
> ? (192.168.99.1) at a:0:27:0:0:3 on vboxnet3 ifscope permanent [ethernet]
> ? (192.168.99.255) at ff:ff:ff:ff:ff:ff on vboxnet3 ifscope [ethernet]
>
>  - I can access the server from inside the VM
>
> $ wget http://192.168.77.3
> --2016-04-19 17:11:56--  http://192.168.77.3/
> Connecting to 192.168.77.3:80... connected.
> HTTP request sent, awaiting response... 200 OK
> Length: 8452 (8.3K) [text/html]
> Saving to: 'index.html.1'
>
>  but I cannot access the server from the host...
>
> What am I doing wrong?

Do you have a firewall running on the host or dom0? Can you connect to
a service running in dom0? What does a tcpdump dump from dom0 show
(e.g. when loaded into wireshark)?

If you can get IP packets from the host to dom0 and back, and from
dom0 to the unikernel and back, but you can't make the bridge work,
another option is to put the unikernel on a separate network and
enable IP forwarding in dom0.


-- 
Dr Thomas Leonard        http://roscidus.com/blog/
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.