6.6. 設定 CIPE 的用戶端

在成功設定好 CIPE 伺服器並且測試過功能性之後,您現在可以在用戶端機器上配置這個連線。

CIPE 用戶端必須能夠以一種自動的方式來開啟與中斷 CIPE 的連線,因此 CIPE 內含嵌入 的機制來自訂個別用途的設定。 例如一個遠端的公司員工可以藉由輸入下列指令以在區域 網路中連線到 CIPE 裝置:

/sbin/ifup cipcb0

這個裝置應該要自動啟動,而且防火牆規則與路由資訊也應該要隨著連線的啟動而設定好, 遠端的員工可以使用下列指令來終止連線:

/sbin/ifdown cipcb0

用戶端的設定需要建立本地端的程式碼,並且在裝置載入後執行該程式碼,裝置設定本身 可以經由一個使用者建立的檔案稱為 /etc/sysconfig/network-scripts/ifcfg-cipcb0 來設定,這個檔案含有決定 CIPE 連線是否 在開機時啟動、CIPE 裝置的名稱等等參數。 以下為連線到 CIPE 伺服器的一部遠端用戶 端的 ifcfg-cipcb0 檔案:

DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=

# We need to use internal DNS when connected via cipe. 
DNS=192.168.1.254

CIPE 裝置命名為 cipcb0,CIPE 裝置將於開機時 啟動(透過 ONBOOT 欄位所設定),而且不使用 一個開機協定(如 DHCP)來取得裝置的 IP 位址。 PEERROUTEDEV 欄位決定連接至用戶端的 CIPE 伺服器裝置名稱,如果這個欄位沒有 指定任何裝置,在裝置被載入後,將會決定一個名稱。

假如內部的網路是位於防火牆內,請設定規則以讓用戶端機器上的 CIPE 介面可以傳送 與接收 UDP 封包,請參考 第7章 以取得關於設定一個防火牆的 資訊。 至於這個設定範例,我們實作了 iptables 規則。

注請注意
 

用戶端的機器必須在所有本地端的參數都放置在一個稱為 /etc/cipe/ip-up.local 使用者所建立的檔案中後設定好,當 CIPE 作業階段關閉後,本地端的參數必須使用 /etc/cipe/ip-down.local 來回復。

必須在用戶端機器上設定防火牆以接收 CIPE UDP 封裝的封包,所設定的規則大有不同, 不過基本的接受 UDP 封包是 CIPE 連線所必要的。 下列的 iptables 規則允許在遠端用戶端機器上連線到區網的 UDP CIPE 傳輸,最後的規則增加 IP Masquerading 以允許遠端的用戶端連線到區網以及網際網路:

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.1
/sbin/iptables -A INPUT -j ACCEPT -i cipcb0
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

新增路由規則到用戶端機器以使能存取 CIPE 連線之後的節點(就好像它們是位於本地端 網路一樣),這可藉由執行 route 指令來完成。 在這個例子中, 用戶端工作站需要擁有下列的網路路由資訊:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

以下顯示出用戶端工作站上最後版本的 /etc/cipe/ip-up.local 程式碼:

#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
        . /etc/sysconfig/network-scripts/ifcfg-$1
else
        cat <<EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
        exit 1
fi

if [ -n ${PEERROUTEDEV} ]; then
        cat <<EOT | logger
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
        # Use routing table to determine peer gateway
        export PEERROUTEDEV=`/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
           | awk '{ print $NF }'`

fi

####################################################
# Add The routes for the remote local area network #
####################################################

route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

####################################################
# IP TABLES Rules to restrict traffic              #
####################################################

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.2
/sbin/iptables -A INPUT -j ACCEPT -i $1
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE