我的主机上有以下情况:
veth5 10.0.0.3 o | ----------------- ------------ ----------------- eth0 | veth1 o--| ---- | br0 |----|--o o--|----o o------o------ internet | 10.0.0.2 | ------------ | veth3 veth6 | veth7 ppp0 | | | | 192.168.1.2 192.168.100.169 | client | | helper | ----------------- -----------------
路由configuration使用基于策略的路由。 据此,从主机发送到互联网(例如,使用ping)的数据包通过veth5进入我的networking,然后进入命名空间助手 。 从这里,它被转发到veth7,然后到ppp0并到达互联网。
ip rule命令的输出是:
0: from all lookup local 2997: from 192.168.1.2 lookup T2 2998: from 192.168.100.169 lookup T2 2999: from all iif lo lookup T3 3000: from all iif veth7 lookup T1 3001: from all iif ppp0 lookup T1 4000: from all lookup T4 32766: from all lookup main 32767: from all lookup default
T1表条目:
default dev ppp0 scope link 10.0.0.0.0/24 via 192.168.1.1 dev veth7 192.168.1.0/24 dev veth7 scope link 192.168.100.180 dev ppp0 scope link
T2表条目:
default dev ppp0 scope link 10.0.0.0.0/24 via 192.168.1.1 dev veth7 192.168.1.0/24 dev veth7 scope link 192.168.100.180 dev ppp0 scope link
T3表条目:
default via 10.0.0.1 dev veth5 10.0.0.0/24 dev veth5 scope link
T4表条目:
broadcast 10.0.0.0 dev veth5 proto kernel scope link src 10.0.0.3 local 10.0.0.3 dev veth5 proto kernel scope host src 10.0.0.3 broadcast 10.0.0.255 dev veth5 proto kernel scope link src 10.0.0.3
本地表条目:
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 192.168.1.0 dev veth7 proto kernel scope link src 192.168.1.2 local 192.168.1.2 dev veth7 proto kernel scope host src 192.168.1.2 broadcast 192.168.1.255 dev veth7 proto kernel scope link src 192.168.1.2 broadcast 192.168.100.0 dev ppp0 proto kernel scope link src 192.168.100.169 local 192.168.100.169 dev ppp0 proto kernel scope host src 192.168.100.169
主表和默认表是空的。
如果我从主机ping 8.8.8.8,我已经回应了,但是如果我ping,例如www.google.com DNS答复到达ppp0,但它不会转发到veth7 。 当我发送TCP数据包时,也有同样的问题:服务器的SYN-ACK数据包到达ppp0接口,但根据路由规则不会转发到veth7接口。 我想这个问题在某种程度上与数据包的第4层有关,但我不知道如何。
但是,如果我从namespece 客户端执行命令ping wwww.google.com ,我收到回答。
我正在使用内核版本为4.4.0-96-generic的Ubuntu 14.04.1。
有人能帮我吗? 任何build议/帮助是比欢迎。