什么是端口转发以及它有什么用途?

什么是端口转发以及它有什么用途?

有很多问题'转发端口',但似乎没有一个明确说明它是什么以及它用于什么。所以:

  1. 什么是端口转发?

  2. 它有何用途?为什么我需要它?

答案1

基础

要真正解释端口转发,你首先需要更多地了解你的路由器您的互联网服务提供商会分配互联网连接的 IP 地址。互联网上的所有计算机都需要一个唯一的 IP 地址,但您家里有多台计算机,但只有一个地址。那么这是如何工作的呢?

如果你知道它是什么,并且想知道怎么做http://portforward.com/有一份包含数百种不同路由器截图的操作指南。文档隐藏在其自动端口配置工具的广告页后面。(只需点击几下即可找到它。)

NAT - 它是什么?我们为什么要使用它?

您的家用路由器内置有一项称为网络地址转换 (NAT) 的功能。在您的网络内部,计算机的地址为 192.168.1.100。192.168.* 范围内(或 10.* 范围内)的所有地址都是私人的或者预订的地址。这些地址由 IANA 正式分配,供专用网络内部使用。您的路由器会自动为通过DHCP. 这些地址是网络中的计算机与路由器以及彼此之间进行通信的方式。

您的路由器有一个单独的网络接口,用于将其连接到互联网。此接口有一个非常不同的地址,由您的 ISP 分配。这是我之前提到的一个地址,您的路由器使用它与互联网上的其他计算机进行通信。您网络内的计算机有不可路由私有 IP 地址,这意味着如果他们直接向互联网发送数据包,数据包将被自动丢弃(出于稳定性原因,不允许具有私有地址的数据包穿越互联网)。但您的路由器有一个可路由地址。网络地址转换,顾名思义,翻译这两种地址之间,允许网络内的多台计算机在互联网上显示为一台具有一个地址的计算机。

细节

虽然这听起来很复杂,但路由器的工作原理其实很简单。每当网络中的计算机想要连接到互联网上的计算机时,它都会将连接请求发送到路由器(它知道将其发送到路由器,因为它的默认网关参数设置为路由器的地址)。然后路由器接收该连接请求(TCP/IP 中的“SYN 请求”)并更改源地址(“回复”或返回地址),并将其从计算机的私有 IP 更改为路由器的公共 IP,以便将响应发送到路由器。然后它会将记录记录在数据库(称为NAT 表) 表示连接已启动,以便稍后记住它。

当远程计算机返回响应(“SYN-ACK”)时,路由器会查看其 NAT 表,发现与该端口上的该主机的连接之前是由您网络上的一台私人计算机发起的,因此将目标地址更改为该计算机的私有地址,并将其转发到您的网络内部。这样,数据包就可以继续在网络之间来回传输,路由器会透明地更改地址,使其正常工作。当连接终止时,路由器只会将其从 NAT 表中删除。

或者这样想

用一个比喻可能更容易理解——假设您是美国的货运代理,与中国客户合作。他们需要将包裹寄给美国的许多客户,但出于海关/文书工作的原因,只将包裹寄到一个地方更容易。因此,一个包裹从您的一位中国客户(本例中为私人网络)寄给您,而其实际目的地是美国的某个地方(互联网)。您将盒子上的地址标签更改为美国(公共)地址,并将退货地址更改为您自己的公共地址(因为如果不给客户带来不便,就不能直接将其退回中国),然后将其交给邮政服务。如果客户退回产品,产品就会寄给您。您在记录中查找它来自中国的哪家公司,然后将目的地更改为该公司(其私人地址),将退货地址更改为您的私人地址,以便他们可以通过您寄回替换品。

这种方法效果很好,但也存在一些问题。如果客户需要向公司寄送一些东西,比如一张汇票来支付某笔费用,该怎么办?或者,假设互联网上的计算机发起与路由器的连接(SYN 请求),比如与网络中的 Web 服务器建立连接。信件/数据包上只有路由器的公共地址,因此路由器实际上不知道将其发送到哪里!它可能被发送到私有网络上的任何计算机,也可能不被发送到任何计算机。当您拨打某人的家庭电话时,您可能遇到过这个问题 - 当他们给您打电话时没有问题,但当您给他们打电话时,他们无法知道您打给谁,因此可能会接听错误的人。

虽然对于人类来说解决这个问题相当容易,但对于计算机来说却要困难得多,因为网络上的每台计算机并非都知道所有其他计算机。

最后我们来谈谈端口转发

端口转发是我们解决此问题的方法:它是一种告诉路由器应将网络内传入连接定向到哪台计算机的方法。我们有三种不同的方法可以做到这一点:

  • 伪DMZ:许多路由器都具有称为 DMZ 的功能。DMZ 代表非军事区,是一种网络安全配置。家用路由器上的 DMZ 通常被称为伪 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 请求转发到此机器。使用端口转发,两台机器可以同时在同一个网络中运行。

端口转发示例图

视频游戏可能是日常用户最常遇到端口转发的地方,尽管大多数现代游戏都使用 UPnP,因此您不必手动执行此操作(相反,它是全自动的)。不过,每当您想要直接连接到网络中的某个东西时(而不是通过互联网上的某个中介),您都需要执行此操作。这可能包括运行您自己的 Web 服务器或通过远程桌面协议连接到您的其中一台计算机。

安全注意事项

NAT 的优点之一是它提供了一些不费吹灰之力的内置安全性。很多人在互联网上寻找易受攻击的机器……他们通过尝试打开具有各种端口的连接来做到这一点。这些是传入连接,因此,如上所述,路由器将丢弃它们。这意味着在 NAT 配置中,只有路由器本身容易受到涉及传入连接的攻击。这是一件好事,因为路由器比运行带有大量软件的完整操作系统的计算机简单得多(因此不太可能受到攻击)。因此,您应该记住,通过对网络内的计算机进行 DMZ(将其设置为 DMZ 目标),您将失去该计算机的那层安全性:它现在完全对来自互联网的传入连接开放,因此您需要像直接连接一样保护它。当然,只要您转发端口,接收端的计算机就会在该特定端口上变得易受攻击。因此,请确保您运行的是配置良好的最新软件。

相关内容