NAT和端口映射的区别!!!
对于nat,每一个访问的建立,都会在防火墙上留下记录,比如192.168.1.50的12345端口复用了200.201.30.41的54321端口进行对新浪的访问,则防火墙会有一个对应的表:200.201.30.41:54321<——>192.168.1.50:12345,当数据返回时,仍然会按照这个连接,将数据返回给内网主机192.168.1.50;当连接结束时,会释放200.201.30.41:54321的端口,这时,54321号端口又可以给其他的连接请求使用。这是对于nat的情况。
而对于端口映射的情况则不同,例如内网的web服务器的ip地址为172.168.1.10,web服务需要向外网发布,这时,就需要进行端口映射,在防火墙上建立固定的端口映射表172.168.1.10:80<——>200.201.70.71:80,这个映射是固定的。这样,在外网的用户访问该web服务器的时候,访问的就是外网200.201.70.71这ip地址。访问时使用http://200.201.70.71即可访问到172.168.1.10:80的web服务器(实际上是http://200.201.70.71:80,由于http协议默认使用80端口,所以可以省略)。这时,200.201.70.71的80端口就被占用了,也就是不能再被其他的内部地址使用,虽然这里的80端口是保留端口,但是原理是一样的。
在做端口映射的时候,可以将内部地址端口映射为外部地址相同的端口,也可以映射为不同的端口,如内网有另外一台web服务器172.168.1.20需要向外网发布,但是200.201.70.71的80端口已经被172.168.1.10的80端口占用了,这时,可以使用其他的任何未被占用的端口(非保留端口),如建立以下的映射:172.168.1.20:80<——>200.201.70.71:8080,这时,访问http://200.201.70.71:8080即可访问到172.168.1.20发布的web服务,只是这个时候必须指定访问8080端口,否则会访问到172.168.1.10发布的web服务。而由于8080端口已经被端口映射的服务占用了,所以nat时,是不会使用该端口了(端口映射的优先级较高)。
注意,映射的外网ip地址的端口可以随意指定,但是内部的要使用的服务端口必须不能跟默认端口重叠,如要发布web服务的172.168.1.10服务器可以使用80地址,如果使用3389端口,就变成了远程连接。