Solaris

如何僅對某些 TCP 埠強制使用特定的 MTU?

  • July 9, 2013

背景

我在現場部署了一套嵌入式硬體。這些遠端機器連接回我在 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,但我找不到任何關於有選擇地更改 MTU 的資訊,就像我在 Linux 上一樣(例如,我發現的所有資訊都是關於全域更改它,這不是我想要的是)。

我該怎麼做才能讓 TCP 埠 12345 上的所有連接都獲得我想要的 MTU?

根據 Joyent 支持團隊的回饋,這似乎是不可能的。MTU 只能在介面級別設置,不能像 Linux 那樣通過防火牆。

請注意,理論上可以通過setsockopt呼叫(通過TCP_MAXSEG選項)更改套接字的 MTU,但目前 node.js 沒有可用的擴展來這樣做。其他應用平台應使用該setsockopt呼叫。

引用自:https://serverfault.com/questions/519923