如何转发路由器上的端口

虽然现代路由器自动处理大多数功能,但某些应用程序需要您手动将端口转发到该应用程序或设备。幸运的是,如果你知道去哪里找,这真的很简单。

什么是端口转发?

我们已经介绍了很多将您的计算机用作其他设备的服务器的项目。当您在您的网络内部时,大多数事情都会运行得很好。但有些应用程序,如果你想在网络之外访问它们,会让事情变得更加毛茸茸的。让我们先来看看为什么会这样。

您的路由器如何处理请求和使用端口

这是一张简单家庭网络的地图。云图标表示更大的Internet和您的公共(或向前)Internet协议(IP)地址。这个IP地址代表了你在这个世界上的整个家庭--在某种程度上,就像一个街道地址。

红色地址192.1.168.1是您网络中的路由器地址。其他地址都属于图像底部看到的计算机。如果您的公有IP地址类似于街道地址,请将内部IP地址视为该街道地址的公寓号。

这个图表提出了一个你以前可能没有想过的有趣的问题。互联网上的所有信息是如何到达网络内部的正确设备的?如果你在笔记本电脑上访问howtogeek.com,如果面向公众的IP地址在所有设备上都是相同的,那么它怎么会出现在你的笔记本电脑上,而不是你儿子的桌面上呢?

这要归功于一种非常奇妙的路由魔术,即网络地址转换(NAT)。此功能发生在路由器级别,其中NAT充当交通警察,引导通过路由器的网络流量,以便路由器后面的所有设备可以共享单个公有IP地址。因为有了NAT,你家里的每个人都可以同时请求网站和其他互联网内容,这些内容都会被传送到正确的设备上。

那么端口在这个过程中起到了什么作用呢?端口是网络计算早期遗留下来的一种古老但有用的东西。回到过去,当计算机一次只能运行一个应用程序时,您所要做的就是将一台计算机指向网络上的另一台计算机,将它们连接起来,因为它们将运行相同的应用程序。一旦计算机变得复杂,可以运行多个应用程序,早期的计算机科学家就必须努力解决确保应用程序连接到正确应用程序的问题。于是,港口应运而生。

一些端口有特定的应用程序,这些应用程序是整个计算行业的标准。例如,当您获取网页时,它使用端口80。接收计算机的软件知道端口80用于提供http文档,因此它在那里侦听并做出相应的响应。如果您通过不同的端口(比如143)发送http请求,web服务器将无法识别它,因为它没有在那里侦听(尽管其他端口可能会侦听,比如传统上使用该端口的imap电子邮件服务器)。

其他端口没有预先分配的用途,您可以将它们用于任何您想要的用途。为了避免干扰其他遵守标准的应用程序,最好对这些备用配置使用更大的数字。例如,Plex Media Server使用端口32400,而“我的世界”服务器使用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的笔记本电脑。通过这种方式,您可以轻松连接到您为其设置了端口转发规则的所有设备。

不过,端口转发的用处并不仅限于此!为清晰和方便起见,您甚至可以使用端口转发来更改现有服务的端口号。例如,假设您的家庭网络上运行着两个Web服务器,您希望其中一个可以方便且明显地访问(例如,它是您希望人们能够轻松找到的天气服务器),而另一个Web服务器用于个人项目。

当您从面向公众的端口80时访问您的家庭网络时,您可以告诉您的路由器将其发送到气象服务器192.168.1.150上的端口80,它将在那里侦听端口80。但是,您可以告诉您的路由器,当您通过端口10,000访问它时,它应该转到您的个人服务器192.168.1.250上的端口80。这样,第二台计算机不必重新配置为使用不同的端口,但您仍然可以有效地管理流量-同时,通过将第一台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地址可以更改(除非您的Internet服务提供商明确为您提供了一个面向公众的静态IP地址)。换句话说,您不能依赖于在您正在使用的任何远程工具中键入您的数字IP地址(您也不能依赖于将该IP地址提供给朋友)。

相关:如何使用动态DNS从任何位置轻松访问您的家庭网络

现在,虽然你可以在每次离开家并打算离家工作(或者每次你的朋友要连接到你的“我的世界”服务器等)时都手动检查IP地址的麻烦,但这是一个非常令人头疼的问题。相反,我们强烈建议您设置一个动态DNS服务,允许您将(更改的)家庭IP地址链接到一个令人难忘的地址,如mysuperawesomeshomeserver.dynu.net。有关如何使用您的家庭网络设置动态DNS服务的更多信息,请在此处查看我们的完整教程。

注意本地防火墙

