我正在尝试在 linode VPS 上的 ubuntu 13.04 上设置 lxc 容器,但是我无法 ping 主机外部的任何东西。
我的容器网络配置如下:
lxc.network.type = veth
lxc.network.hwaddr = 00:16:3e:04:93:57
lxc.network.ipv4 = 10.0.3.3/24
lxc.network.ipv4.gateway = 10.0.3.1
lxc.network.link = lxcbr0
lxc.network.flags = up
我自己添加了两行带有 ipv4 的内容,如果没有它们,我甚至无法 ping 通主机。
在主机端 ifconfig 显示网桥和容器接口:
lxcbr0: Link encap:Ethernet HWaddr fe:b2:8c:74:8c:fa
inet addr:10.0.3.1 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::68aa:7eff:feb4:9959/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7179 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2294800 (2.2 MB) TX bytes:846 (846.0 B)
vethYNhCg1 Link encap:Ethernet HWaddr fe:b2:8c:74:8c:fa
inet6 addr: fe80::fcb2:8cff:fe74:8cfa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:311 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64446 (64.4 KB) TX bytes:2904 (2.9 KB)
veth 接口不会自动获取 ipv4 IP,我曾尝试自己添加一个,但没有帮助。
dmesg 记录如下行:
[1466355.530226] iptables denied: IN=lxcbr0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:16:3e:04:93:57:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
我尝试了很多不同的方法,但似乎都不起作用。这是我迄今为止尝试过的方法。
sudo iptables -A FORWARD -i vethYNhCg1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i lxcbr0 -o eth0 -j ACCEPT
iptables -A INPUT -i lxcbr0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -o lxcbr0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -i lxcbr0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -o lxcbr0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o lxcbr0 -j MASQUERADE
不幸的是,我对网络了解不多,所以我只能尝试任何我能找到的方法。请帮忙。
答案1
在/etc/iptables.firewall.rules顶部添加两行:
-A FORWARD -s 10.0.3.0/24 -o eth0 -j ACCEPT
-A FORWARD -d 10.0.3.0/24 -o lxcbr0 -j ACCEPT
就在*过滤器下方