【IT168 专稿】对于没有这个工具(点击)的Linux发行版本(如RHEL 4.0 ,SUSE、红旗Linux)我们可以通过安装从CIPE软件的官方主页http://sourceforge.net/projects/cipe-linux下载的源代码安装。下面笔者将介绍如何通过命令行配置CIPE VPN服务器。
为了使管理员不必使用通过网络运行效果不佳的图形化工具来远程地配置 CIPE 服务器和客户,介绍通过配置文件建立CIPE VPN。首先理解前面介绍的图形界面系统产生两个配置文件:
/etc/cipe/options.cipcbx
x 是从0开始的递增数字,这是为那些想要在 CIPE 服务器上不止有一个 CIPE 连接的客户提供。这个文件存放密匙,主要内容:
cttl 64 #设置载体生存时间值(TTL);推荐的值是64#
maxerr –1 #服务器错误挂起时间#
key 54240266869983357939377846806271299051 #128位密匙#
/etc/sysconfig/network-scripts/ifcfg-cipcb0
CIPE的网络接口,主要内容:
USERCTL=yes #是否允许所有用户修改配置#
TYPE=CIPE #接口类型#
DEVICE=cipcb0 #给 CIPE 设备命名#
ONBOOT=yes #系统启动时激活设备#
IPADDR=10.0.0.1 #本地虚拟地址#
MYPORT=7777 #通讯端口#
PTPADDR=10.0.0.2 #远程虚拟地址#
PEER=0.0.0.0 #本地地址,0.0.0.0 表示接受连续监听#
ME=192.168.0.9 #对端的 CIPE UDP 地址#
TUNNELDEV=eth0 #隧道穿越设备#
1. 软件安装
要设置 CIPE 服务器,可以通过网络来安装 cipe 软件包。下一步是把位于 /usr/share/doc/cipe-version/samples/ 的配置文件范例复制到 /etc/cipe/ 中(这里的 version 是安装在你的系统上的 CIPE 版本)。复制完毕后,你将需要编辑 /etc/cipe/options.cipcbx(x 是从0开始的递增数字,为那些想要在 CIPE 服务器上不止有一个 CIPE 连接的客户提供)文件来包括你的 LAN 子网地址和可公共选路的防火墙 IP 地址。以下是包括在RHEL 3.0的CIPE RPM 中的 options 文件范例。在这个例子中,它被重命名为 options.cipbcb0:
# the peer''s IP address
ptpaddr 6.5.4.3
# our CIPE device''s IP address
ipaddr 6.7.8.9
# my UDP address. Note: if you set port 0 here, the system will pick
# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.
me bigred.inka.de:6789
# ...and the UDP address we connect to. Of course no wildcards here.
peer blackforest.inka.de:6543
# The static key. Keep this file secret!
# The key is 128 bits in hexadecimal notation.
key xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ptpaddr 是远程 LAN 的 CIPE 地址。ipaddr 是工作站的 CIPE IP 地址。me 地址是客户的可公共选路的 IP 地址,它通过互联网发送 UDP 分组。peer 是 CIPE 服务器的可公共选路的 IP 地址。注意,客户工作站的 IP 地址是 0.0.0.0,因为它使用动态连接。CIPE 客户将会处理到 CIPE 服务器的连接。key 字段(用 x 代表;你的钥匙应该是密钥)是共享静态钥匙。这个钥匙在两个对端上必须是相同的,否则连接就不能成立。这是客户工作站将会使用的被编辑过的 /etc/cipe/options.cipcb0:
ptpaddr 10.0.1.2
ipaddr 10.0.1.1
me 0.0.0.0
peer LAN.EXAMPLE.COM:6969
key 123456ourlittlesecret7890shhhh
这是 CIPE 服务器的 /etc/cipe/options.cipcb0 文件:
ptpaddr 10.0.1.1
ipaddr 10.0.1.2
me LAN.EXAMPLE.COM:6969
peer 0.0.0.0
key 123456ourlittlesecret7890shhhh
2. 配置客户的 CIPE
成功地配置了 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
PEERROUTEDEV=
DNS=192.168.1.254
CIPE 设备的名称是 cipcb0。CIPE 设备将会在引导时间被载入(通过 ONBOOT 字段配置),而且将不会使用一种引导协议(如 DHCP)来接收该设备的 IP 地址。PEERROUTEDEV 字段决定连接到客户的 CIPE 服务器设备名称。如果这个字段中没有指定任何设备,在设备被载入后就会为它决定一个。 如果你的内部网络是在防火墙背后,你需要设置规则来允许客户机器上的 CIPE 接口发送和接收 UDP 分组。我们这个配置例子中使用了 iptables 规则。客户机器上的防火墙应该被配置接受 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
客户端需要添加以下内容:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2
表-2详细描述了一些运行 ciped 守护进程时的命令行参数。
|
参数 |
描述 |
|
arg |
把参数传递给 /etc/cipe/ip-up 初始脚本 |
|
cttl |
设置载体生存时间值(TTL);推荐的值是64 |
|
debug |
启用调试的布尔值 |
|
device |
给 CIPE 设备命名 |
|
ipaddr |
CIPE 机器的可公开选路的 IP 地址 |
|
ipdown |
选择另一个 ip-down 脚本,而不是默认的 /etc/cipe/ip-down |
|
ipup |
选择另一个 ip-up 脚本,而不是默认的 /etc/cipe/ip-up |
|
key |
为 CIPE 连接指定一个共享静态密钥 |
|
maxerr |
在 CIPE 守护进程退出前允许的错误数量 |
|
me |
CIPE 机器的 UDP 地址 |
|
mtu |
设置设备的最大传输单位 |
|
nokey |
不使用加密 |
|
peer |
对端的 CIPE UDP 地址 |
|
ping |
设置 CIPE 特有的(非 ICMP)保持活跃 ping 间隔 |
|
socks |
用于代理连接的 SOCKS 服务器的 IP 地址和端口号码 |
|
tokey |
设置动态钥匙的活跃时间;默认为10分钟(600秒) |
|
tokxc |
共享钥匙互换的超时值;默认为10秒钟 |
|
tokxts |
共享钥匙互换时间戳的超时值;默认为0(无时间戳) |
|
toping |
保存活跃 ping 的超时值;默认为0 |
3. CIPE 的钥匙管理
如前面所提到,CIPE 包括一个静态链接钥匙(link key)和加密交通的安全组合来在载体网络如互联网中创建一个安全隧道。静态链接钥匙为两个启用了 CIPE 的网络安全传递信息提供了一个公共参考点。因此,这两个启用了 CIPE 的网络网关分享完全相同的钥匙这一点是极端重要的,否则 CIPE 通信就不能够进行。
生成 CIPE 钥匙需要你懂得哪类钥匙是兼容的。随机的字母数字生成器是行不通的。静态钥匙必须是128位、32字符的字符串。这些字符串可以通过运行以下命令来被创建。该命令使用 od 来创建使用 /dev/random 随机数字设备的十六进制密钥:
od -N 16 /dev/random -t x4 | awk ''{print $2 $3 $4 $5}''
把输出放在 /etc/cipe/options.cipcb0 文件中以用于所有 CIPE 服务器和客户。
4. 安全提示:
如果你使用的是较老的红帽企业 Linux,并且/或者有一个较老的 CIPE,你应该升级到最新的版本。
总结:
CIPE可以快速实现Linux服务器和主机之间的VPN连接。现在也有用于 Windows 的操作系统的CIPE的项目在开发中,详情查看:http://cipe-win32.sourceforge.net/ 。