如何轉發路由器上的端口
已發表: 2022-01-29儘管現代路由器自動處理大多數功能,但某些應用程序將要求您手動將端口轉發到該應用程序或設備。 幸運的是,如果你知道在哪裡看,這真的很簡單。
什麼是端口轉發?
我們已經介紹了許多將您的計算機用作其他設備的服務器的項目。 當您在網絡中時,大多數事情都會正常工作。 但是有些應用程序,如果你想在你的網絡之外訪問它們,會讓事情變得更加棘手。 讓我們先來看看為什麼會這樣。
您的路由器如何處理請求和使用端口
這是一個簡單的家庭網絡的地圖。 雲圖標代表更大的互聯網和您的公共或前向互聯網協議 (IP) 地址。 這個 IP 地址代表了來自外在世界的整個家庭——在某種程度上,就像一個街道地址。
紅色地址 192.1.168.1 是您網絡中的路由器地址。 附加地址都屬於圖像底部的計算機。 如果您的公共 IP 地址類似於街道地址,請考慮內部 IP 地址,例如該街道地址的公寓號碼。
該圖提出了一個您以前可能沒有考慮過的有趣問題。 來自互聯網的所有信息如何到達網絡內的正確設備? 如果您在筆記本電腦上訪問 howtogeek.com,如果所有設備的面向公眾的 IP 地址都相同,它如何最終出現在您的筆記本電腦上而不是您兒子的桌面上?
這要歸功於稱為網絡地址轉換 (NAT) 的奇妙路由魔術。 此功能發生在路由器級別,其中 NAT 充當交通警察,引導網絡流量通過路由器,以便可以在路由器後面的所有設備之間共享單個公共 IP 地址。 由於有了 NAT,您家中的每個人都可以同時請求網站和其他互聯網內容,這些內容都將傳送到正確的設備。
那麼端口在哪裡進入這個過程呢? 端口是網絡計算早期的一個古老但有用的保留。 過去,當計算機一次只能運行一個應用程序時,您只需將一台計算機指向網絡上的另一台計算機即可連接它們,因為它們將運行相同的應用程序。 一旦計算機變得複雜,可以運行多個應用程序,早期的計算機科學家就不得不努力解決確保應用程序連接到正確應用程序的問題。 於是,港口誕生了。
一些端口具有特定的應用程序,這些應用程序是整個計算行業的標準。 例如,當您獲取網頁時,它使用端口 80。接收計算機的軟件知道端口 80 用於提供 http 文檔,因此它會在那裡偵聽並做出相應的響應。 如果您通過不同的端口(例如 143)發送 http 請求,Web 服務器將無法識別它,因為它沒有在那裡偵聽(儘管可能有其他東西,例如傳統上使用該端口的 IMAP 電子郵件服務器)。
其他端口沒有預先指定的用途,您可以隨意使用它們。 為避免干擾其他符合標準的應用程序,最好為這些備用配置使用更大的數字。 例如,Plex 媒體服務器使用端口 32400,而 Minecraft 服務器使用 25565——這兩個數字都屬於這個“公平遊戲”領域。
每個端口都可以通過 TCP 或 UDP 使用。 TCP 或傳輸控制協議是最常用的。 UDP 或用戶數據報協議在家庭應用程序中的使用較少,但有一個主要例外:BitTorrent。 根據正在監聽的內容,它會期望在這些協議中的一個或另一個中發出請求。
為什麼需要轉發端口
那麼為什麼你需要轉發端口呢? 雖然一些應用程序利用 NAT 設置自己的端口並為您處理所有配置,但仍有很多應用程序不這樣做,您需要在連接服務和應用程序時幫助您的路由器.
在下圖中,我們從一個簡單的前提開始。 您在世界某個地方的筆記本電腦上(IP 地址為 225.213.7.32),並且想要連接到您的家庭網絡以訪問一些文件。 如果您只是將您的家庭 IP 地址 (127.34.73.214) 插入您正在使用的任何工具(例如 FTP 客戶端或遠程桌面應用程序),並且該工具沒有利用我們剛剛提到的那些高級路由器功能,你不走運。 它不知道將您的請求發送到哪裡,也不會發生任何事情。
順便說一句,這是一個很棒的安全功能。 如果有人連接到您的家庭網絡並且他們沒有連接到有效端口,您希望連接被拒絕。 這就是你的路由器的防火牆元素在做它的工作:拒絕不受歡迎的請求。 但是,如果敲你的虛擬門的人是你,那麼拒絕就不是那麼受歡迎了,我們需要做一些調整。
為了解決這個問題,你想告訴你的路由器“嘿:當我用這個程序訪問你時,你需要通過這個端口將它發送到這個設備”。 有了這些說明,您的路由器將確保您可以訪問家庭網絡上正確的計算機和應用程序。
所以在這個例子中,當你外出使用筆記本電腦時,你會使用不同的端口來發出請求。 當您使用端口 22 訪問家庭網絡的 IP 地址時,您家中的路由器知道該地址應該轉到網絡內部的 192.168.1.100。 然後,Linux 安裝上的 SSH 守護程序將響應。 同時,您可以通過端口 80 發出請求,您的路由器會將其發送到位於 192.168.1.150 的 Web 服務器。 或者,您可以嘗試使用 VNC 遠程控制您姐姐的筆記本電腦,您的路由器將在 192.168.1.200 將您連接到您的筆記本電腦。 通過這種方式,您可以輕鬆連接到您設置了端口轉發規則的所有設備。
相關:如何鎖定您的 SSH 服務器
端口轉發的用處並不止於此! 您甚至可以使用端口轉發來更改現有服務的端口號,以確保清晰和方便。 例如,假設您在家庭網絡上運行了兩台 Web 服務器,並且您希望其中一個易於訪問(例如,它是您希望人們能夠輕鬆找到的天氣服務器),而另一個 Web 服務器用於個人項目。
當您從面向公眾的端口 80 訪問家庭網絡時,您可以告訴路由器將其發送到位於 192.168.1.150 的天氣服務器上的端口 80,它將在端口 80 上進行監聽。但是,您可以告訴路由器當您通過端口 10,000 訪問它時,它應該轉到您個人服務器上的端口 80,即 192.168.1.250。 這樣,第二台計算機不必重新配置以使用不同的端口,但您仍然可以有效地管理流量——同時通過將第一台 Web 服務器連接到端口 80,您可以讓人們更輕鬆地訪問您的上述天氣服務器項目。
既然我們知道了端口轉發是什麼以及我們為什麼要使用它,讓我們在深入實際配置它之前先看一下有關端口轉發的一些小注意事項。
配置路由器之前的注意事項
在坐下來配置路由器之前,請記住幾件事,並提前通過它們可以保證減少挫敗感。
為您的設備設置靜態 IP 地址
首先,如果您將所有端口轉發規則分配給具有由路由器的 DHCP 服務分配的動態 IP 地址的設備,您的所有端口轉發規則都會崩潰。 在這篇關於 DHCP 與靜態 IP 地址分配的文章中,我們深入探討了 DHCP 的詳細信息,但我們將在此處為您提供快速摘要。

