web-dev-qa-db-ja.com

特定のTCPポートのみに特定のMTUを強制するにはどうすればよいですか?

背景

組み込みハードウェアのセットを現場に配備しています。これらのリモートマシンは、Ubuntuを実行しているAWSのサーバーに接続し直し、iptablesmangleチェーンを使用してMTUを500に下げ、これらのデバイスが満足できるようにします。参考までに、これは私が使用しているiptablesルールです。

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

現在の問題

SmartOSを使用してJoyentCloudでいくつかのサーバーを起動しようとしていますが、Linuxの場合のようにMTUを選択的に変更することに関する情報が見つかりません(たとえば、見つけたすべての情報は変更に関するものです) itglobally、これはnot私が欲しいものです)。

TCPポート12345のすべての接続が必要なMTUを取得するようにするにはどうすればよいですか?

1
Dave S.

Joyentのサポートチームからのフィードバックに基づくと、これは不可能のようです。 MTUは、Linuxの場合のようにファイアウォールを介してではなく、インターフェイスレベルでのみ設定できます。

理論的には、setsockopt呼び出し(TCP_MAXSEGオプションを介して)を介してソケットのMTUを変更することは可能ですが、現在、node.jsで変更できる拡張機能はありません。他のアプリプラットフォームでは、setsockopt呼び出しを使用する必要があります。

0
Dave S.