題 什麼是端口轉發及其用途?


有很多問題 '轉發端口' 但似乎沒有一個明確說明它是什麼以及它用於什麼。所以:

  1. 什麼是港口轉發?

  2. 它用於什麼,為什麼我需要它?


195


起源


我認為這很好: portforward.com/help/portforwarding.htm - Koray Tugay


答案:


基礎

要真正解釋端口轉發,首先需要了解更多關於端口轉發的信息 路由器 確實。您的互聯網服務提供商指定  您的互聯網連接的IP地址。互聯網上的所有計算機都需要一個唯一的IP地址,但您家中有多台計算機,只有一個地址。那怎麼辦?

如果你知道它是什麼,只是想知道如何做到這一點http://portforward.com/ 有數百種不同路由器的屏幕截圖方法。文檔隱藏在廣告頁面後面,用於自動portconfig工具。 (只需點擊一下即可找到它。)

NAT - 它是什麼?我們為什麼用它?

您的家庭路由器具有內置的網絡地址轉換功能或NAT功能。在您的網絡中,計算機的地址類似於192.168.1.100。 192.168。*範圍(或10. *)範圍內的所有地址均為 私人的 要么 保留的 地址。這些地址由IANA正式分配,以便在專用網絡內使用。您的路由器會自動為通過其連接的每台計算機分配這樣的地址 DHCP。這些地址是網絡中的計算機與路由器之間以及彼此之間的通信方式。

您的路由器具有單獨的網絡接口,可將其連接到Internet。此接口具有非常不同的地址,由ISP分配。這是我之前提到的一個地址,您的路由器使用它與互聯網上的其他計算機進行通信。網絡內的計算機有 不可路由 私有IP地址,這意味著如果它們直接將數據包發送到互聯網,數據包將自動被丟棄(出於穩定性原因,不允許具有私有地址的數據包通過互聯網)。但你的路由器有一個 路由 地址。網絡地址轉換,顧名思義, 轉換 在這兩種地址之間,允許網絡內的多台計算機作為一台具有一個地址的計算機出現在互聯網上。

細節

雖然這可能聽起來很複雜,但實際上路由器的操作非常簡單。每當網絡中的計算機想要連接到互聯網上的計算機時,它就會將連接請求發送到路由器(它知道將其發送到路由器,因為它的 默認網關 參數設置為路由器的地址)。然後路由器接受該連接請求(TCP / IP中的“SYN請求”)並更改源地址(“回复”或返回地址)並將其從計算機的專用IP更改為公共IP。路由器,以便將響應發送到路由器。然後在數據庫中記錄(稱為 NAT表)連接已啟動,以便以後記住它。

當響應從遠程計算機返回時(“SYN-ACK”),路由器查看其NAT表並發現該端口上與該主機的連接先前是由網絡上的專用計算機啟動的,更改了目標地址到計算機的私有地址,並將其轉發到您的網絡中。通過這種方式,數據包可以繼續在網絡之間來回傳輸,路由器可以透明地更改地址以使其正常工作。當連接終止時,路由器只是將其從NAT表中刪除。

或者這樣想吧

用隱喻來形象化可能會更容易一些 - 比方說你是美國的一家貨運代理商,與中國客戶合作。他們需要向美國的許多客戶發送包裹,但由於海關/文書工作的原因,只能將包裹發送到一個地方。因此,一個包裹來自您在中國的一個客戶(在此示例中為私人網絡),其中包含美國某個地方(互聯網)的實際目的地。您將包裝盒上的地址標籤更改為美國(公共)地址,並將退貨地址更改為您自己的公共地址(因為它不能直接返回中國而不會給客戶帶來不便)並將其交給郵政服務。如果客戶退回產品,則會找到您。您可以在記錄中查看它,看看它來自中國的公司,並將目的地更改為該公司(其私人地址),並將返回地址更改為您的私人地址,以便他們可以通過您發回替換件。

這很好用,但有一點問題。如果客戶需要向公司發送內容,假設付款的匯票怎麼辦?或者,假設互聯網上的計算機啟動與路由器的連接(SYN請求),比如說網絡中的Web服務器。字母/數據包只有路由器的公共地址,所以路由器實際上不知道在哪裡發送它!它可以用於專用網絡上的任何計算機,或者不用於任何計算機。當你打電話給別人的家庭電話時,你可能會遇到這個問題 - 當他們打電話給你時沒問題,但是當你打電話給他們時,他們無法知道是誰的呼喚,所以錯誤的人可能會回答。

雖然人們很容易對此進行排序,但對於計算機而言卻更為棘手,因為並非網絡上的每台計算機都知道所有其他計算機。

最後我們到達Port Forwarding

