1. 程式人生 > >【原創】IP攝像頭技術縱覽(六)---通過internet訪問攝像頭

【原創】IP攝像頭技術縱覽(六)---通過internet訪問攝像頭

【原創】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)註冊公雲賬戶

(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 [ 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:[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)訪問測試