私は他の都市の部屋にLinux PC(Debian Squeeze)を持っています。 (私がいるところではこのPCに物理的にアクセスできません。)
このコンピュータはインターネットボックスを使用してインターネットに接続されています。ポート22を介してSSHを使用してこのPCに接続できます(実際にはリモートボックスのポートXXXXからPCのポート22へのNATがあります)。
同僚の一人が3Gキーを接続しました。その後、使用します。サキススクリプトこのコンピュータを3Gネットワークに接続しましたが、SSH接続が中断されました(パイプ破損)。私の同僚はまだSSHを使用してローカルネットワークからPCにアクセスできます。
3G接続が外部SSH接続を停止するのはなぜですか?この問題を解決する方法(3G接続の確立中にSSH接続を開いたままにする)?
編集:追加情報
3Gスクリプトが起動する前にNATを使用して接続します。
eth0のIPは変更されていません(接続に使用されるインターフェイス)。
3G接続後に新しいインターフェイスを追加する:ppp0 Link encap:Point-to-Point Protocol
IPルーティング(3G接続前)
172.16.210.0/24 dev br0 proto kernel scope link src 172.16.210.254
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.50
default via 192.168.0.254 dev eth0
IPルーティング(3G接続後)
10.64.64.64 dev ppp0 proto kernel scope link src 10.99.122.183
172.16.210.0/24 dev br0 proto kernel scope link src 172.16.210.254
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.50
default via 10.64.64.64 dev ppp0
答え1
スクリプトを実行した後、デフォルトパスは別のインターフェイスを指します。 SSH接続のデータがそこに送信されましたが、アドレスが間違っているか、3Gネットワークで無関係なアドレスおよび/または他のアドレスにNAT処理されたために削除されました。
回避策:明示的なルーティングを追加します。 $SSH_CLIENT変数は、接続がどこから来るかを示します。
# set $SSH_CLIENT
# ip route replace $1 via 192.168.0.254 dev eth0
問題は解決します。