端口轉發是我們解決這個問題的方法:它是一種告訴路由器網絡內部計算機應該指向哪個計算機的方法。我們有三種不同的方式可以做到這一點:

  • Faux-DMZ:很多路由器都有一個名為DMZ的功能。這代表非軍事區,這是一種網絡安全配置。家用路由器上的DMZ通常被稱為faux-DMZ,因為它缺乏實際DMZ的功能。它所做的是最簡單的傳入連接處理:所有傳入的連接請求將被發送到網絡中指定的一個。這很簡單 - 你在路由器的配置中鍵入一個IP地址,所有傳入的連接都在那裡。但是,這並不總是有效,因為您可能有多台計算機需要接受傳入連接。為此,我們......
  • 端口轉發:所有網絡連接請求都包含“端口”。端口只是一個數字,它是計算機如何知道數據包的一部分。 IANA已指定端口80用於HTTP。這意味著表示端口號為80的傳入數據包必須是用於Web服務器的請求。路由器上的端口轉發允許您輸入端口號(或可能是一個範圍或數字組合,具體取決於路由器)和IP地址。具有匹配端口號的所有傳入連接將轉發到具有該地址的內部計算機。
  • UPnP端口轉發:UPnP轉發的工作方式與端口轉發完全相同,但網絡內部計算機上的軟件不會自動設置,而是自動設置路由器將給定端口上的流量轉發給它。


一個例子

我們來看一個用法示例。許多多人視頻遊戲(例如,反恐精英)允許您在計算機上運行遊戲服務器,其他人可以連接到該遊戲服務器以便與您玩遊戲。您的計算機並不知道所有想要播放的人,​​因此無法連接到他們 - 相反,他們必須通過互聯網向您的計算機發送新的連接請求。

如果你沒有在路由器上設置任何東西,它會收到這些連接請求,但它不知道網絡中哪台計算機有遊戲服務器,所以它會忽略它們(或者更具體地說,它會發送返回一個表示無法連接的數據包)。幸運的是,您知道遊戲服務器連接請求的端口號。因此,在路由器上,使用遊戲服務器期望的端口號(例如,27015)和具有遊戲服務器的計算機的IP地址(例如,192.168.1.105)設置端口轉發。
路由器將知道將傳入的連接請求轉發到網絡內的192.168.1.105,並且外部的計算機將能夠連接。

另一個例子是具有兩台機器的本地網絡,其中第二台具有IP 192.168.1.10的網絡使用Apache託管網站。因此,路由器應將傳入端口80請求轉發到此計算機。使用端口轉發,兩台計算機可以同時在同一網絡中運行。

Port Forwarding Example

視頻遊戲可能是日常用戶遇到端口轉發最常見的地方,儘管大多數現代遊戲都使用UPnP,因此您不必手動執行此操作(相反,它是全自動的)。只要您希望能夠直接連接到網絡中的某些內容(而不是通過互聯網上的某個中介),您就需要這樣做。這可能包括運行您自己的Web服務器或通過遠程桌面協議連接到您的某台計算機。

關於安全的說明

NAT的一個好處是它提供了一些免費的內置安全性。很多人在網上閒逛尋找易受攻擊的機器......他們通過嘗試打開與各種端口的連接來實現這一點。這些是傳入連接,因此,如上所述,路由器將丟棄它們。這意味著在NAT配置中,只有路由器本身容易受到涉及傳入連接的攻擊。這是一件好事,因為路由器比運行具有大量軟件的完整操作系統的計算機更簡單(因此更不容易受到攻擊)。您應該記住,通過DMZing網絡中的計算機(將其設置為DMZ目的地),您將丟失該計算機的安全層:它現在完全對來自Internet的傳入連接開放,因此您需要確保它好像是直接連接的。當然,無論何時轉發端口,接收端的計算機都會在該特定端口上變得容易受到攻擊。因此,請確保您運行配置良好的最新軟件。


288



+1。非常感謝你這麼棒的短期課程。問候, - Xavierjazz
現在讓我們添加一些圖形! - slhck
漂亮的圖形。幹得好,slhck。 - jcrawfordor
您簡要提到過它,但您可能想要闡述DMZ風格的端口轉發使用的重要性。我想不出一個單一的實例,在生產環境下,向外部世界公開類似sql server(或其他)的東西是個好主意。端口轉發可以在不嚴重危及安全性的情況下獲取受保護的資源。 - Brian Vandenberg
在NAT部分中未擴展的一個細節是,如果網絡上的計算機使用DHCP獲取其內部不可路由的私有IP地址,則分配給它們的計算機可能會發生變化,如果發生這種情況,端口轉發將會搞砸了。最好通過手動設置每台計算機的網絡尋址來避免這種情況。 portforward.com強調了這一點的重要性,並提供了一個描述如何在系統上設置靜態IP地址的指南,但是他們沒有提到還需要配置路由器的DHCP以避免這些現在保留的NAT地址。 - martineau