这不是配置问题,而是“这是预期的行为”问题。给定以下测试框(Stock Ubuntu 18.04 LTS):
+---------------------------------------+
| if0 172.16.0.2 |
| Server |
|if1 192.168.0.1 if2 192.168.1.1|
+---------------------------------------+
我正在运行一个本地进程,它将多播发送到 239.255.0.1 (UDP:2000) 在没有其他任何东西的情况下,这遵循默认网关 (172.16.0.1) 并 if0仅通过退出。我可以看到 iptablesOUTPUT计数器适当地递增:
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 11008 ACCEPT udp -- * if0 0.0.0.0/0 239.255.0.1 udp dpt:2000
启动 smcroutesmcroute -d不会改变这一点。但是,如果我决定希望流量通过if1以及if0运行:
smcroute -a if0 172.16.0.2 239.255.0.1 if1
OUTPUT 计数器停止,匹配的 FORWARD 链(一旦我创建了一个)开始增加:
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
31 87948 ACCEPT udp -- if0 if1 172.16.0.2 239.255.0.1 udp dpt:2000
因此,已经做出了路由决策:
$ ip mroute
(172.16.0.2, 239.255.0.1) Iif: if0 Oifs: if1 State: resolved
并按预期tpcudmp显示出口。但我不明白为什么本地流量现在必须遍历链而不是. 这种行为是一致的还是预期的?if0if1FORWARDOUTPUT