無法轉送連接埠

無法轉送連接埠

我花了一天時間研究如何將連接埠從路由器轉發到我的電腦,但沒有成功。現在我失去了線索……並且感到沮喪。我看過很多帶有描述和可能的解決方案的頁面,但不知何故我沒有看到正確的答案。所以,請原諒,如果這是一個重複的問題,那不是我的看法。

這就是我嘗試做的事情:我希望在工作時可以存取家裡的電腦。為此,我使用 ddns 服務。

有些方案有效,有些則無效:這是我的「標準」配置。

我有兩台電腦,一台桌上型電腦和一台筆記型電腦。我在兩者上都有一個 SSH 伺服器 (bitvise) 和一個 SSH 客戶端 (PuTTY) 桌上型電腦運行 Windows 10,筆記型電腦運行 Windows 7。對我來說,兩台電腦上的連接埠22 均已開啟。正確的?

ISP
 |
ZyXEL VMG8324-B10A (forward port 22 to 192.168.1.105)
 | .1  (192.168.1.x)
 |
 +- .105 PC (desktop, W10, SSH server on port 22)
 |
 +- .107 PC (laptop, W7, SSH server on port 22)

ddns 服務讓我可以連接到我的家庭網路。如果我嘗試連接連接埠 80,我只會看到路由器的登入螢幕,沒有任何問題。我什至嘗試使用第二個路由器配置連接埠 8080,並將原始伺服器將連接埠 8080 轉發到第二個伺服器。沒問題。

這就是該設定的樣子。

ISP
 |
ZyXEL VMG8324-B10A (forward port 8080 to 192.168.1.2)
 | .1  (192.168.1.x)
 |
 | .2
LinkSys E3000 (configuration available on port 8080)
 | .1  (10.233.1.x)

我成功地透過 ddns 提供者連接到 LinkSys 的配置(在連接埠 8080 上)。那裡沒有問題。正確的?

如前所述,我可以在 192.168.1.105 SSH 客戶端到 192.168.1.107 SSH 伺服器之間建立連接,也可以在 192.168.1.107 SSH 用戶端到 192.168.1.105 SSH 伺服器之間建立連接。

但我無法透過 ddns 連接到任何 SSH 伺服器。

現在,我可以看到 ZyXEL 和 LinkSys E3000 的設定頁面(連接埠 80)(轉送連接埠 8080 有效)。為什麼22埠不起作用?

以下是 ZyXEL 中的轉送規則:

# Status Name      WAN WAN_IP ServerIP      TriggerStart End TranslationStart End Protocol
1 active SSH       wan -      192.168.1.105 22           22   22           22   TCP/UDP
2 active http8080  wan -      192.168.1.105 8080         8080 8080         8080 TCP/UDP

這裡沒什麼奇怪的。 PC 和筆記型電腦之間可以進行 SSH 通信,這沒什麼奇怪的。我必須在哪裡尋找從 ddns 到 PC 的通訊?我忘了什麼?

歡迎任何建議!

編輯:2016 年 9 月 5 日。

問題解決了!在下面答案的幫助下,我能夠解決一些設定問題,幾分鐘前,我能夠將 RDC 從我的 Android 裝置轉移到我的 PC 上。好的!

答案1

您寫道您位於網路內部,並且發生以下情況:

ddns 服務讓我可以連接到我的家庭網路。如果我嘗試連接連接埠 80,我只會看到路由器的登入畫面

這表示您的路由器不支援 NAT 環回。要正確測試連接埠轉發,您需要位於本機網路之外。例如,您可以使用具有行動寬頻的手機進行測試。

大多數消費級路由器預設會過濾 Ping。當然,這就是透過默默無聞實現的安全。它還使診斷問題變得不必要的困難,因此您可以停用該選項。

另外:
您的路由器的內部軟體也無法正常運作。當您瀏覽到外部 IP 位址時,Web 介面將會開啟。這是非常危險的!在不了解您的內部網路結構的情況下,攻擊者可以透過跨站點腳本等方式控制您的路由器。

答案2

“我可以建立從桌上型電腦到筆記型電腦的 SSH 連接,反之亦然,這表明連接埠 22 在兩台電腦上都已打開。對嗎?”

是的。這表示 SSH 伺服器正在運行,並且沒有基於軟體的防火牆(在任一電腦上)阻止該流量。

請注意,這並不意味著您可以從另一個網路透過 SSH 登入。 Windows 防火牆可以套用不同的規則,這取決於網路是「專用」、「公共」還是「訪客」。因此,僅僅因為軟體防火牆允許一個連線並不意味著另一個連線也可以運作。我並不是說這可能是您問題的根源,但如果是的話,如果您不考慮它,則很難檢測到它。

