通过子网转发多播和广播数据包

通过子网转发多播和广播数据包

我正在尝试接收来自本地网络的数据包,包括设备 B 上的特定广播和多播,设备 B 通过充当带有 iptables 的路由器的设备 A 连接到本地网络。

换句话说,我试图从设备 A 上的网络接收广播和多播数据包,并将它们转发到连接到设备 A 上另一个 NIC 的另一个网络到设备 B。

目前,此功能适用于单播数据包,但不能用于广播和多播数据包。由于这是转发到另一个子网,相关 RFC 文档似乎指出这不是标准行为。

这是 iptables 规则的相关部分,从注释中可以看出我尝试从中接收这些数据包的服务是 EtherNet/IP:

# Allow EthernetIP traffic via external ethernet or wifi interfaces.
for ifc in $ETHEXT $WIFI; do
    iptables -A INPUT -p udp -i $ifc --dport 2222 -m conntrack --ctstate NEW
    iptables -A INPUT -p udp -i $ifc --dport 2222 -m conntrack --ctstate ESTABLISHED,RELATED
    # This seems to be able to be either a destination or souce port
    iptables -A OUTPUT -p udp -o $ifc --dport 2222 -m conntrack --ctstate ESTABLISHED,RELATED

    iptables -A INPUT -p tcp -i $ifc --dport 44818 -m conntrack --ctstate NEW
    iptables -A INPUT -p tcp -i $ifc --dport 44818 -m conntrack --ctstate ESTABLISHED,RELATED
    # This being ESTABLISHED,RELATED means that you can't have a netcat listener on the device
    iptables -A OUTPUT -p tcp -o $ifc --dport 44818 -m conntrack --ctstate ESTABLISHED

    iptables -A INPUT -p udp -i $ifc --dport 44818 -m conntrack --ctstate NEW -j EXT_LOG_ACCEPT
    iptables -A INPUT -p udp -i $ifc --dport 44818 -m conntrack --ctstate ESTABLISHED,RELATED
    # This being ESTABLISHED,RELATED means that you can't have a netcat listener on the device
    iptables -A OUTPUT -p udp -o $ifc --dport 44818 -m conntrack --ctstate ESTABLISHED,RELATED
done

# EthernetIP packets
iptables -A FORWARD -t filter -i $ETHINT -p udp --dport 2222
iptables -A FORWARD -t filter -o $ETHINT -p udp --sport 2222
iptables -A FORWARD -t filter -i $ETHINT -p tcp --dport 44818
iptables -A FORWARD -t filter -o $ETHINT -p tcp --sport 44818
iptables -A FORWARD -t filter -i $ETHINT -p udp --dport 44818
iptables -A FORWARD -t filter -o $ETHINT -p udp --sport 44818

这是一个我的网络拓扑图如果有帮助的话。

对此有什么想法吗?

相关内容