当 smcroute 处于活动状态时,Linux 本地多播出口遵循 FORWARD 链

网络工程 多播
2022-02-03 11:42:20

这不是配置问题,而是“这是预期的行为”问题。给定以下测试框(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

0个回答
没有发现任何回复~