为什么接口之间不转发响应报文?

为什么接口之间不转发响应报文?

我的主机出现以下情况:

                            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     |
-----------------                      -----------------

路由配置是使用基于策略的路由进行的。据此,从主机发送到互联网(例如,使用 ping)的数据包通过 veth5 进入我的网络,然后进入命名空间帮手。从这里,它被转发到 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 层有关,但我不知道如何解决。

ping wwww.google.com但是,如果我从名称规范执行命令客户,我收到回复。

我使用的是 Ubuntu 14.04.1,内核版本为 4.4.0-96-generic。

有人能帮我吗?非常欢迎任何建议/帮助。

相关内容