相關:如何在路由器上設置靜態 IP 地址
您的路由器有一個地址池,它保留僅用於在設備加入和離開網絡時分發給它們。 可以把它想像成當你到達時在餐館裡得到一個號碼——你的筆記本電腦加入了,砰,它的 IP 地址是 192.168.1.98。 你的 iPhone 加入了,砰,它的地址是 192.168.1.99。 如果您將這些設備離線一段時間或重新啟動路由器,那麼整個 IP 地址抽獎將再次發生。
在正常情況下,這非常好。 你的 iPhone 並不關心它擁有哪個內部 IP 地址。 但是,如果您創建了一個端口轉發規則,表明您的遊戲服務器位於某個 IP 地址,然後路由器給它一個新的 IP 地址,那麼該規則將不起作用,並且沒有人能夠連接到您的遊戲服務器。 為了避免這種情況,您需要為要為其分配端口轉發規則的每個網絡設備分配一個靜態 IP 地址。 最好的方法是通過您的路由器——查看本指南了解更多信息。
了解您的 IP 地址(並設置動態 DNS 地址)
除了為網絡內的相關設備使用靜態 IP 分配外,您還需要了解您的外部 IP 地址——您可以在家庭網絡上訪問 whatismyip.com 找到它。 儘管您可能幾個月甚至一年都擁有相同的公共 IP 地址,但您的公共 IP 地址可能會發生變化(除非您的互聯網服務提供商明確為您提供了一個靜態的面向公眾的 IP 地址)。 換句話說,您不能依賴在您正在使用的任何遠程工具中輸入您的數字 IP 地址(並且您不能依賴將該 IP 地址提供給朋友)。
相關:如何使用動態 DNS 從任何地方輕鬆訪問您的家庭網絡
現在,雖然您每次離開家並打算離家工作(或每次您的朋友要連接到您的 Minecraft 服務器等時)都需要手動檢查 IP 地址,但這是一個很大的麻煩頭痛。 相反,我們強烈建議您設置動態 DNS 服務,該服務允許您將(更改的)家庭 IP 地址鏈接到一個難忘的地址,例如 mysuperawesomeshomeserver.dynu.net。 有關如何使用您的家庭網絡設置動態 DNS 服務的更多信息,請在此處查看我們的完整教程。
注意本地防火牆
在路由器級別設置端口轉發後,您可能還需要調整計算機上的防火牆規則。 例如,多年來,我們收到了很多來自沮喪父母的電子郵件,他們設置了端口轉發,以便他們的孩子可以與朋友一起玩 Minecraft。 幾乎在所有情況下,問題在於儘管在路由器上正確設置了端口轉發規則,但有人忽略了 Windows 防火牆請求,詢問 Java 平台(運行 Minecraft)是否可以訪問更大的互聯網。
請注意,在運行本地防火牆和/或包含防火牆保護的防病毒軟件的計算機上,您可能需要確認已設置的連接正常。
第一步:在您的路由器上找到端口轉發規則
厭倦了所有的網絡課程? 別擔心,終於到了設置它的時候了——既然您已經了解了基礎知識,那就很簡單了。
儘管我們很樂意為您的確切路由器提供準確的說明,但現實情況是每個路由器製造商都有自己的軟件,並且該軟件的外觀甚至可能因路由器型號而異。 我們不會嘗試捕捉每一個變化,而是突出顯示一些,讓您了解菜單的外觀,並鼓勵您查找特定路由器的手冊或在線幫助文件以查找細節。
一般來說,您會尋找一種叫做——你猜對了——“端口轉發”的東西。 您可能需要查看不同的類別才能找到它,但如果您的路由器好用,它應該在那裡。
為了比較,下面是 D-Link DIR-890L 路由器上端口轉髮菜單的樣子:
以下是運行流行的第三方 DD-WRT 固件的同一路由器上的端口轉髮菜單的外觀:
如您所見,即使在相同的硬件上,兩個視圖之間的複雜性也有很大差異。 此外,菜單中的位置完全不同。 因此,如果您使用手冊或搜索查詢查找設備的確切說明,這將是最有用的。
找到菜單後,就可以設置實際規則了。
第二步:創建端口轉發規則
在了解了所有關於端口轉發、為您的家庭 IP 地址設置動態 DNS 以及所有其他相關工作之後,重要的一步——創建實際規則——幾乎是在公園裡散步。 在我們路由器的端口轉髮菜單中,我們將創建兩個新的端口轉發規則:一個用於 Subsonic 音樂服務器,另一個用於我們剛剛設置的新 Minecraft 服務器。
儘管不同路由器軟件的位置不同,但一般輸入是相同的。 幾乎普遍地,您將命名端口轉發規則。 最好簡單地命名它是什麼服務器或服務,然後如果需要為了清楚起見附加它(例如“Webserver”或“Webserver-Weather”,如果有多個)。 還記得我們一開始講的 TCP/UDP 協議嗎? 您還需要指定 TCP、UDP 或兩者。 有些人非常熱衷於找出每個應用程序和服務使用的協議,並出於安全目的完美匹配。 我們將是第一個承認我們在這方面很懶惰的人,我們幾乎總是選擇“兩者”來節省時間。
一些路由器固件,包括我們在上面的屏幕截圖中使用的更高級的 DD-WRT,將允許您指定一個“源”值,該值是您出於安全目的限制端口轉發的 IP 地址列表。 如果您願意,您可以使用此功能,但請注意,它會引入一系列全新的令人頭疼的問題,因為它假定遠程用戶(包括您不在家時和正在連接的朋友)擁有靜態 IP 地址。
接下來,您需要放入外部端口。 這是將在路由器上打開並面向互聯網的端口。 您可以在此處使用介於 1 和 65353 之間的任何數字,但實際上大多數較低的數字被標準服務(如電子郵件和 Web 服務器)佔用,而許多較高的數字被分配給相當常見的應用程序。 考慮到這一點,我們建議選擇一個大於 5,000 的數字,並且為了更加安全,使用 Ctrl+F 搜索這個長長的 TCP/UDP 端口號列表,以確保您沒有選擇與您已經在使用的現有服務。
最後,輸入設備的內部 IP 地址、您在該設備上的端口,並(如果適用)打開規則。 不要忘記保存設置。
第三步:測試您的端口轉發規則
測試您的端口轉發是否有效的最明顯方法是使用用於端口的例程進行連接(例如,讓您的朋友將他們的 Minecraft 客戶端連接到您的家庭服務器),但如果您不離開,這並不總是立即可用的解決方案從家裡。
值得慶幸的是,YouGetSignal.com 上有一個方便的小端口檢查器。 我們可以通過讓端口測試器嘗試連接它來測試我們的 Minecraft 服務器端口轉發是否被佔用。 輸入您的 IP 地址和端口號,然後單擊“檢查”。
如上所示,您應該會收到一條消息,例如“Port X is open on [Your IP]”。 如果端口報告為關閉,請仔細檢查路由器上端口轉髮菜單中的設置以及測試儀中的 IP 和端口數據。
設置端口轉發有點麻煩,但只要您為目標設備分配靜態 IP 地址並為您的家庭 IP 地址設置動態 DNS 服務器,您只需訪問一次即可將來可以輕鬆訪問您的網絡。