Yeah probably if somebody http://blogs.eskratch.com/2012/10/create-your-own-vms-i.html tried this, you would have faced problems in network connectivity either to the host or vm. Documentation for LXC sucks. So lets quickly go through a series of steps to make host and container accessible
Requirements : The system should be connected to internet via ethernet. Use a ubuntu host
So lets use the dhcp proto to assign ips to our containers instead of static ips, remove lxc.network.pv4 from conf file
its enough for the conf file to have
lxc.utsname = beta
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
Requirements : The system should be connected to internet via ethernet. Use a ubuntu host
So lets use the dhcp proto to assign ips to our containers instead of static ips, remove lxc.network.pv4 from conf file
its enough for the conf file to have
lxc.utsname = beta
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
Now create a bridge
brctl addbr br0
Attach the bridge with interface eth0
brctl addif eth0
You should lose our internet connectivity bcoz during bridging eth0 enters promiscuous mode(where it reads all packets on network and forward to bridge, if the bridge knows the ip, forwards it, else drops it)
ifconfig br0 up
create a lxc container of ubuntu
lxc-create -n ub -f <config file as showed above> -t ubuntu
Start the container
lxc-start -n ub
Since we didnt specify ip container will do a dhcp request within subnet(bridge interface)
Once the container comes up, you can try to ping 8.8.8.8 it should work
If it doesnot work add a route to default gateway(route add default gw <ip> dev eth0)
To find the ip of default gw, do a route -n on host(master) and find the gateway ip in the row corresponding to destination 0.0.0.0
Now you should be able to ping 8.8.8.8 despite the master is not connected to internet. Actually the problem is master has given up its ip, so its not receiving packets.
To make the host connected to internet,
ifconfig eth0 0.0.0.0 up (taking the ip from eth0 as it is not considered in promiscuous mode)
dhclient br0 -v(this helps us to understand dhcp process)
ifconfig br0 up
br0 will have an ip now. Try to ping 8.8.8.8. If it fails, then the problem is with the route
Delete all routes with dev being eth0 using route del -n command(google will help you).
add default route with gw<ip> that you found earlier to dev br0
Now ping 8.8.8.8 should work.
Comments
Post a Comment