成功地配置了 CIPE 服务器并测试了它的功能后,你现在就可以在客户机器上使用这种连接了。
CIPE 客户应该能够自动地连接和断开 CIPE 连接。因此,CIPE 包含内建的机制来为个别使用自定设置。例如,远程职员可以通过键入以下命令来连接到 LAN 上的 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 分组。关于为红帽企业 Linux 配置防火墙的信息请参阅第7章 。我们这个配置例子中使用了 iptables 规则。
注记 | |
---|---|
客户应该这样配置,因此所有被本地化的参数都被放在一个用户创建的叫做/etc/cipe/ip-up.local 的文件中。CIPE 会话被关闭后,应该使用 /etc/cipe/ip-down.local 来还原本地参数。 |
客户机器上的防火墙应该被配置接受 CIPE UDP 封装分组。规则的差距可能会很大,但是对 UDP 分组的基本接受对于 CIPE 连接来说却是必需的。以下的 iptables 规则允许连接到 LAN 上的远程客户机器进行 UDP CIPE 传输;最后一条规则添加了 IP 伪装来允许远程客户与 LAN 和互联网通信。
/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 |