iptables DNAT广播地址

我无法使用iptables来更改广播数据包的目标地址。 我已经读了几个地方,iptables / Linux不会转发广播数据包,所以我正在寻找替代品。

我的networking设置为/ 30,所以广播stream量正在xxx3发送给我。 我已经尝试打开本地机器上的子网,以便xxx3不再是我的广播地址,但数据包的目标MAC地址是ff:ff:ff:ff:ff:ff:xx:xx:xx:xx: xx:xx:xx:xx,所以我相信它仍然被解释为广播数据包。

有没有办法改变数据包的目的MAC地址?

除了iptables还有什么工具可以执行这个操作吗?

如果我找不到解决办法,我想我会接受本地数据包,并写一个程序,将数据包发送到所需的收件人。 有什么理由不应该工作吗?

谢谢!

你想连接两个相同的networking。 您需要执行SNAT和DNAT,以便networkingA将networkingB视为具有不同的地址。 但是你为什么要转发广播包? 如果要使像SMB这样的协议和自动发现协议起作用,那么当他们从广播networking之外得到答复时,他们可能无法工作。

如果你想拥有唯一的地址,没有NAT,那么你想要的就是所谓的桥梁。 十五年前,我用OpenBSD做了这个。 我想在同一子网中的两组计算机之间插入防火墙。 这很容易,运作良好。 当时Linux没有这个能力(桥接是的,但没有防火墙),今天我认为这应该是可能的。

如果我想把所有的stream量从一个接口传递到另一个接口,那么使用桥接就行了,但是我需要在本地保留一些stream量。

据我所知,使用iptables转发广播数据包是不可能的。 我结束了只是写一个程序,重新收到的数据包在不同的接口。