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


1

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を使用して外部からアクセスしています。

また、ラップトップで携帯電話回線を使用してこれをテストすると、問題が発生しないことに気付きました。制限的なファイアウォールの背後にあるリモートサイトにいるときにのみ発生します。ただし、VPNは一般に機能し、sshfsの側面(およびXフォワーディング)のみに問題があるように見えることに注意してください。

回答:


2

ほとんどの場合、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


ご回答有難うございます。VPNなどの詳細を追加しました。接続の実行中にMTUをオンザフライで変更できますか?の出力に反映されますがifconfig、使用されるかどうかはわかりません。(家にいる間)まだ効果がありません。MTUを10000などの大きな値に設定しても、ここで問題を生成することはできません。明日、リモートサイトでMTUを減らして、そこで役立つかどうかをテストします。
アルフェ

MTUサイズを1000バイトに減らした後、問題はなくなりました。また、X転送が機能するようになりました。同僚はまた、MTUサイズを縮小することでこのような問題を解決したと述べました。だから、これはかなり堅実な解決策のようです;-)ありがとう!
アルフェ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.