
新しいバージョン
それで、わかりやすくするために、私が持っているもののリストを作成します。
- PlexメディアサーバーとKittyを実行しているWindows 10のPC
- Debian 9 Stretch で動作する OVH の VPS
私が欲しいもの:
- ローカルネットワーク外からサーバーにアクセスしたい
どうやって :
- VPSをPlexサーバーへのトンネルとして使用することで
問題 :
- サブスクリプション付き ISP 側 4G/LTE ルーターからの動的 IP ダブル NAT
- ポート転送は不可能
問題 :
- PC(Windows 10)でIPが「毎日」変更されると、Kitty経由のVPSへの接続がクラッシュします。
問題の手動解決:
- ポートを開いたままにしているプロセスのPIDを見つけてそれを強制終了します
必要なもの:
- それを自動で行うか、問題に対する別の解決策を用意する
理解を助ける写真
質疑応答
ピンプジュースIT: ありがとう^^ いずれにせよ、no-ip ツールも私にはぴったりのようです。しかし、ISP には二重 NAT があり、基本的には私の後ろにある 2 番目の「ルーター」で 1 つの no-ip ソフトを実行する必要があります。これは不可能だとあなたも同意するでしょう^^。私の問題は本当に単純ですが、確かに、この問題を解決する方法は単純なように思えるので、困惑しています。しかし、正しい方法がわかりません :/
追伸:はい、心配しないでください。古いバージョンは私が望んでいたものの大きな草稿です ^^ 新しいバージョンには、私を助けるために必要なものがすべて揃っていると思います :/ ^^
Old version
私は OVH の VPS を持っていて、それを使って PLEX 上のメディア サーバーを PC から VPS にトンネルしています。すべて順調に動作していますが、次の点が問題です...
私の IP は動的で、二重 NAT されています。外部 IP は頻繁に変更され、少なくとも 1 日に 1 回は更新されます。そのため、Kitty (PuTTY のフォーク) を介した VPS への接続が切断されます。これは、接続中断後の自動再接続で解決しました。いずれにしても、それが完了すると、KiTTY で指定したポート トンネリングが失敗します。これは、以前の接続が適切に閉じられなかったためです。
サーバー側はDebian 9 Stretchです。
私は、接続のPIDを見つけてそれを削除するという解決策を見つけました手動で. これが私の問題です。スクリプトを使用してそれを自動化したいと考えています。ここで、誰かが手を貸してくれることを願って、皆さんの助けを求めます。
P.S.: 私のスクリプト作成スキルは、見た目ほどではないので、できるだけ明確にお願いします。
いくつかのコメントへの回答
スコット– IP アドレスが変わると接続がクラッシュします。KiTTY のおかげですぐに再接続できます。コマンド ラインに と入力するだけで、有効な接続がすべて表示されます。指定されたポート (この場合は) にリンクされている接続とそれに関連付けられている PID
netstat -lnp
を見つけて、 でその接続を強制終了します。前回の PID は、たとえば次のとおりです。32400
PID
kill
12007
カミル・マチョロフスキ– 私はこれを試しました(別の質問に対するこの答え):
ファイルを編集して永続的に変更するには
/etc/sysctl.conf
、以下を追加します。net.ipv4.tcp_keepalive_time=300
そして
sshd
サーバー上で再構成できる場合、これが最もエレガントな方法だと私は思います。sshd_config
次のような行を含めます。ClientAliveCountMax 3 ClientAliveInterval 15
しかし、どちらも私の場合は機能せず、接続のクラッシュをシミュレートすると再接続され、ポートは引き続き占有されます。
また、以下の解決策は
クライアントに戻る
自分の状況に合うように調整できた場合にのみ、私にとってはうまくいくように思えます。
「しかし、どちらも私の場合は機能せず、接続のクラッシュをシミュレートすると再接続され、ポートはまだ占有されたままになります」 – sshd を再起動しましたか? すぐに再接続を試みましたか? これらの設定では、ポートが解放されるまで最大 1 分待つ必要があります。 – Kamil Maciorowski
はい、次のコマンドでSSHDを再起動しました:
/etc/init.d/ssh を再起動
安全のためにsshdを再起動します
サービスsshdを再起動
再接続は自動で瞬時に行われます。現在、このプロセスを遅らせる方法を探しています。方法がわかっている場合は教えてください。ありがとうございます。
net.ipv4.tcp_keepalive_time=300
300 秒ではなく 10 秒に設定しましたが、それでも大丈夫ですか。
また、2 つのセッションを一度にロードして 2 番目のセッションを修正するという 2 番目のコメントがよくわかりませんでした。私の目標は、自動化されている実際のセッション プロセスを再開することだけです。今はポートを解放して、新しいボンドで再度開く必要があります。
明確化: 上記のコメントには、サーバーから締め出されないようにする一般的な方法があります。sshd_config をひどく壊してしまった場合、新たに ssh することはできません。そのため、古い接続で変更を元に戻せるうちに、常に新しい接続でテストする必要があります。一般に、構文的に有効な sshd_config があっても接続できない可能性があることに注意してください。そのため、エラーなしで sshd を再起動しても、必ずしも機能するとは限りません。 – Kamil Maciorowski
結局、このプロセスを自動化し、ポートをより短い時間で解放するための解決策と、スクリプトなどでキティの再接続を遅らせる方法は何ですか?もう一度、時間を割いてくれてありがとう。
「再接続は自動で瞬時に行われます。このプロセスを遅らせる方法を探しています」 – KiTTY は遅延なく再接続を試みるということですか? Linux のクライアント側では、autossh または ssh -o ExitOnForwardFailure=yes をループすることで簡単に解決できます (この回答を参照)。 Cygwin の ssh はこのオプションをサポートしていると思います。 サーバー側のスクリプトにこだわるなら、できると思います。ただし、古いトンネルでない場合は、スクリプトでトンネルを終了してはいけません。 今は、このような面倒な解決策を提供する時間がありません。 おそらく 12 時間後でしょう。 – Kamil Maciorowski
わかりました。ありがとうございます。とにかく 12 時間以内にお会いしましょう。それまでに他の解決策をすべて試してみます。結果をお知らせします。ありがとうございました。