19.14. 建立 IPsec 连接

IPsec 代表互联网协议安全(Internet Protocol Security)。它是一种虚拟专用网解决方案。它在两个系统间(主机到主机、host-to-host)或两个网络间(网络到网络、network-to-network)建立加密的连接。

窍门窍门
 

关于 IPsec 的详情请参阅 http://www.ipsec-howto.org/ 上的信息。

19.14.1. 主机到主机连接

主机到主机的 IPsec 连接是在两个都使用同样验证钥匙的系统间的加密连接。因为只有 IPsec 连接是活跃的连接,这两个主机之间的任何网络交通都是加密的。

要配置主机到主机的 IPsec 连接,在每个主机上执行以下步骤:

  1. 启动网络管理工具

  2. 「IPsec」页上,点击「新建」

  3. 点击「前进」来开始配置主机到主机的 IPsec 连接。

  4. 为连接提供一个只有一个单词的绰号,如 ipsec0,然后选择在计算机启动时该连接是否应该被自动激活。点击「前进」

  5. 选择「主机到主机加密」作为连接类型,然后点击「前进」

  6. 选择要使用的加密类型:手工或自动。

    如果选择了手工加密,加密钥匙就必须在进程稍后被提供。如果选择了自动加密,racoon 守护进程就会被用来管理加密钥匙。如果使用了 racoon,你必须安装 ipsec-tools 软件包。

    点击「前进」来继续。

  7. 指定另一个主机的 IP 地址。

    如果你不知道另一个系统的 IP 地址,在另一个系统上运行 /sbin/ifconfig <device> 命令,这里的 <device> 是用来连接另一个主机的以太网设备。如果系统上只有一个以太网卡,设备名称就是 eth0。IP 地址是 inet addr: 标签后面的数字。

    点击「前进」来继续。

  8. 如果你在6的步骤中选择了手工加密,指定要使用的加密钥匙或点击「生成」来创建一个。

    指定一个验证钥匙或点击「生成」来生成一个。它可以是任何数字和字母的组合。

    点击「前进」来继续。

  9. 校验「IPsec — 总结」页上的信息,然后点击「应用」

  10. 选择「文件」 => 「保存」来保存配置。

  11. 从列表中选择 IPsec 连接,然后点击「激活」按钮。

  12. 在另一个主机上重复这些步骤。在其它主机上使用8步骤中创建的相同钥匙是及其重要的,否则,IPsec 就不能被使用。

配置了 IPsec 连接后,它会出现在如图 19-22所示的 IPsec 列表中。

图 19-22. IPsec 连接

/etc/sysconfig/network-scripts/ 中创建了两个文件 — ifcfg-<nickname>keys-<nickname>。如果选择了自动加密,/etc/racoon/racoon.conf 也会被创建。

当接口被激活,<remote-ip>.confpsk.txt 就会在 /etc/racoon/ 中被创建;racoon.conf 会被修改来包括 <remote-ip>.conf

请参阅第 19.14.3 节来判定 IPsec 连接是否被成功建立了。

19.14.2. 网络到网络(VPN)连接

网络到网络的 IPsec 连接使用两个 IPsec 路由器,一个网络使用一个。专用子网的网络交通通过这两个路由器来选路。

例如,如图 19-23所示,如果 192.168.0/24 专用网络想要给 192.168.2.0/24 专用网络发送信息,其分组就会经由网关0,到 ipsec0,再通过互联网,到 ipsec1,到网关1,然后到 192.168.2.0/24 子网。

IPsec 路由器必须有一个公开 IP 地址以及一个连接到专用网络的以太网设备。只有要到另一个 IPsec 路由器的加密连接的交通才会经由这个以太网设备。

图 19-23. 网络到网络的 IPsec

