SSHFS over VPN が大きなチャンクでフリーズする

SSHFS over VPN が大きなチャンクでフリーズする

私は 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

関連情報