6.11. IPsec 主机到主机配置

IPsec 可以通过主机到主机连接的配置来连接一个桌面或工作站到另一个桌面或工作站。这类连接使用每个主机所连的网络来创建彼此间的安全隧道。主机到主机连接的要求很少,每个主机的 IPsec 配置的要求也很少。主机只需要到载体网络(如互联网)的专用连接和红帽企业 Linux 就能够创建 IPsec 连接。

创建连接的第一步是从每个工作站收集系统和网络信息。对于主机到主机连接,你需要以下信息:

例如:假定工作站 A 和工作站 B 想通过 IPsec 隧道来彼此连接。它们想使用值为 foobarbaz 的预共享钥匙来连接,并且用户同意让 racoon 自动生成和共享每个主机间的验证钥匙。两个主机用户都决定把它们的连接命名为 ipsec0

以下是工作站 A 的主机到主机 IPsec 连接的 ifcfg 文件。在这个例子中用来识别该连接的独特名称是 ipsec0,因此其结果文件被命名为 /etc/sysconfig/network-scripts/ifcfg-ipsec0

DST=X.X.X.X
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK

工作站 A 将会把 X.X.X.X 替换成工作站 B 的 IP 地址,而工作站 B 将会把 X.X.X.X 替换成工作站 A 的 IP 地址。连接被设置成引导时被引发(ONBOOT=yes),并使用预共享钥匙验证方法(IKE_METHOD=PSK)。

以下是预共享钥匙文件(叫做 /etc/sysconfig/network-scripts/keys-ipsec0),两个工作站都使用它来彼此验证。该文件的内容应该完全一致,并且只有根用户才应该有读写权。

IKE_PSK=foobarbaz

重要重要
 

要改变 keys-ipsec0 文件的权限,因此只有根用户才有读写权,在创建了该文件后执行以下命令:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0

要在任何时候改变验证钥匙,编辑两个工作站上的 keys-ipsec0 文件。两个文件必须完全一致才能保证正确的连接性。

除了 include "/etc/racoon/X.X.X.X.conf" 这个声明外,/etc/racoon/racoon.conf 文件应该完全一致。该声明(以及它引用的文件)在 IPsec 隧道被激活时被生成。对于工作站 A,include 声明中的 X.X.X.X 是工作站 B 的 IP 地址。工作站 B 的情况正好相反。下面显示了一个当 IPsec 连接被激活时的典型 racoon.conf 文件。

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

要启动连接,在每个主机上以根用户身份重新引导工作站或执行以下命令:

/sbin/ifup ipsec0

要测试 IPsec 连接,运行 tcpdump 工具来查看在主机(或网络)间传输的网络分组,并校验它们是否通过 IPsec 被加密了。分组应该包括 AH 头,而且应该被显示为 ESP 分组。ESP 意味着它被加密了。例如:

17:13:20.617872 pinky.example.com > ijin.example.com: \
	    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)