
私は VPN 接続経由で SSHFS を実行しています。このリモート ファイル システム上のファイルに 1270 バイトのチャンクを送信しようとすると、次のようになります。
head -c 1270 /dev/urandom > /path/into/the/sshfs/foo
ファイルシステム全体がフリーズし、アクセスしようとするすべてのプロセスがハングします。これは、sshfs プロセスを強制終了することによってのみ修正できます。
代わりに 1269 バイトを送信しようとすると、問題は発生しません。
私は sshfs のコマンドライン オプションをいろいろ試してみましたが、これに影響を与えるオプションは 1 つだけであることがわかりました。
-o max_write=1240
ここで 1270 未満の値を渡すと、エラーが発生し始める制限がこの値 + 1 に下げられます (ただし、値 300 の場合は 1183 に下がります)。残念ながら、値を上げても効果はなく、制限は 1270 バイトのままです。
どうやら、これはバッファに関することのようです。連続書き込みを使用すると、すべて正常に動作します。
(head -c 1269 /dev/urandom
head -c 1269 /dev/urandom) > /path/into/the/sshfs/foo
これは基盤となるsshの問題ではないようです。
ssh remote_host "bash -c 'head -c 2000 /dev/zero | tr \\\0 0'" | wc -c
正常に動作し、2000
期待どおりに印刷されます。
しかし、X転送も機能していないようですので、は以下にsshの問題があります。
MTU サイズを 1412 から 1500 に変更してみました。
ifconfig tun0 mtu 1500
しかし、効果はありませんでした。
これは既知の問題ですか? 何らかの方法でこれを修正/防止/回避できますか?
編集: 私は、FritzBox (ホーム ルーター) VPN (どうやら「cisco」スタイルですが、このトピックの専門家ではありません) と Ubuntu 16.04 を使用して外部からアクセスしています。
また、ノート PC で携帯電話回線経由でテストすると、問題は発生しないことに気付きました。この問題は、制限のあるファイアウォールの背後にあるリモート サイトにいる場合にのみ発生します。ただし、VPN は一般的には機能しますが、sshfs の側面 (および X 転送) のみが問題となるようです。
答え1
おそらく、VPN のオーバーヘッドによって MTU の問題が発生していると思われます。MTU を増やしても問題は解決しません。MTU がメディアで使用可能な最大パケット サイズよりも大きくなるためです (LAN のみの環境ではジャンボ フレームを使用していないものと想定しています)。
実際、解決策としてはトンネル デバイスの MTU を減らすことが考えられます。
VPN またはルーターを指定していません。この問題を解決するには、OS レベルで MTU をクランプします。また、OpenVPN を使用している場合は、mssfix などのパケットを断片化するためのディレクティブがあります。https://www.sonassi.com/help/troubleshooting/setting-correct-mtu-for-openvpnまたフラグメントオプションもあります -https://blog.hambier.lu/post/solving-openvpn-mtu-issues