一、简介
关于 ipsec,以前也在 Blog 上讨论过了,主要是关于 openswan 和 fortigate 的相关配置。在最近一次使用 ipsec 的过程中,基础系统是 CentOS 5. 而在此系统中 openswan 的安装并不是这么方便。于是就丢掉了 openswan 这个系统。开始尝试新的工具 IP-Sec Tool . 在大多数发行版本中(包括 FreeBSD)该工具都已经带了二进制包,不用再把时间花在编译上了。
本文涉及的环境依旧是 Net-Net。
二、setkey
setkey 是 ipsec-tools 中的一个工具。简单的说,他指定了 Tunnel 。他告诉了系统什么样的数据包应该使用哪条隧道,同时也指定了该隧道的“动作”(允许通过等)。
setkey 的规则类似:
spdadd 172.16.1.0/24 172.16.2.0/24 any -P out ipsec
esp/tunnel/192.168.1.100-192.168.2.100/require;
此内容指定从 172.16.1.0/24 到 172.16.2.0/24 所有出去的数据使用 ipsec esp 加密。他们所通过的 WAN 网线路为 192.168.1.100 到192.168.2.100。
如果指定了出去的数据,一般也需要指定进来的数据。
spdadd 172.16.2.0/24 172.16.1.0/24 any -P in ipsec
esp/tunnel/192.168.2.100-192.168.1.100/require;
用 setkey -f 文件 即可刷新最新的 tunnel 规则。
使用 setkey -D 以及 setkey -DP 来查看 SAD 和 SPD 的当前状态。
setkey -F 为刷空规则。
这个过程和 Fortigate 中为 IPSEC 在防火墙中添加规则完全等价。
三、racoon.conf
racoon 的作用则和 Fortigate 中 VPN-IPSEC 的作用相同了,指定了 步骤一、步骤二 的所有内容。
而且,不像 openswan ,将步骤一、二都混在了一段。分开比较有利于配置文件的编写以及排错。
某些系统中 racoon 的默认文件在 /etc/racoon/racoon.conf 。我们来看一段典型的:
path pre_shared_key “/etc/psk.txt”;
remote 192.168.2.100 {
exchange_mode main;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group modp1024;
}
}
sainfo address 172.16.1.0/24 any address 172.16.2.0/24 any {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
remote 大段落指定了 步骤一 的内容,sainfo 指定了 步骤二 的内容。
remote 后面紧跟的 192.168.2.100 则是对方主机 WAN 网地址。
address 172.16.1.0/24 any address 172.16.2.0/24 any 给出了源地址-目标地址的限定范围。此限定范围双方 IPSEC-Tunnel 服务器必须完全一致。不然,步骤二会出错。
其他的内容也就是加密模式、超时时间等等设置,通过 man racoon.conf 即可搜索到详细的内容。
listen
{
isakmp 123.123.123.123 [500];
isakmp_natt 123.123.123.123 [4500];
}
此内容指定了监听的 WAN 网地址,以及端口。如果不指定地址,它会在当前系统所有的 IP 地址上监听。默认 ipsec tunnel 通讯就使用了 500 端口。
注意:如果有防火墙,请开放对应端口通讯。
path pre_shared_key “/etc/racoon/psk.txt”
指定存放 pre shared key 的位置,文件中格式如下:
IP PASSWD
四、racoon
racoon 一般用法
-F :前台模式,使用该参数将显示所有log在屏幕上。
-f 配置文件 :读取指定的配置文件,如 racoon -f /etc/racoon.conf
-l :指定log文件的位置。默认将log放在了 message 里面。这样阅读很不方便。如果不使用 -l 参数,用 syslog-ng 也是可以达到相同的效果的。
五、启动脚本
racoon 同样会在 /var/run 下生成 racoon.pid 文件。他的启动脚本应该不会特别复杂。
CentOS 5 中并没有自带脚本,FreeBSD 似乎有现成脚本。有空继续研究脚本问题。
六、参考资料
http://www.ipsec-howto.org/x304.html
http://gentoo-wiki.com/HOWTO_IPSEC
未发现中文比较全面的参考资料。