首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Linux 内使用 IPSEC 配置网络对网络和点对点的 VPN 连接(2)

在 Linux 内使用 IPSEC 配置网络对网络和点对点的 VPN 连接(2)

为网络到网络配置设置 IPSEC有了 IPSEC,可以通过组织一个互联网络 (internetwork) 将全部网络连接到其他的网段。需要在每个网络上安装 IPSEC 路由器以便一个网络的节点的流量可被透明处理并到达另一个网络的节点。这些网络内必须运行着 IPSEC 路由器来进行验证,并通过一个安全通道组合这些网络,流量则通过 Internet 或其他的网络流动。如果数据包在传输期间被截获,将需要使用搜索方法来破解保护它们的代码。这可能会是一个相当长的处理过程,而且甚至可能在过程结束时都无重大作用。
建立一个互联网络 (internetwork) 连接需要如下信息:
  • 专用 IPSEC 路由器的公共 IP 地址
  • 将网络节点流量路由到 Internet 的那些网关接口的 IP 地址
  • IPSEC 连接的惟一名称(比如,ipsec0)
  • 使用 racoon 创建的加密密钥
  • 验证预共享密钥
我们来看一个网络 my_net1.com 和 network my_net2.com 之间的 IPSEC 通道的示例。第一个网络的地址是 192.168.1.0/24,第二个网络的地址是 192.168.2.0/24。第一个网络内的网关的 IP 地址是 192.168.1.254,而第二个网络内网关的 IP 地址是 192.168.2.254。路由器从网关单独实现并使用两个网络接口:eth0 具有 Internet 专用的静态公共 IP 地址,而 eth1 则能接收和处理来自 LAN 的数据包。
网络间的 IPSEC 连接使用了预共享密钥 r3dh4tl1nux。为第一个网络内的 IPSEC 互联网络连接创建的文件                ifcfg 的内容如  所示。在本例中,此连接具有惟一名称 ipsec1。 显示的是示例 /etc/sysconfig/network-scripts/ifcfg-ipsec1。
清单 6. 示例 ifcfg-ipsec1
1
2
3
4
5
6
7
8
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X




此连接在启动 (ONBOOT=yes) 期间建立并使用预共享密钥验证方法 (IKE_METHOD=PSK)。
具有预共享密钥的文件内容(名为 /etc/sysconfig/network-scripts/keys-ipsecX,其中             X 对于第一个网络为 0,对于第二个网络为 1 )如  所示。
可以更改验证密钥,而这要求文件 keys-ipsecX 在 IPSEC 路由器上可随时被编辑。密钥必须是完全相同的。 显示了示例 /etc/racoon/racoon.conf。
清单 7. 示例 racoon.conf 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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"




显示了与远端网络的特定连接的配置。文件的名称是 X.X.X.X.conf(其中 X.X.X.X 是远端 IPSEC 路由器的 IP 地址)。
清单 8. 样例 X.X.X.X.conf 文件
1
2
3
4
5
6
7
8
9
10
11
12
;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}




启动此 IPSEC 连接之前,可通过编辑文件 /etc/sysctl.conf 并设置正向等于 1 的 net.ipv4.ip_,从而在内核内激活 IP 路由。
为了确保修改得以实现,可发出此命令:sysctl -p /etc/sysctl.conf。
要建立连接,可以重启路由器或在路由器上运行代表 root 的如下命令:/sbin/ifup ipsec0。
路由器会自动生成初始化场景,场景由命令 ifup 在 IPSEC 连接建立时激活。
用如下命令检查网络路由器列表:/sbin/ip route list。
运行实用工具 tcpdump 来检查 IPSEC 连接,比如:tcpdump -n -i eth0 host my_net1.com
数据包必须包含 AH 和 ESP 数据。在本例中,ESP 的存在表明加密有效。 显示了在一个来自已建立连接的数据包上执行检查的示例:
清单 9. 带加密的样例数据包
1
2
3
12:24:26.155529 my_net2.com > my_net1.com: AH(spi=0x021c9834,seq=0x358): \
my_net2.com > my_net1.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
(ipip-proto-4)

返回列表