在成功設定好 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 |