ChinaUnix首页 > 精华文章 > VPN > 正文

[原创] IPSec-tools(RedHat自带VPN设置)


http://www.chinaunix.net 作者:toakee  发表于:2009-03-24 16:48:26
发表评论】 【查看原文】 【VPN讨论区】【关闭

更多VPN设置可以看我的[url=http://www.yoyotown.com/?cat=40]VPN专题;
[color=Red]    * [/color][url=http://www.yoyotown.com/?p=224]ipsec-tools设置(又一IPSec VPN)
[color=Red]    * [/color][url=http://www.yoyotown.com/?p=218]Openswan VPN安装设置
[color=Red]    * [/color][url=http://www.yoyotown.com/?p=203]Open VPN安装设置 
[color=Red]    * SSL VPN的真正价值(转自ChinaUnix) [/color]
[color=Red]    * VPN简介 [/color]


实现IPSec要求主机安装上安装 ipsec-tools RPM 软件包,Redhat一般默认安装。

    rpm -qa |grep ipsec-tools


vpn

网络1和网络2想通过 IPsec 隧道来彼此连接。网络1的网络地址在 192.168.10.0/24 范围内,网络2使用 192.168.20.0/24 范围。网络1的网关 IP 地址是 192.168.10.1,网络2的网关地址是192.168.20.1。

每个网络间的 IPsec 连接使用一个值为 yoyotown.com 的预共享钥匙,网络1和网络2都同意让 racoon 自动生成和共享每个 IPsec 路由器之间的验证钥匙。网络1把 IPsec 连接命名为 ipsec0,而网络2把 IPsec 连接命名为 ipsec1。

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

    TYPE=IPSEC
    ONBOOT=yes # 引导时激活
    IKE_METHOD=PSK # 使用预共享密钥
    SRCGW=192.168.10.10 # 源网关
    DSTGW=192.168.20.10 # 目标网关
    SRCNET=192.168.10.0/24 # 源网段
    DSTNET=192.168.20.0/24 # 目标网段
    DST=192.168.1.20 # 网络2VPN Server的外网IP

以下是预共享钥匙文件(叫做 /etc/sysconfig/network-scripts/keys-ipsecX,这里的 X 对网络1来说是0,对网络2来说是1),两个工作站都使用它来彼此验证。该文件的内容应该完全一致,并且只有root用户才应该有读写权。

    IKE_PSK=yoyotown.com

改变 keys-ipsec0 文件的权限,只有root用户才有读写权。

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

要在任何时候改变验证钥匙,编辑两个 IPsec 路由器上的 keys-ipsecX 文件。这两个钥匙必须 完全一致才能保证正确的连接性。

以下是 IPsec 连接的 /etc/racoon/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” # IPSec被激活时自动生成,X.X.X.X为远程VPN Server的外网IP

以下是连接到远程网络时生成的配置文件。该文件的名称为 X.X.X.X.conf。注意,一旦 IPsec 隧道被激活,该文件会被自动生成。

    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 连接前,内核中应该启用 IP 转发。在 shell 提示符下作为root用户来启用 IP 转发:

1.编辑 /etc/sysctl.conf,把 net.ipv4.ip_forward 设置为 1。
2.执行以下命令来启用改变:

    sysctl -p /etc/sysctl.conf

以root用户身份启动 IPsec 连接:

    service network restart

连接被激活,网络1和网络2能够彼此通信。



使用下面命令可以显示路由信息:

    route  -n



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

    tcpdump -n -i eth1 host 192.168.1.20

分组应该包含 AH 头,应该为显示为 ESP 分组。ESP 意味着它被加密了:



如果你的VPN Server和默认网关是同一台机器,则无需下面操作:

由于LServer不是子网的网关,所以必须在L-APP Server上设置路由(或者在网关192.168.10.1上设置下面路由,以避免在内网的每台机器上设置路由):
L-APP Server上路由配置:

    route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.10.10

由于RServer不是子网的网关,所以必须在R-APP Server上设置路由(或者在网关192.168.20.1上设置下面路由,以避免在内网的每台机器上设置路由):
R-APP Server上路由配置:

    route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.20.10

测试连通


[ 本帖最后由 toakee 于 2009-3-15 09:46 编辑 ]



 navywang 回复于:2009-03-19 11:42:24

请教 ipsec问题
各位高手:
我目前正在REDHAT EL4下面试验搭建lan-lan的IPSEC的VPN,已经按照其他高手推荐的文档配置完成
但是在启动ifup IPSEC0时出现如下错误

[root@vpn ~]# ifdown ipsec0
RTNETLINK answers: No such process
[root@vpn ~]# ifup ipsec0
RTNETLINK answers: Network is unreachable
查看日志
tail /var/log/messages
Mar 18 15:51:29 localhost racoon: INFO: fe80::205:5dff:fe72:608a%eth1[500] used as isakmp port (fd= 
Mar 18 15:51:29 localhost racoon: INFO: ::1[500] used as isakmp port (fd=9) 
Mar 18 15:51:29 localhost racoon: INFO: 192.168.1.189[500] used as isakmp port (fd=10) 
Mar 18 15:51:29 localhost racoon: INFO: 127.0.0.1[500] used as isakmp port (fd=11) 
Mar 18 15:53:22 localhost sshd(pam_unix)[13813]: session opened for user root by (uid=0)
Mar 18 15:53:30 localhost racoon: INFO: unsupported PF_KEY message REGISTER 
Mar 18 16:19:42 localhost sshd(pam_unix)[12456]: session closed for user root
Mar 18 16:19:42 localhost kernel: device eth1 left promiscuous mode
Mar 18 16:30:13 localhost smartd[5453]: Device: /dev/sda, Temperature changed -2 Celsius to 33 Celsius since last report 
Mar 18 16:47:40 localhost racoon: INFO: unsupported PF_KEY message REGISTER 
请问出现上述问题应该是那里的错误,谢谢


 wenzk 回复于:2009-03-20 21:21:49

好帖,虽没没有在Linux配置过IPsec,但是觉得文章具有指导意义


 force_eagle 回复于:2009-03-21 11:26:36

能把setkey与racoon.conf配置全用中文描叙一遍就好!

:wink:


 shichunda 回复于:2009-03-22 21:20:12

有意思,好好看看。不过楼主,你是在多少台pc的网络上部署的?


 xiangyu1986 回复于:2009-03-24 16:48:26

我也出现这个问题了
不过后来用起来没有什么问题,可能暂时没有出现吧
racoon的协商是在真正有数据包开始通信时才开始的




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=1394871
转载请注明作者名及原文出处