新版本

新版本

新版本

所以,為了更清楚,我將列出我所擁有的東西。

  • Windows 10 上的 PC,運行 Plex 媒體伺服器和 Kitty
  • OVH 的 VPS 在 Debian 9 Stretch 上執行

我想要的是 :

  • 想要從本地網路以外的任何地方存取我的伺服器

如何 :

  • 使用 vps 作為通往 Plex 伺服器的隧道

問題 :

  • 來自 ISP 端 4G/LTE 路由器的動態 ip Double Nat(訂閱)
  • 無法進行連接埠轉發

問題 :

  • 當 PC(Windows 10)上的 ip「每天」變更時,透過 kitty 到 vps 的連線會崩潰

手動解決問題:

  • 找到保持連接埠開啟的進程的 PID 並將其殺死

我需要的 :

  • 自動執行此操作或有其他解決方案來解決該問題

圖片幫助你理解

Kitty日誌中的ip變更後

手動解決問題的方法

問答

皮條客果汁 IT:謝謝 ^^ 無論如何,no-ip 工具在我看來也很合適。但由於 ISP 有雙 NAT,基本上我必須在我後面的第二個「路由器」上運行一個 No-ip 軟體。這是你不可能同意的^^。我的問題確實很簡單,但確實很煩人,因為解決這個問題的方法似乎很簡單。但無法找到正確的方法:/

PS:是的,別擔心,舊版本只是我想要的一個大草稿^^在新版本中你已經擁有了所有你需要幫助我的東西,我猜:/^^

Old version

我有一個 OVH 的 VPS,我用它來將 PLEX 上的媒體伺服器從我的 PC 傳輸到 VPS。一切都很好並且工作正常,除了......

我的 IP 是動態的並且經過雙重 NAT。我的外部 IP 經常更改和更新,至少每天一次。因此,我透過 Kitty(PuTTY 的一個分支)與 VPS 的連接中斷了。我透過連線中止後自動重新連線解決了這個問題。無論如何,當完成後,我在 KiTTY 中指定的連接埠隧道將會失敗,這是因為先前的連接沒有正確關閉。

對於伺服器端,它是 Debian 9 Stretch。

我找到了解決方案,即找到該連接的 PID 並將其殺死手動。這是我的問題,我想用腳本自動化它。在此,我呼籲大家伸出援手,希望大家能夠伸出援手。

Ps:我的腳本技能看起來很低,所以盡可能清楚,謝謝。


對一些評論的答复

史考特– 當我的 IP 位址變更時,連線會崩潰。多虧了 KiTTY,它馬上就會重新連結。我會在命令列中輸入netstat -lnp,它會顯示所有活動的連接。我會找到與指定連接埠(在本例中為 )連結的連接埠32400以及關聯的 PID,然後使用 殺死該PID連接埠kill。上次的PID就是12007例子。

卡米爾·馬喬羅夫斯基– 我嘗試過這個(指這是對另一個問題的回答):

透過編輯文件永久/etc/sysctl.conf添加:

net.ipv4.tcp_keepalive_time=300

如果你可以sshd在伺服器上重新配置,我認為這是最優雅的方式。讓sshd_config包含如下行:

ClientAliveCountMax 3
ClientAliveInterval 15

但是當我模擬連接崩潰時,這些對我都不起作用,它將重新連接並且連接埠仍然被佔用。

還有下面的解決方案

回到客戶端

只有當我能夠使其適合我的情況時,才似乎為我工作。

「但當我模擬連接崩潰時,這些對我都不起作用,它會重新連接,並且連接埠仍然被佔用」 – 您重新啟動 sshd 了嗎?您是否嘗試立即重新連線?使用這些設置,您最多需要等待一分鐘才能使連接埠空閒。 ——卡米爾‧馬喬羅夫斯基

是的,我確實使用以下命令重新啟動了 SSHD:

/etc/init.d/ssh 重新啟動

為了安全起見,因為我不知道重新啟動 sshd

服務 sshd 重新啟動

重新連接是自動且即時的,我現在正在尋找一種方法來延遲此過程,如果您知道如何,請告訴我,謝謝,以便您知道:

net.ipv4.tcp_keepalive_time=300

我設置為 10 秒而不是 300 仍然可以。

另外,我不太明白您關於一次加載兩個會話的第二條評論,用第二個會話修復它,我的目標是重新啟動實際的會話過程,該過程是自動化的,現在需要釋放端口,以便我可以重新打開它與新債券。

澄清:在我上面的評論中,有一種通用方法可以防止將自己鎖定在伺服器之外。如果你對 sshd_config 的破壞夠嚴重,你將無法重新進行 ssh。這就是為什麼您應該始終使用新連接來測試它,而舊連接仍然允許您恢復更改,無論如何。請注意,一般來說,有可能具有語法上有效的 sshd_config 但仍然無法連接;因此重新啟動 sshd 而沒有任何錯誤並不一定意味著它會起作用。 ——卡米爾‧馬喬羅夫斯基

那麼最後,我的解決方案是什麼,使這個過程自動化,並在較短的時間後釋放端口,以及如何使用腳本或其他東西延遲 kitty 中的重新連接?再次感謝你的時間我很感激

「重新連接是自動且即時的,我現在正在尋找一種方法來延遲此過程」——您的意思是 KiTTY 嘗試立即重新連接,對嗎?在客戶端的 Linux 中,您的問題可以透過 autossh 或循環 ssh -o ExitOnForwardFailure=yes ... 輕鬆解決(請參閱此答案)。我認為Cygwin下的ssh應該支援這個選項。如果你堅持使用伺服器端腳本,我想這是可以做到的;但如果不是舊隧道,腳本不得殺死隧道。我現在沒有時間提供如此繁瑣的解決方案;也許12小時後。 ——卡米爾‧馬喬羅夫斯基

好的,謝謝,無論如何,我會在 12 小時內見到你,在那之前我會嘗試所有其他解決方案,我會讓你知道情況如何,再次感謝夥計。

相關內容