如果你知道是什么,只想知道怎么做。http://portforward.com/ 有一个关于几百个不同路由器的截图。文档隐藏在他们的自动 portconfig 工具的广告页面后面。(只要点击一下就能找到。)
你的家庭路由器有一个叫网络地址转换的功能,也就是NAT,内置了一个功能。在你的网络内部,计算机有192.168.1.100这样的地址。所有在192.168.范围内(或在10.范围内)的地址都是[私有](http://en.wikipedia.org/wiki/PrivateIPaddresses#PrivateIPv4addressspaces)“或保留”_地址。这些地址是由IANA正式分配给私有网络内部使用的地址。你的路由器会自动分配这样的地址给每台通过DHCP连接的计算机。这些地址是你的网络中的计算机如何与路由器以及相互之间的通信。
你的路由器有一个独立的网络接口,将其与互联网连接起来。这个接口有一个非常不同的地址,它是由你的ISP分配的。这就是我前面提到的那个地址,你的路由器就是用这个地址与互联网上的其他计算机进行通信。你的网络内的计算机都有不可路由私有IP地址,也就是说,如果它们直接向互联网发送数据包,数据包会自动被丢弃(出于稳定性的考虑,有私有地址的数据包是不允许在互联网上穿越的)。但你的路由器有一个可路由地址。网络地址转换,顾名思义,就是在这两种地址之间进行翻译,让你的网络内的多台电脑以一个地址的形式出现在互联网上。每当你的网络中的计算机想要连接到互联网上的计算机时,它就会将连接请求发送到路由器上(它知道要把它发送到路由器上,因为它的Default Gateway参数被设置为路由器的地址)。然后,路由器接收到这个连接请求(TCP/IP中的 “SYN请求"),并改变源地址(即 "reply-to "或返回地址),将其从计算机的私有IP改成路由器的公共IP,这样,响应就会发送到路由器。然后,它在数据库(称为NAT表_)中记下这个连接被发起,以便以后记住它。
当远程计算机返回响应(一个 "SYN-ACK")时,路由器在它的NAT表中查看,看到该端口上的那个主机的连接是由你的网络中的私有计算机之前发起的,将目的地址改为该计算机的私有地址,然后在你的网络中转发。这样一来,数据包就可以继续在网络之间来回转发,路由器透明地改变地址,这样就可以正常工作了。当连接被终止时,路由器只需将其从NAT表中删除即可。
这样做效果很好,但是有一个问题。如果客户需要给公司寄点东西,比方说是汇票付款的东西,怎么办?或者说,假设互联网上的电脑发起了一个与路由器的连接(SYN请求),比如说是向网络中的网络服务器发送信/包。信件/数据包上只有路由器的公共地址,所以路由器实际上不知道要把它发到哪里去!它可能会被发送到任何一台电脑上的私人服务器上。网络,或对他们中的任何一个人来说都不是。当你拨打别人家的电话时,你可能遇到过这样的问题–当他们给你打电话时没有问题,但当你给他们打电话时,他们没有办法知道是谁的电话,所以可能接错了。虽然对人类来说,解决这个问题很容易,但对电脑来说就比较麻烦了,因为不是每台电脑都知道你的网络中的其他电脑。我们有三种不同的方法可以做到这一点:
另一个例子是,本地网络有两台机器,其中第二台IP为192.168.1.10的机器托管着一个使用Apache的网站。因此,路由器应该将传入的端口80请求转发到这台机器上。使用端口转发,两台机器可以同时在同一网络中运行。
视频游戏可能是日常用户最常遇到的端口转发的地方,尽管大多数现代游戏使用UPnP,所以你不需要手动操作(相反,它是完全自动的)。当你想直接连接到你的网络中的东西时,你就需要这样做(而不是通过互联网上的一些中间人)。这可能包括运行你自己的网络服务器或通过远程桌面协议连接到你的电脑。很多人在互联网上游荡,寻找容易被攻击的机器…… 他们通过尝试打开不同端口的连接来做到这一点。这些都是传入的连接,所以,如上文所述,路由器会把它们丢掉。这意味着,在NAT配置中,只有路由器本身容易受到涉及传入连接的攻击。这是件好事,因为路由器比运行了大量软件的计算机要简单得多(因此更不容易受到攻击)。那么,你应该记住,通过在网络中设置DMZ(设置为DMZ目的地),你就失去了这台电脑的安全层:它现在对来自互联网的传入连接完全开放,所以你需要像直接连接一样保护它的安全。当然,当你转发一个端口时,接收端的计算机就会在该端口上变得脆弱。因此,请确保你运行最新的软件,并且配置良好。