DMZ 技术是将 DMZ主机的全部端口开放给网关外部访问,即当外部网络访问该网关IP(任何端口/服务, 例如80端口的httpd服务),该网关将数据包转给DMZ主机(访问的就是DMZ主机的网页)。
Virtual server 与DMZ类似,但它比DMZ控制得更详细,必须详细指明相应的协议和端口/服务(例如下面实例中的 -p tcp --dport 80),当配置的是80/httpd,只是将从网关80端口来的包转发到指定的Virtual server主机(访问的是Virtual server的网页,此时Virtual server就是Http server),当配置的是23/telnetd 转发的只是23端口的包。
以下是DMZ和Virtual server的配置实例:
环境说明:
router/gate-way wan interface: eth2 172.16.15.55, netmask: 255.255.224.0
router/gate-way lan interface: eth0 (briged to br0), netmask: 192.168.1.0/24
interal device/pc address: 192.168.1.25
DMZ host is192.168.1.25:
iptables -t nat -A PREROUTING -i eth2 -j DNAT --to-destination 192.168.1.25 iptables -I FORWARD 1 -i eth2 -d 192.168.1.25 -j ACCEPT这样 router/gate-way的wan端不管是以172.16.15.55:80还是172.16.15.55:23等端口,访问的都是内部 192.168.1.25 上的相应服务。
Virtual server is httpd server in lan side:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j DNAT --to192.168.1.25 iptables -I FORWARD 1 -i eth2 -p tcp -d 192.168.1.25 -j ACCEPT如果想不影响本地网页的浏览,可以改用别的端口(8000)作为内部服务的访问(端口映射):
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8000 -j DNAT --to 192.168.1.25:80 iptables -I FORWARD 1 -i eth2 -p tcp -d 192.168.1.25 --dport 80 -j ACCEPT这样router/gate-way的wan端以172.16.15.55:80仍然可以访问router/gate-way的配置网页,以172.16.15.55:8000就可以访问192.168.1.25的配置网页了。
可以看出DMZ和Virtual server做的都是DNAT,即从wan口访问router/gate-way的某服务端口,其实是向router/gate-way内部网络的某设备/pc上的相对应的服务。且只能是wan端的客户访问lan端的服务才有这种端口转发/端口映射的关系,lan端的客户以router/gate-way的wan端地址是访问不了lan端的服务的(如果要实现此功能,也即所谓的NAT loopback的功能,是完全没问题的,只不过要做一下SNAT的iptables命令)。
//TODO