Dummynet 与流不匹配

Dummynet does not match on flows

我有两台机器如下图:

To internet<---->PC_A<----->PC_B

PC_A 有两个接口(一个连接到互联网,另一个连接到 PC_B)。 PC_B 必须通过 PC_A 才能连接到 Internet。我 运行 Dummynet 在 PC_A 上。 PC_A 面向 Internet 的接口上的 IP 为 192.168.1.1,面向 PC_B 的接口上的 IP 为 10.42.0.1。 PC_B bas 10.42.0.2 在其接口上配置。

我在 Dummynet 中有两个管道配置如下:

ipfw add pipe 1 ip from 192.168.1.1 to any
ipfw add pipe 2 ip from any to 192.168.1.1
ipfw pipe 1 config bw 5000Kb/s
ipfw pipe 2 config bw 5000Kb/s

如果我运行在两台机器上测试带宽(比如speedtest.net),PC_A的带宽正是我在Dummynet中指定的,而PC_B得到无限带宽。我不明白这是怎么可能的,因为 PC_B 的数据包必须通过它的网关,在那里它将受 Dummynet 的规则约束。

有人可以给我一些建议吗?

谢谢。

是PC_A配置了NAT还是这台机器只是转发数据包?如果前者没有到位,您的 IPFW 规则将不会捕获从 PC_B 的 10.42.0.2 接口通过的数据包。如果还没有完成,我建议在 PC_A 上的 192.168.1.1 接口上进行 tcpdump 以查看离开本地网络的数据包的源地址。

具体来说,您为 pipe1 和 pipe2 设置的 IPFW 规则将只匹配源地址和目标地址(分别)为 192.168.1.1 的数据包...

根据您的网络拓扑和路由配置,您可以通过在 IPFW 规则中使用输入/输出过滤器在没有 NAT 的情况下实现您想要的...

ipfw add pipe 1 ip from any to any in via em0
ipfw add pipe 2 ip from any to any out via em0

...但是如果没有正确配置的 NAT,我不确定 return 流量将如何设法返回到源计算机。