Port Forwarding & Port Triggering

在使用NAT的网络中,内部终端的IP地址为私网地址,发出去的IP包在NAT网关处进行地址转换,以公网地址与外部联系。在转换过程当中,网关创建映射 表,并维护对应链接的状态。当来自公网的包返回时,按照目的地址查找映射表,找到对应的私网地址,而后再次转换后发送给内部终端。这样,映射表中条目的增 加是由内部发往外部的数据流触发的。所以,若是外部想直接访问内部是不可能的。linux

    在实际应用中,被NAT网关隐藏起来的内网极可能架设FTP服务器、HTTP服务器、邮件服务器等等,那么如何从外部访问这些服务器呢?Port Forwarding提供了这样的机制。Port Forwarding根据来自公网的IP包的端口,将其转发到指定的内部IP地址上。例如,一个NAT网关的WAN侧地址为123.4.5.6,内部架设 了一台FTP服务器,地址为192.168.0.8,端口21,及一台HTTP服务器,地址为192.168.0.9,端口8080NAT网关(多是路 由器)上设置Port Forwarding规则:安全

    若Inbound的IP包目的地址为123.4.5.6,端口21,则将其地址转换为192.168.0.8,端口21,而后向内网转发;若 Inbound的IP包目的地址为123.4.5.6,端口80,则将其地址转换为192.168.0.9,端口8080,而后向内网转发。服务器

    这样,经过设置Port Forwarding,从外网能够直接访问到内网的服务器。这里还有一个好处,对于某些linux服务器,只有root权限才可开放端口号小于1024的 服务,而使用root账号具备必定的风险,所以如上例,可设置内网HTTP服务器端口为8080,当外部采用常规的HTTP 80端口访问时,会映射到8080端口。  网络

路由器某一接口 inbound为 流入;outbound为流出。负载均衡

     Port Triggering,是指当Outbound的流来自指定的内网端口(triggered port),自动打开网关WAN侧接口的指定端口(forwarded port),并将指向forwarded ports的流转发到内网触发triggered ports的终端上。引用wiki上关于port triggering的一个例子,IRC(Internet Relay Chat)使用Ident协议(113端口)来验证用户。当链接IRC时,客户电脑一般以端口6667与服务器创建链接,而后IRC服务器创建到客户电脑 113端口的链接来验证用户。若是只有NAT,inbound到端口113的流将被丢弃,由于NAT网关没法知道是内网哪台机器发出的outbound 流。而Port Triggering则解决了这个问题。tcp

    与静态配置的Port Forwarding相比,Port Triggering提供更大的灵活性,由于无需指定具体的内网终端地址,网关会在trigger时自动记录。spa

    Port Forwardig中的外网端口是一直开放的,而Port Triggering中外网端口是只在trigger后才开放。orm

    从配置的角度来讲,Port Forwarding须要配置内部服务器的IP地址和端口,以及外网地址的端口,Port Triggering只要配置Outbound流的端口(triggered port)和Inbound流的端口(forwarded port)server

   最后,顺便说一下DMZ。设置Port Forwarding实际至关于设置了一些virtual server。对于Inbound但不属于Virtual Servers表中应用程序的报文,能够将其映射到一个固定的主机,即DMZ Host。DMZ未来自外网的未知流定向到一台机器上,从而能够提供对内网其余机器的安全保护。接口

常常用到和说的是snat
端口转发、负载均衡是dnat

闲话少叙,举例为证:

  1. 某 网络示意图:


  2. Internet --- 网关 --- 私网服务器(内IP1)

  3.                   ^      ^

  4.               外IP      内IP0

复制代码



要想让私网服务器的80口可以经过外IP的8080口上访问,在Linux网关上敲入:
iptables -A PREROUTING -t nat -d 外IP -t tcp --dport 8080 -j DNAT --to-destination 内IP1:80

意思是:凡发往外IP:8080的全部tcp数据包,都把他们的目标变成内IP1:80

配置完后,公网用户就能够访问http://外IP:8080来浏览私网服务器的网页了。

相关文章
相关标签/搜索