有关“端口转发”的问题很多,但似乎没有一个明确说明其含义和用途的问题。所以:
什么是端口转发?
它有什么用,为什么我需要它?
有关“端口转发”的问题很多,但似乎没有一个明确说明其含义和用途的问题。所以:
什么是端口转发?
它有什么用,为什么我需要它?
Answers:
要真正解释端口转发,您首先需要了解路由器的功能。您的互联网服务提供商为您的互联网连接分配了一个 IP地址。互联网上的所有计算机都需要一个唯一的IP地址,但是您家中有多台计算机,只有一个地址。那么这是如何工作的呢?
如果您知道它是什么,并且只想知道如何去做: http : //portforward.com/提供了一个有关如何截取数百个不同路由器的屏幕截图的方法。该文档隐藏在其自动portconfig工具的广告页面后面。(只需单击一下,您就会找到它。)
家用路由器具有内置的称为“网络地址转换”或NAT的功能。在网络内部,计算机的地址如192.168.1.100。192.168。*范围(或10. *范围)内的所有地址均为“ 私有 ”或“ 保留 ”地址。这些地址由IANA正式分配,可在专用网络内部使用。您的路由器会为通过DHCP连接的每台计算机自动分配一个这样的地址。这些地址是网络中计算机与路由器以及彼此之间通信的方式。
您的路由器具有单独的网络接口,可将其连接到Internet。此接口有一个非常不同的地址,该地址由您的ISP分配。这是我之前提到的地址,您的路由器使用它与Internet上的其他计算机进行通信。网络内部的计算机具有不可路由的专用IP地址,这意味着,如果它们直接将数据包发送到Internet,则数据包将被自动丢弃(出于稳定性原因,具有私有地址的数据包不允许穿越Internet)。但是您的路由器有一个可路由的地址。顾名思义,网络地址转换可翻译 在这两种地址之间,允许您网络内部的多台计算机作为具有一个地址的一台计算机出现在Internet上。
尽管这听起来可能很复杂,但实际上路由器的操作非常简单。每次网络内部的计算机要连接到Internet上的计算机时,它都会将连接请求发送到路由器(由于其默认网关参数设置为路由器的地址,因此它知道将其发送到路由器)。然后,路由器接收该连接请求(TCP / IP中的“ SYN请求”)并更改源地址(“答复”或返回地址),并将其从计算机的专用IP更改为服务器的公共IP。路由器,以便将响应发送到路由器。然后,它会在数据库(称为NAT表)中记录该连接已启动,以便以后记住它。
当响应从远程计算机(“ SYN-ACK”)返回时,路由器在其NAT表中查找,并且发现该端口上该主机的连接先前是由网络上的私有计算机发起的,因此更改了目的地地址到计算机的专用地址,然后将其转发到您的网络中。这样,数据包就可以继续在网络之间来回传输,而路由器会透明地更改地址以使其工作。连接终止后,路由器将其从NAT表中删除。
用一个隐喻将其可视化可能会更容易一些-假设您是在美国与中国客户合作的货运代理。他们需要将包裹发送给美国的许多客户,但是由于海关/文书工作的原因,将包裹仅发送到一个地方更容易。因此,来自您的一个中国客户(在此示例中为专用网络)向您提供了一个目的地为美国某个地方(互联网)的包裹。您将包装盒上的地址标签更改为美国(公共)地址,并将回信地址更改为您自己的公共地址(因为在不给客户带来麻烦的情况下它不能直接返回中国),并将其交给邮政部门。如果客户退回产品,它就会来找您。您可以在记录中查找它,并查看它来自中国的哪家公司,
这很好用,但是有一个问题。如果客户需要向公司发送东西,比如说用汇票支付东西怎么办?或者,假设互联网上的计算机启动了与路由器的连接(SYN请求),例如,它与网络中的Web服务器建立了连接。信件/分组上只有路由器的公共地址,因此路由器实际上不知道将其发送到哪里!它可以用于专用网络上的任何计算机,也可以不用于任何计算机。当您拨打某人的住宅电话时,您可能会遇到此问题-当他们拨打您的电话时没问题,但是当您打电话给他们时,他们无法知道对方的电话,因此错误的人可能会应答。
尽管对人类来说很容易理清这个问题,但是对于计算机而言却是一件棘手的事情,因为网络上的每台计算机都不知道所有其他计算机。
端口转发是我们解决此问题的方法:这是一种告诉路由器网络传入连接应定向到哪台计算机的方式。我们有三种不同的方法可以做到这一点:
让我们看一个用法示例。许多多人视频游戏(例如,Counter Strike)允许您在计算机上运行其他人可以连接以与您一起玩的游戏服务器。您的计算机并不了解所有想玩的人,因此无法与他们联系-而是他们必须从Internet向您的计算机发送新的连接请求。
如果您在路由器上未设置任何内容,它将收到这些连接请求,但不知道网络中的哪台计算机装有游戏服务器,因此它将忽略它们(或更具体地说,它将发送返回表示无法连接的数据包)。幸运的是,您知道游戏服务器的连接请求上的端口号。因此,在路由器上,将转发端口设置为游戏服务器期望的端口号(例如27015)和带有游戏服务器的计算机的IP地址(例如192.168.1.105)。
路由器将知道将传入的连接请求转发到网络内部的192.168.1.105,外部计算机将能够连接。
另一个示例是具有两台计算机的局域网,其中第二台IP为192.168.1.10的主机使用Apache托管一个网站。因此,路由器应将传入端口80请求转发到此计算机。使用端口转发,两台计算机可以同时在同一网络中运行。
尽管大多数现代游戏都使用UPnP,但视频游戏是日常用户最常会遇到端口转发的地方,因此您不必手动进行此操作(相反,它是全自动的)。不过,只要您希望能够直接连接到网络中的某物(而不是通过Internet上的某些中介),就需要这样做。这可能包括运行您自己的Web服务器或通过远程桌面协议连接到您的一台计算机。
NAT的优点之一是它提供了一些省力的内置安全性。许多人在互联网上徘徊,寻找易受攻击的机器……他们通过尝试打开与各个端口的连接来实现这一目标。这些是传入连接,因此,如上所述,路由器将丢弃它们。这意味着在NAT配置中,只有路由器本身容易受到涉及传入连接的攻击。这是一件好事,因为与运行带有大量软件的完整操作系统的计算机相比,路由器要简单得多(因此也更容易受到攻击)。然后,请记住,通过对网络中的计算机进行DMZ(将其设置为DMZ目标),您将失去该计算机的安全层:它现在完全可以接受来自Internet的传入连接,因此您需要像直接连接一样保护它。当然,无论何时转发端口,接收端的计算机在该特定端口上都容易受到攻击。因此,请确保您运行配置正确的最新软件。