新しいバージョン

新しいバージョン

新しいバージョン

それで、わかりやすくするために、私が持っているもののリストを作成します。

  • PlexメディアサーバーとKittyを実行しているWindows 10のPC
  • Debian 9 Stretch で動作する OVH の VPS

私が欲しいもの:

  • ローカルネットワーク外からサーバーにアクセスしたい

どうやって :

  • VPSをPlexサーバーへのトンネルとして使用することで

問題 :

  • サブスクリプション付き ISP 側 4G/LTE ルーターからの動的 IP ダブル NAT
  • ポート転送は不可能

問題 :

  • PC(Windows 10)でIPが「毎日」変更されると、Kitty経由のVPSへの接続がクラッシュします。

問題の手動解決:

  • ポートを開いたままにしているプロセスのPIDを見つけてそれを強制終了します

必要なもの:

  • それを自動で行うか、問題に対する別の解決策を用意する

理解を助ける写真

キティのログのIP変更後

手動で問題を解決する方法

質疑応答

ピンプジュース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 のおかげですぐに再接続できます。コマンド ラインに と入力するだけで、有効な接続がすべて表示されます。指定されたポート (この場合は) にリンクされている接続とそれに関連付けられている PIDnetstat -lnpを見つけて、 でその接続を強制終了します。前回の PID は、たとえば次のとおりです。32400PIDkill12007

カミル・マチョロフスキ– 私はこれを試しました(別の質問に対するこの答え):

ファイルを編集して永続的に変更するには/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 時間以内にお会いしましょう。それまでに他の解決策をすべて試してみます。結果をお知らせします。ありがとうございました。

関連情報