如何强制特定 TCP 端口使用特定的 MTU?

如何强制特定 TCP 端口使用特定的 MTU?

背景

我在现场部署了一套嵌入式硬件。这些远程机器连接到我在 AWS 上运行 Ubuntu 的服务器,我使用链iptables mangle将 MTU 降低到 500,以便这些设备正常运行。作为参考,这是iptables我使用的规则:

-A POSTROUTING -p tcp --sport 12345 --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss 500

当前问题

我正在尝试使用 Joyent Cloud 启动一些服务器SmartOS,但我找不到任何关于像在 Linux 上那样有选择地更改 MTU 的信息(例如,我找到的所有信息都是关于更改它全球,即不是我想要的是)。

我该怎么做才能使 TCP 端口 12345 上的所有连接都获得我想要的 MTU?

答案1

根据 Joyent 支持团队的反馈,这似乎是不可能的。MTU 只能在接口级别设置,而不能像 Linux 那样通过防火墙设置。

请注意,理论上可以通过setsockopt调用(通过TCP_MAXSEG选项)更改套接字的 MTU,但目前没有可用于 node.js 的扩展来执行此操作。其他应用平台应使用该setsockopt调用。

相关内容