使用 IPTables / FirewallD 转发片段

使用 IPTables / FirewallD 转发片段

我有一台 Linux(openSuse Leap 15.0)计算机,使用 PPoE 连接到电缆调制解调器(希望与此无关)。 编辑ppp0 接口的 mtu 为 1492,但它“绑定”到的 eth0 接口(我不明白它是如何工作的)在 ppp0/eth0(外部)上的 mtu 为 1500,并且在 eth1(内部)上具有本地网络(10.1.0.0/8)。 编辑它正在运行启用了伪装的防火墙。

我还在本地网络上运行了 named 和 dchpd,并且连接了几个 wifi 路由器、一台打印机等等。

无论如何,一切正常完美如果 MTU 设置为 1400,则不会出现问题。但如果在连接到本地网络的机器上将 MTU 设置为 1500,则会出现问题。特别是,请求网页会挂起,如果我使用 wireshark 查看流量,只会返回对 HTTP 请求的部分响应(就我查看的示例而言,恰好是最后一部分)。

这仍然可以 - 我可以在大多数连接的设备上降低 MTU - 但我需要连接未 root 的 Android 手机。目前我唯一能让它工作的方法是使用具有自己的 DHCP(即自己的小网络)的 wifi 路由器并在路由器设置中调整 MTU。

因此,我的印象是,上面的规则中缺少了处理片段的某些内容。然而,当我阅读时,似乎有状态连接应该可以正确处理片段。我也尝试过复制规则,-f但似乎没有效果。

我该如何实现这一点?更确切地说,如果上述内容正确,我该如何让 iptables 转发片段?谢谢。

编辑或者,如果这是更好的方法,为什么连接到网络的任何东西都不能正确地执行 PMTUD?防火墙不会阻止任何 ICMP 消息。如果我运行ping它,它会正常工作(并且我在 wireshark 中看到 ICMP)。如果我执行 HTTP 请求,我看不到 ICMP 消息,这让我很担心。目前,我正在尝试找到一种方法来测试碎片消息是否在其他地方被阻止。

编辑文本中已将 eth0 和 eth1 交换。现已修复。

相关内容