インターネットがしばらくダウンしたら、SSH接続をアクティブにしてください。

インターネットがしばらくダウンしたら、SSH接続をアクティブにしてください。

雇用主のワイヤレスネットワークは数秒間オフラインになり続けます。これにより、私が積極的に使用していないSSHセッションの接続が切断されます。 Wi-Fiが一時停止しても接続を維持する方法はありますか?

答え1

私もこの問題に直面しました。ワーカーサーバーでセッションを開始し、接続が再確立されたtmux後に再接続すると、中断した部分から簡単に開始できます。

答え2

考えられる解決策は、SSHセッションの宛先とその権限に基づいて閉じられない他のインターフェイスを設定することです。

VPNを使用すると可能です。たとえば、完全なVPN(openvpn、wireguard、ビジネスVPN)、またはsshオン/オフで構築されたVPNです。tun

答えの終わり

ここで設定方法について少し説明します(他の設定もたくさんあります)。

私の場合、インターフェイスはダウンし、数時間ごとに異なるパブリックIPアドレスが表示されます。私が興味を持っているセッションは単一のネットワーク上のホストに属しているので、私のソリューションはあるデバイスが私のtun側にあり、もう一方のデバイスが私がアクセスしたいネットワーク上のトンネルです。

たとえば、起動時に各側にデバイスを一度だけ作成します(rootユーザーである必要があります)。

ip tuntap add dev tun5 mode tun user youruser group yourgrup
ip address add 10.0.0.1/32 peer 10.0.0.2/32 dev tun5

(反対側の住所を逆にしてください)

次に、適切な-w local_tun[:remote_tun]オプション(この場合-w 5:5)を使用して、ホストから別のホストに正常に接続します。tunこのユーザー/グループ用にデバイスを作成したので、特別な権限は必要ありません。

tun5この時点で、代替アドレス10.0.0.xのホスト間でpingを実行し、他のネットワークデバイスと同様に、デバイスのポリシー、NAT、ルーティング、およびすべてのエントリを設定できます。

もしそうなら、リンクが壊れたらどうなりますか?この時点で、ssh両方のtunデバイスを接続するセッションは終了しますが、tunデバイス自体は終了せず、単にデータをバッファリングし、接続が再接続されるとトラフィックは再開されます。

リンクsshセッションを再開するのは退屈であり、これはautosshここから始まります。必要に応じてセッションが再開されます。

切断を維持したいプロセスがそのインターフェイス(IP、ルーティング、NATなど)を使用していることを確認してください。全体的な設定は過度に見えるかもしれませんが、DDNSクライアントでも機能します。 DNSが変更に追いつくと、セッションがリセットされ、tunデバイスを使用しているクライアントが再開されます。

答え3

一般的に、TCP接続は短い切断に対して安定しています。設定によって異なりますが、デフォルトではTCPは少なくとも60秒間保持する必要があると思います。

ただし、これはあなたのIPアドレス(/ NATルーターのIPアドレス)が変わらないと仮定します。それ以外の場合は、TCPが処理できる操作ではありません。

この信頼できない接続には、次のようなきちんとしたツールがあります。mosh、頻繁な再接続、IPアドレスの変更、およびその他の干渉を介してSSH接続を維持することをお勧めします。

UDPの上にTCPとは異なるフロー制御プロトコルを実装し、サーバーでUDPソケットを開いてこれを実行します。したがって、これにはリモートホストがUDPポートを開くことができなければなりません。これは通常厳密な制限ではありません。

答え4

~/.ssh/config ファイルを設定してみることができます。

Host *
    ServerAliveInterval 10
    ServerAliveCountMax 60

各パラメータが何であるかについての良い説明を見つけることができます。ここ

関連情報