本文属于《IP摄像头技术纵览》系列文章之一:
Author: chad
Mail: linczone@163.com
本文可以自由转载,但转载请务必注明出处以及本声明信息。
上一节已经讲解了端口映射的方法实现internet访问,本节主要讲解DMZ虚拟主机的方法。
DMZ全称“demilitarized zone”,中文名称为“隔离区”,和信任区相对应。作用是把企业Web服务器、FTP服务器和论坛等允许外部访问的服务器单独接在该区端口,使整个需要保护的内部网络接在信任区端口后,不允许任何访问,实现内外网分离,达到用户需求。它解决了安装防火墙后外部网络不能访问内部网络服务器的问题,另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络,因为这种网络部署,比起一般的防火墙方案,对攻击者来说又多了一道关卡。
DMZ提供的服务是经过了 地址转换(NAT)和受安全规则限制的,以达到隐蔽真实地址、控制访问的功能。首先要根据将要提供的服务和安全策略建立一个清晰的网络拓扑,确定DMZ区应用服务器的IP和端口号以及数据流向。通常网络通信流向为禁止外网区与内网区直接通信,DMZ区既可与外网区进行通信,也可以与内网区进行通信,受安全规则限制。
a. 地址转换
DMZ区服务器与内网区、外网区的通信是经过 网络地址转换(NAT)实现的。网络地址转换用于将一个地址域(如专用Intranet)映射到另一个地址域(如Internet),以达到隐藏 专用网络的目的。DMZ区服务器对内服务时映射成内网地址,对外服务时映射成外网地址。采用 静态映射配置网络地址转换时,服务用IP和真实IP要一一映射, 源地址转换和目的地址转换都必须要有。
b. DMZ安全规则制定
安全规则集是安全策略的技术实现,一个可靠、高效的安全规则集是实现一个成功、安全的 防火墙的非常关键的一步。如果防火墙规则集配置错误,再好的防火墙也只是摆设。在建立规则集时必须注意规则次序,因为防火墙大多以顺序方式检查信息包,同样的规则,以不同的次序放置,可能会完全改变防火墙的运转情况。如果信息包经过每一条规则而没有发现匹配,这个信息包便会被拒绝。一般来说,通常的顺序是,较特殊的规则在前,较普通的规则在后,防止在找到一个特殊规则之前一个普通规则便被匹配,避免防火墙被配置错误。
DMZ安全规则指定了非军事区内的某一主机(IP地址)对应的安全策略。由于DMZ区内放置的服务器主机将提供公共服务,其地址是公开的,可以被外部网的用户访问,所以正确设置DMZ区安全规则对保证网络安全是十分重要的。
FireGate可以根据数据包的地址、协议和端口进行访问控制。它将每个连接作为一个数据流,通过规则表与连接表共同配合,对网络连接和会话的当前状态进行分析和监控。其用于过滤和监控的IP包信息主要有:源IP地址、目的IP地址、协议类型(IP、ICMP、TCP、UDP)、源TCP/UDP端口、目的TCP/UDP端口、ICMP 报文类型域和代码域、碎片包和其他标志位(如SYN、ACK位)等。
为了让DMZ区的应用服务器能与内网中DB服务器(服务端口4004、使用TCP协议)通信,需增加DMZ区安全规则, 这样一个基于DMZ的安全应用服务便配置好了。其他的应用服务可根据安全策略逐个配置。
其实DMZ主机实际上就是一个缺省的虚拟服务器,如果设备收到一个来自外部网络的连接请求,它首先会查找虚拟服务列表,如果有匹配的项目,就把请求消息发送到对应的虚拟服务器上去。如果没有查到匹配的项目,就转发到DMZ主机上去。
路由器内的DMZ主机配置很简单,只有一个配置项,方法如下:
配着完成后在指定主机上开启相应的web服务就可以通过外网进行访问了。
上文的配置忽略了一个事实:大部分网络是动态ip的。动态ip造成两个访问限制:1、每次访问必须输入外网IP。2、你不知道什么时候IP会变掉。
所以,最好的方法是使用域名进行访问。
用个人电脑架设服务器或想远程控制电脑时,常需要一个固定的域名,指向一台IP可能变化的电脑,即动态域名。
目前提供免费动态域名的有国内的公云(原3322)、和No-IP等。NO-IP是国外网站,访问非常迟钝,测试过程中总是无法访问,而公云网提供了非常稳定的访问,同时允许你免费使用一个动态域名服务,到写本文为止,我的已经正常使用2个月左右了。
登录http://www.pubyun.com,注册一个用户。
注册自己的域名并将域名与本地公网ip绑定。如下图是我的帐号信息:
本实验使用wget工具通过链接到一个包含用户名、密码和域名的URL来实现动态域名的指向更新。
使用的wget参数说明如下:
wget
-q — 下载页面并且不显示任何信息
-O —output-document=FILE 指定下载目录和文件名
下面的是一个样例Bash脚本,适用于3322:
#!/bin/sh
#########################################################################
# File Name: myddns.sh
# Author: chad
# mail: linczone@163.com
# Created Time: 2015年04月10日 星期五 13时13分04秒
#########################################################################
USERNAME="linczone"
PASSWORD="linpasswd"
DOMAINNAME="aitech.f3322.net"
SetIP=false #为true时用ifconfig返回的IP设定DNS,否则由服务器自己判断
while [ 1 ]
do
sleep 1m #每隔30分钟更新一次
if [ $SetIP ] ; then
# 下面从ifconfig获取IP,如果需要,可以手动更改
MYIP=`LANG=C ifconfig | grep ‘inet addr:‘| grep -v ‘127.0.0.1‘ | cut -d: -f2 | awk ‘{ print $1}‘| head -n1`
wget -q -O- "http://$USERNAME:$PASSWORD@members.3322.org/dyndns/update?system=dyndns&hostname=$DOMAINNAME&myip=$MYIP"
else
wget -q -O- "http://$USERNAME:$PASSWORD@members.3322.org/dyndns/update?system=dyndns&hostname=$DOMAINNAME"
fi
done
如果不提供IP,服务器可以自动判断请求的来源IP。但有时(如使用VPN时)请求来源IP并非电脑的真实IP,此时要将SetIP设为True,并使用脚本获得电脑目前的IP。
您需要切换到root用户或使用sudo进行下面的操作。
将上面的脚本存入适当的文件夹,如/home/updateDNS,并增加可执行权限:
# chmod +x /home/updateDNS
修改/etc/rc.local,在exit 0前面加入一行:
/home/updateDNS
这样系统每次启动时就会自动运行域名更新服务了。
由于我的服务器监听端口是20002,所以浏览器中应该如下输入:
http://aitech.f3322.net:20002/javascript.html
【原创】IP摄像头技术纵览(六)---通过internet访问摄像头
原文地址:http://blog.csdn.net/linczone/article/details/46042543