另类网络配置选项包括每个 IP 路由器和互联网间的防火墙以及每个 IPsec 路由器和子网网关间的内联网防火墙。子网的 IPsec 路由器和网关可以是有两个以太网设备的单个系统,一个带有公开 IP 地址的以太网设备充当 IPsec 路由器,另一个带有专用 IP 地址的以太网设备充当到专用网络的网关。每个 IPsec 路由器都可以使用它的专用网络的网关或公共网关来给另一个 IPsec 路由器发送分组。

要配置 IPsec 连接,执行以下步骤:

  1. 启动网络管理工具

  2. 「IPsec」页上,点击「新建」

  3. 点击「前进」来开始配置网络到网络的 IPsec 连接。

  4. 为连接提供一个只有一个单词的绰号,如 ipsec0,然后选择在计算机启动时该连接是否应该被自动激活。点击「前进」

  5. 选择「网络到网络加密 (VPN)」,然后点击「前进」

  6. 选择要使用的加密类型:手工或自动。

    如果选择了手工加密,加密钥匙就必须在进程稍后被提供。如果选择了自动加密,racoon 守护进程就会被用来管理加密钥匙。如果使用了 racoon,你必须安装 ipsec-tools 软件包。点击「前进」来继续。

  7. 「本地网络」页上,输入以下信息:

    • 「本地网络地址」 — 连接到专用网络的 IPsec 路由器上的设备的 IP 地址。

    • 「本地子网掩码」 — 本地网络 IP 地址的子网掩码。

    • 「本地网络网关」 — 专用子网的网关。

    点击「前进」来继续。

    图 19-24. 本地网络信息

  8. 「远程网络」页上,输入以下信息:

    • 「远程 IP 地址」 — 用于另一个专用网络的 IPsec 路由器的公开 IP 地址。在我们所示的例子中,对于 ipsec0 输入 ipsec1 的公开 IP 地址;对于 ipsec1 输入 ipsec0 的公开地址。

    • 「远程网络地址」 — 在另一个 IPsec 路由器背后的专用子网的网络地址。在我们所示的例子中,若配置 ipsec1 则输入 192.168.1.0,若配置 ipsec0 则输入 192.168.2.0

    • 「远程子网掩码」 — 远程 IP 地址的子网掩码。

    • 「远程网络网关」 — 用于远程网络地址的网关的 IP 地址。

    • 如果在6的步骤中选择了手工加密,指定要使用的加密钥匙或点击「生成」来创建一个。

      指定一个验证钥匙或点击「生成」来生成一个。它可以是任何数字和字母的组合。

    点击「前进」来继续。

    图 19-25. 远程网络信息

  9. 校验「IPsec — 总结」页上的信息,然后点击「应用」

  10. 选择「文件」 => 「保存」来保存配置。

  11. 从列表中选择 IPsec 连接,然后点击「激活」按钮。

  12. 在 shell 提示下,以根用户身份启用 IP 转发:

    1. 编辑 /etc/sysctl.conf,把 net.ipv4.ip_forward 设置为 1

    2. 执行以下命令来启用改变:

      sysctl -p /etc/sysctl.conf

用来激活 IPsec 连接的网络脚本自动在必要时创建通过 IPsec 路由器发送分组的网络路线。

请参阅第 19.14.3 节来判定 IPsec 连接是否被成功建立了。

19.14.3. 测试 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)

19.14.4. 启动和停止连接

如果 IPsec 连接没有被配置在引导时激活,则通过命令行以根用户身份启动和停止它。

要启动连接,作为根用户在主机到主机 IPsec 的每个主机上或网络到网络 IPsec 的每个 IPsec 路由器上执行以下命令(把 <ipsec-nick> 替换成前面配置的一个词的绰号,如 ipsec0):

/sbin/ifup <ipsec-nick>

要停止连接,作为根用户在主机到主机 IPsec 的每个主机上或网络到网络 IPsec 的每个 IPsec 路由器上执行以下命令(把 <ipsec-nick> 替换成前面配置的一个词的绰号,如 ipsec0):

/sbin/ifdown <ipsec-nick>