Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have an LXC container with i686 Ubuntu 12.04 running on a x86_64 Ubuntu 12.04 host. I've set up a bridge using instructions here. However the ping from the container only goes through to the host and not to other machines on the local network. Similarly only the host and not the other machines see the container OS.

The host's /etc/network/interfaces file looks as follows:

auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet dhcp
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

The container's /etc/network/interfaces file looks as follows:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

And here's the relevant part of the container's config:

lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up

Any ideas what I'm doing wrong?

Additional info:

The output of iptables-save on host:

$ sudo iptables-save
# Generated by iptables-save v1.4.12 on Sat Oct 26 06:06:48 2013
*filter
:INPUT ACCEPT [6854:721708]
:FORWARD ACCEPT [4067:538895]
:OUTPUT ACCEPT [4967:522405]
COMMIT
# Completed on Sat Oct 26 06:06:48 2013
# Generated by iptables-save v1.4.12 on Sat Oct 26 06:06:48 2013
*nat
:PREROUTING ACCEPT [82235:21547307]
:INPUT ACCEPT [16:1070]
:OUTPUT ACCEPT [9386:583359]
:POSTROUTING ACCEPT [14693:1291952]
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
COMMIT
# Completed on Sat Oct 26 06:06:48 2013

The output of brctl show on host:

$ brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.080027409684   no      eth0
                            vethBkwWyV

The output of ifconfig br0 on host:

$ ifconfig br0
br0       Link encap:Ethernet  HWaddr 08:00:27:40:96:84  
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe40:9684/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:232863 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59518 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:34437354 (34.4 MB)  TX bytes:198492871 (198.4 MB)

The output of ifconfig eth0 on host:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:40:96:84  
          inet6 addr: fe80::a00:27ff:fe40:9684/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:299419 errors:0 dropped:0 overruns:0 frame:0
          TX packets:203569 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:59077446 (59.0 MB)  TX bytes:372056540 (372.0 MB)

The output of ifconfig eth0 on container:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:3e:74:08:2b  
          inet addr:192.168.1.12  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe74:82b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81 errors:0 dropped:0 overruns:0 frame:0
          TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8506 (8.5 KB)  TX bytes:9021 (9.0 KB)
share|improve this question

1 Answer 1

To resolve the issue you can check the follwong:

  1. ip addresses of br0 (host) and eth0 (container) are in the same subnet.
  2. ip forwarding is on: cat /proc/sys/net/ipv4/ip_forward
  3. traffic is not blocked by iptables.

UPD: if the above will not resolve the issue:

  1. check arp cache state on container and lan hosts arp -n
  2. debug arp and icmp packets with tcpdump: /usr/sbin/tcpdump -n -i <ifname> arp or icmp
  3. check route tables with route
share|improve this answer
    
Thanks for the answer. IP addresses of br0 (host) and eth0 (container) are in the same subnet 192.168.1.0/24, cat /proc/sys/net/ipv4/ip_forward prints 1 which I guess means it's on. I am not sure about iptables, how do I check that? –  vitaut Oct 25 '13 at 19:31
    
Try # service iptables stop –  Veniamin Oct 25 '13 at 20:07
    
As it turned out iptables is not a service. I've tried setting the default policies to ACCEPT as described here: serverfault.com/questions/129086/… but this didn't help either. –  vitaut Oct 25 '13 at 20:39
    
Forgive my ignorance, "service iptables stop" is relevant to RedHat. If eth0 in the container gets ip address then the bridge seems to work properly. Can you add the output of iptables-save (host). As well as brctl show (host), ifconfig br0 (host), ifconfig eth0 (host), ifconfig eth0 (container). –  Veniamin Oct 26 '13 at 8:04
    
I've updated the question with additional info. I really appreciate your help. –  vitaut Oct 26 '13 at 13:17

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.