我還要確保您了解什麼是“開放連接埠”。我們指的是 TCP 連接埠號碼和 UDP 連接埠號碼。這些“端口”只是數字。當「連接埠」開啟時,這表示可以與該連接埠建立連線。

因此,當有人嘗試向您家的 IP 位址發送 SSH 請求時,您的 ISP 會盡責地將流量傳遞到您建築物中的路由器上。如果結果是連線成功,則連接埠已開啟。

現在,路由器可以透過兩種方式處理該流量,從而使連接埠開啟。

  • 其中一種方法是讓路由器運行響應該連接埠的程式。因此,對於連接埠 22,這通常意味著路由器將運行 SSH 伺服器。 (對於連接埠 80,這通常意味著路由器正在運行 HTTP 伺服器,我們通常稱之為「Web 伺服器」。)

  • 另一種可能的方法是路由器將流量傳遞到另一個裝置。這通常是透過將流量傳送到另一個子網路上的裝置來完成的。當設備執行此操作時,它會“路由”流量。這就是為什麼我們經常稱這些東西為「路由器」。

為了使第二種方法起作用,路由器需要知道將流量傳送到哪個系統。這可以使用稱為“連接埠轉送”的過程來完成。所有「連接埠轉送」真正涉及的是告訴路由器流量預計到達哪個連接埠號,然後流量到達哪個系統。

現在,如果您檢查路由器配置,您可能會發現「連接埠轉送」部分是空白的。那麼,在這種情況下如何路由 SSH?很多路由器都有一個稱為「非軍事區」的設定部分,通常縮寫為「DMZ」。這個 DMZ 的工作方式其實只是連接埠轉送的一個相當特殊的規則。您最終指定路由器將使用哪台計算機,並且路由器會將所有連接埠傳送到該計算機,除非在「連接埠轉送」部分中指定了更具體的規則。我認為大多數路由器通常不會將 DMZ 放入連接埠轉送部分,也許是因為 DMZ 配置可能會導致路由器轉送 IP 流量而不僅僅是這些連接埠。

一般來說,您只能對連接埠22 上的傳入流量執行一件事 好的,所以我想可以執行不只一件事,例如將來自西雅圖辦公室的流量發送至筆記型電腦,而將來自東京的流量發送至筆記型電腦。然而,如此複雜的設定並不常見。更常見的是讓連接埠轉送至您的另一台電腦發送不同的連接埠(例如,可能是 2222),並讓該電腦偵聽非標準連接埠。

(或讓路由器進行一些轉換,以便連接埠 2222 上的傳入流量被重新導向到另一台電腦的標準連接埠 22。但是接收流量的電腦甚至不必知道連接埠 2222 已被使用。隱藏此類資訊可以讓日誌變得不那麼有用,然後你需要記住路由器正在做這樣的轉換,相反,你只需監聽端口2222,事情通常會更清楚。

請注意,ICMP(由 ping 和多個追蹤路由實現使用)不使用 TCP 連接埠或 UDP 連接埠。 (ICMP 位於 IP 之上。但是,即使 IP 使用 OSI 網路模型的“第 3 層”,ICMP 並不能真正成為 OSI 模型“第 4 層”上的協議,因為它不提供典型的對話追蹤功能,傾向於區分「第4 層」協定。

現在您會看到,在路由器上開啟連接埠 22 不一定有助於兩台電腦取得 SSH 流量。

了解您的 ZyXEL 可能有兩個 IPv4 位址(假設您的網際網路使用 IPv4)。一個是 192.168.1.1。這個地址可以安全地告訴我們,因為它是在RFC 1918。另一個是公共廣播。聽起來地址改變了(因為您使用了 DynDNS)。不要告訴我們那個地址。 (對於對話,您可以假裝它以“203.0.113”開頭,這實際上是為範例/文件保留的一組地址,例如RFC 5735 第 5 頁.)

如果不使用動態 DNS,而是從 ISP 取得靜態 IP,您可能會更輕鬆。我知道我所在的地方(美國)有一家 ISP 可以根據要求免費提供靜態 IP(向客戶)。他們可能想向您收費(如果是這樣,您可能還想詢問 /29 的價格是多少,/29 是 8 個區塊,其中 5 個通常可供客戶使用)。這並不是說您的動態 DNS 路由無法工作,但我只是拋出另一個選項供考慮。

ddns 服務讓我可以連接到我的家庭網路。如果我嘗試連接連接埠 80,我只會看到路由器的登入螢幕,沒有任何問題。

您沒有說連接到連接埠 80 時使用什麼 IP 位址。如果事實確實如此,那麼最後一段丹尼爾 B 的回答這是一個非常有效的警告。消費級路由器因其 Web 介面沒有足夠的安全性而臭名昭著,因此請尋找指定只能使用有線 LAN 連線存取您的 Web 介面的選項。 (不要相信來自互聯網或 Wi-Fi 的連接。)

相關內容