lxc使用NAT访问互联网,在容器中,执行ping www.bing.com已经工作,但在浏览器中打开www.bing.com,提示TIME OUT

时间:2016-10-24 06:11:39

标签: nat lxc

说明

1)我只有一个物理网卡wlan0,我使用lxc创建一个名为u1的容器

2)我创建了一个桥接名称lxcbr0并应用了一个静态ipv4 addr,它是192.168.55.1,然后我修改u1 / config为u1启动时分配了一个静态ip,ifconfig,我可以看到网卡是eth0,并且我在u1 / config

中定义了IP 192.168.55.6

3)我连接了ap,而wlan0的IP是192.168.199.218(dhcp),AP的地址是192.168.199.1

4)然后我执行echo 1 > /proc/sys/net/ipv4/ip_forward

打开ip forward

5)最后我使用iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE添加nat的规则

之后,我按lxc-attach -n u1输入容器的bash,执行ping -c 3 192.168.199.1,然后打开另一个bash shell执行tcpdump -i wlan0 -v tcpdump -i lxcbr0 -v,我可以找到来自wlan0&的输出包#39; s套接字已更改,ping已成功。

我配置了dns服务器,并在u1中执行ping -c 3 www.bing.com,它也成功了。

但是当我在u1中打开浏览器时,输入www.bing.com,它有一个提示net::ERR_TIMED_OUT

我只知道,ping使用ICMP协议并且与TCP不同,但我不知道如何配置它,有人知道它,请给我一些建议。

1 个答案:

答案 0 :(得分:0)

以下是原因:

ip route

192.168.55.0/24 dev lxcbr0 proto kernel scope link src 192.168.55.1 192.168.199.0/24 dev wlan0 proto kernel scope link src 192.168.199.218 metric 325

ip route list table wlan0

默认通过192.168.199.1 dev wlan0 proto static 192.168.199.0/24 dev wlan0 proto静态范围链接

ip rule

0:来自所有查找本地 10000:从所有fwmark 0xc0000 / 0xd0000查找legacy_system 10500:来自所有oif dummy0 uidrange 0-0查找dummy0 10500:从所有oif wlan0 uidrange 0-0查找wlan0 13000:从所有fwmark 0x10063 / 0x1ffff查找local_network 13000:从所有fwmark 0x10064 / 0x1ffff查找wlan0 14000:来自所有oif dummy0查找dummy0 14000:来自所有oif wlan0查询wlan0 15000:从所有fwmark 0x0 / 0x10000查找legacy_system 16000:从所有fwmark 0x0 / 0x10000查找legacy_network 17000:从所有fwmark 0x0 / 0x10000查找local_network 19000:从所有fwmark 0x64 / 0x1ffff查找wlan0 23000:从所有fwmark 0x0 / 0xffff uidrange 0-0查找main 25000:从所有fwmark 0x0 / 0xffff查找wlan0 32000:从所有无法到达的

我改变了23000的ip规则,如:

ip rule

0:来自所有查找本地 10000:从所有fwmark 0xc0000 / 0xd0000查找legacy_system 10500:来自所有oif dummy0 uidrange 0-0查找dummy0 10500:从所有oif wlan0 uidrange 0-0查找wlan0 13000:从所有fwmark 0x10063 / 0x1ffff查找local_network 13000:从所有fwmark 0x10064 / 0x1ffff查找wlan0 14000:来自所有oif dummy0查找dummy0 14000:来自所有oif wlan0查询wlan0 15000:从所有fwmark 0x0 / 0x10000查找legacy_system 16000:从所有fwmark 0x0 / 0x10000查找legacy_network 17000:从所有fwmark 0x0 / 0x10000查找local_network 19000:从所有fwmark 0x64 / 0x1ffff查找wlan0 23000:从所有fwmark 0x0 / 0xffff查找main 25000:从所有fwmark 0x0 / 0xffff查找wlan0 32000:从所有无法到达的

然后它工作,回复数据包可以到达lxcbr0,浏览器可以上网,但我仍然对ip规则的输出格式有疑问,例如fwmark 0x0 / 0xffff或fwmark 0x64 / 0x1ffff什么&# 39;意思是什么? ip规则如何运作?谁决定数据包传输方向?哪个NIC会处理数据包?数据包是否来自不同的NIC?