【原創】IP攝像頭技術縱覽(六)—通過internet通路攝像頭
本文屬于《IP攝像頭技術縱覽》系列文章之一:
Author: chad
Mail: [email protected]
本文可以自由轉載,但轉載請務必注明出處以及本聲明資訊。
1、路由器配置—DMZ虛拟主機、端口映射測試
上一節已經講解了端口映射的方法實作internet通路,本節主要講解DMZ虛拟主機的方法。
(1)什麼是DMZ?
DMZ全稱“demilitarized zone”,中文名稱為“隔離區”,和信任區相對應。作用是把企業Web伺服器、FTP伺服器和論壇等允許外部通路的伺服器單獨接在該區端口,使整個需要保護的内部網絡接在信任區端口後,不允許任何通路,實作内外網分離,達到使用者需求。它解決了安裝防火牆後外部網絡不能通路内部網絡伺服器的問題,另一方面,通過這樣一個DMZ區域,更加有效地保護了内部網絡,因為這種網絡部署,比起一般的防火牆方案,對攻擊者來說又多了一道關卡。
(2)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主機上去。
(3)DMZ配置
路由器内的DMZ主機配置很簡單,隻有一個配置項,方法如下:
配着完成後在指定主機上開啟相應的web服務就可以通過外網進行通路了。
2、DNS動态域名測試
上文的配置忽略了一個事實:大部分網絡是動态ip的。動态ip造成兩個通路限制:1、每次通路必須輸入外網IP。2、你不知道什麼時候IP會變掉。
是以,最好的方法是使用域名進行通路。
用個人電腦架設伺服器或想遠端控制電腦時,常需要一個固定的域名,指向一台IP可能變化的電腦,即動态域名。
目前提供免費動态域名的有國内的公雲(原3322)、和No-IP等。NO-IP是國外網站,通路非常遲鈍,測試過程中總是無法通路,而公雲網提供了非常穩定的通路,同時允許你免費使用一個動态域名服務,到寫本文為止,我的已經正常使用2個月左右了。
(1)注冊公雲賬戶
登入http://www.pubyun.com,注冊一個使用者。
(2)域名注冊
注冊自己的域名并将域名與本地公網ip綁定。如下圖是我的帳号資訊:
(3)更新域名指向
本實驗使用wget工具通過連結到一個包含使用者名、密碼和域名的URL來實作動态域名的指向更新。
使用的wget參數說明如下:
wget
-q — 下載下傳頁面并且不顯示任何資訊
-O —output-document=FILE 指定下載下傳目錄和檔案名
下面的是一個樣例Bash腳本,适用于3322:
#!/bin/sh
#########################################################################
# File Name: myddns.sh
# Author: chad
# mail: [email protected]
# Created Time: 2015年04月10日 星期五 13時13分04秒
#########################################################################
USERNAME="linczone"
PASSWORD="linpasswd"
DOMAINNAME="aitech.f3322.net"
SetIP=false #為true時用ifconfig傳回的IP設定DNS,否則由伺服器自己判斷
while [ ]
do
sleep m #每隔30分鐘更新一次
if [ $SetIP ] ; then
# 下面從ifconfig擷取IP,如果需要,可以手動更改
MYIP=` grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'| head -n1`
wget -q -O- "http://$USERNAME:[email protected]/dyndns/update?system=dyndns&hostname=$DOMAINNAME&myip=$MYIP"
else
wget -q -O- "http://$USERNAME:[email protected]/dyndns/update?system=dyndns&hostname=$DOMAINNAME"
fi
done
如果不提供IP,伺服器可以自動判斷請求的來源IP。但有時(如使用VPN時)請求來源IP并非電腦的真實IP,此時要将SetIP設為True,并使用腳本獲得電腦目前的IP。
(4)添加啟動項
您需要切換到root使用者或使用sudo進行下面的操作。
将上面的腳本存入适當的檔案夾,如/home/updateDNS,并增加可執行權限:
# chmod +x /home/updateDNS
修改/etc/rc.local,在exit 0前面加入一行:
/home/updateDNS
這樣系統每次啟動時就會自動運作域名更新服務了。
(5)通路測試
由于我的伺服器監聽端口是20002,是以浏覽器中應該如下輸入:
http://aitech.f3322.net:20002/javascript.html