在路由器级别上设置端口转发后,可能还需要调整计算机上的防火墙规则。例如,多年来,我们收到了很多来自沮丧的父母的电子邮件,他们设置了端口转发,这样他们的孩子就可以和他们的朋友一起玩“我的世界”了。几乎在每一种情况下,问题都是,尽管在路由器上正确设置了端口转发规则,但有人忽略了Windows防火墙的请求,该请求询问(运行“我的世界”的)Java平台是否可以访问更大的互联网。

请注意,在运行本地防火墙和/或包含防火墙保护的防病毒软件的计算机上,您可能需要确认您设置的连接是否正常。

第一步:在您的路由器上找到端口转发规则

被所有的网络课程弄得筋疲力尽?不要担心,终于到了设置它的时候了-现在您已经了解了基本知识,它非常简单。

虽然我们非常愿意为您的确切路由器提供准确的说明,但现实情况是,每个路由器制造商都有自己的软件,而这些软件的外观甚至可能因路由器型号的不同而有所不同。我们不会尝试捕获每一种变体,而是突出显示几种,以便让您了解菜单的外观,并鼓励您查找特定路由器的手册或在线帮助文件以查找详细信息。

一般说来,您将寻找一种名为“端口转发”的东西--您猜对了。您可能需要查看不同的类别才能找到它,但是如果您的路由器有任何好的地方,它应该就在那里。

为了便于比较,以下是D-Link DIR-890L路由器上的端口转发菜单:

下面是运行流行的第三方DD-WRT固件的同一路由器上的端口转发菜单:

如您所见,即使在相同的硬件上,两个视图之间的复杂性也有很大差异。此外,菜单中的位置完全不同。因此,如果您使用手册或搜索查询查找设备的确切说明,它将非常有用。

找到菜单后,就可以设置实际的规则了。

第二步:创建端口转发规则

在了解了所有关于端口转发、为您的家庭IP地址设置动态DNS以及所有其他工作之后,重要的一步-创建实际规则-几乎是在公园中散步。在我们路由器的端口转发菜单中,我们将创建两个新的端口转发规则:一个用于Subsonic音乐服务器,另一个用于我们刚刚设置的新的“我的世界”服务器。

尽管不同路由器软件上的位置不同,但一般输入是相同的。几乎是通用的,您将命名端口转发规则。最好简单地将其命名为服务器或服务是什么,然后根据需要附加它(例如。“webserver”或“webserver-Weather”(如果有多个)。还记得我们在开始时谈到的TCP/UDP协议吗?您还需要指定TCP和/或UDP。有些人非常热衷于找出每个应用程序和服务使用的确切协议,并出于安全目的将其完美匹配。我们会第一个承认在这方面我们很懒,为了节省时间,我们几乎总是“两个都选”。

一些路由器固件,包括我们在上面屏幕截图中使用的更高级的DD-WRT,将允许您指定一个“源”值,该值是出于安全目的限制端口转发到的IP地址列表。如果您愿意,您可以使用此功能,但请预先注意,它会带来一系列令人头疼的问题,因为它假定远程用户(包括您离家时的您和正在连接的朋友)具有静态IP地址。

接下来,您需要放入外部端口。这是将在路由器上打开并面向Internet的端口。你可以在这里使用1到65353之间的任何数字,但实际上大多数较低的数字被标准服务(如电子邮件和网络服务器)占用,而许多较高的数字被分配给相当常见的应用程序。考虑到这一点,我们建议选择一个大于5,000的数字,为了更加安全,使用Ctrl+F搜索这个TCP/UDP端口号的长列表,以确保您选择的端口不会与您正在使用的现有服务冲突。

最后,输入设备的内部IP地址、您在该设备上的端口,然后(如果适用)打开规则。别忘了保存设置。

第三步:测试您的端口转发规则

测试您的端口转发是否有效的最明显的方法是使用针对端口的例程进行连接(例如,让您的朋友将他们的“我的世界”客户端连接到您的家庭服务器),但如果您不在家,这并不总是一个立即可用的解决方案。

谢天谢地,YouGetSignal.com上有一个方便的小端口检查器。只需让端口测试器尝试连接,我们就可以进行测试,看看我们的Mincraft服务器端口是否被转发了。输入您的IP地址和端口号,然后单击“检查”。

如上所述,您应该会收到一条消息,如“Port X is open on[your IP]”(端口X已在[您的IP]上打开)。如果端口报告为关闭,请仔细检查路由器上PORT FORWARING菜单中的设置以及测试仪中的IP和端口数据。

设置端口转发有点麻烦,但只要您为目标设备分配静态IP地址,并为您的家庭IP地址设置动态DNS服务器,您只需访问一次即可在将来畅通无阻地访问您的网络。

相关文章