刚刚在redhat 9 下配置成功了freeswan 2。05。化了很多时间,网上也没有完整的配置文档,很多都是对低版本的freeswan,现在总结一下,大家给指点一下。

环境:局域网中的两个LAN自己建立一个××× tunnel。
设备:两个安装redhat 9 的PC作为gateway,安装了两个网卡。

网络连接:
left LAN 192.168.1.0/24 ===192.168.1.131---192.168.3.133
right LAN 192.168.4.0/24 ===192.168.4.111---192.168.3.111

在left LAN中的测试pc的ip地址为 192.168.1.134,default gateway 为 192.168.1.131
right LAN中的测试PC的IP地址为192.168.4.150。 default gateway为 192.168.4.111

首先,在两个linux网关上开启IP forward: echo "1" > /proc/sys/net/ipv4/ip_forward

注意:当机器网络重新启动,这个数字会恢复default=0。要修改的话,可以修改/etc/sysctl.conf文件,永久生效。

两个gateway设置default gateway,由于我们这个环境比较简单,left的default GW就使用right Gateway。可以在/etc/sysconfg/network-scripts/ifcfg-eth1脚本中,增加:

LeftGateway机器上 GATEWAY=192.168.3.111
RightGateway机器上 GATEWAY=192.168.3.133

然后 service network restart

现在先测试这个网关的正确性:在测试leftpc上,ping 192.168.1.131, ping 192.168.3.133, ping 192.168.3.111, ping 192.168.4.111, ping 192.168.4.111

这些都应该能ping通。在 rightpc上,执行相同的测试,也应该能通。这样,说明网络环境正确。这是进行***的前提。

到这里,容易出现的错误是:
1 gateway的 defaut gw不正确
2 两个测试pc的缺省网关不正确
3 gateway linux 中的ip forward 没有打开
4 网线有问题

上面这些问题我都碰到了。


下面开始安装 freeswan-mdoule freeswan-userhand rpm。下载url(for redhat 9):
ftp://ftp.xs4all.nl/pub/crypto/freeswan/binaries/RedHat-RPMs/2.4.20-8/

安装比较简单,rpm -ivh *.rpm

安装之后,应该又ipsec.o这个模块。可以使用:ipsec setup status来验证

安装完成之后,可以运行setup 在system service 中,把ipsec这个服务改为不自动启动的。

使用 ipsec setup start来启动ipsec,然后 ipsec verify 来验证。按照 freeswan网站的解释,这个应该能测试安装的正确性。

下面先说使用共享密钥的,这个好像比较简单:

vi /etc/ipse.conf, 修改其中的left right等设置。我的是:

version 2.0

# basic configuration
config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
interfaces=%defaultroute
# Debug-logging controls: "none" for (almost) none, "all" for lots.
klipsdebug=all
plutodebug=all
# Use auto= parameters in conn descriptions to control startup actions.
# Close down old connection when new one using same ID shows up.



conn net-to-net
left=192.168.3.133
leftsubnet=192.168.1.0/24
leftnexthop=192.168.3.111
leftid=192.168.3.133
right=192.168.3.111
rightsubnet=192.168.4.0/24
rightnexthop=192.168.3.133
rightid=192.168.3.111
authby=secret #说明使用共享的密钥
auto=add

#下面这些是非常重要的,freeswan解释使用下面这些来disable OE。因为我们是在LAN中,没有真实的#DNS来使用
conn block
auto=ignore

conn private
auto=ignore

conn private-or-clear
auto=ignore

conn clear-or-private
auto=ignore

conn clear
auto=ignore

conn packetdefault
auto=ignore




/etc/ipsec.secrets的内容如下:

192.168.3.133 192.168.3.111 : PSK : "1111"

注意两个gateway上的这两个文件要相同。

下面可以测试了:ipsec setup restart
ipsec auto --up net-to-net

在两个gateway上启动,然后在test pc 上 ping 对方LAN中的测试pc,应该可以通讯。

然后在 gateway linux 上,使用tcpdump -i eth0 应该看到esp的packet。也使用使用hub,连接另外一台pc来sniffer一下。

如果ping不成功,检查有没有ipsec established信息。也可以看 /var/log/messages /var/log/secure中的log信息。

下面就是使用rsa的了。首先使用ipsec newhostkey --output > /etc/ipsec.secrets来产生rsa 的key。然后修改ipsec.conf文件。我的ipsec.conf文件如下:


# /etc/ipsec.conf - FreeS/WAN IPsec configuration file
# RCSID $Id: ipsec.conf.in,v 1.11 2003/06/13 23:28:41 sam Exp $

# This file: /usr/local/share/doc/freeswan/ipsec.conf-sample
#
# Manual: ipsec.conf.5
#
# Help:
# http://www.freeswan.org/freeswan_trees/freeswan-2.06/doc/quickstart.html
# http://www.freeswan.org/freeswan_trees/freeswan-2.06/doc/config.html
# http://www.freeswan.org/freeswan_trees/freeswan-2.06/doc/adv_config.html
#
# Policy groups are enabled by default. See:
# http://www.freeswan.org/freeswan_trees/freeswan-2.06/doc/policygroups.html
#
# Examples:
# http://www.freeswan.org/freeswan_trees/freeswan-2.06/doc/examples


version 2.0 # conforms to second version of ipsec.conf specification

# basic configuration
config setup
# Debug-logging controls: "none" for (almost) none, "all" for lots.
# klipsdebug=all
# plutodebug=dns


# Add connections here.

# sample ××× connection
#sample# conn sample
#sample# # Left security gateway, subnet behind it, next hop toward right.
#sample# left=10.0.0.1
#sample# leftsubnet=172.16.0.0/24
#sample# leftnexthop=10.22.33.44
#sample# # Right security gateway, subnet behind it, next hop toward left.
#sample# right=10.12.12.1
#sample# rightsubnet=192.168.0.0/24
#sample# rightnexthop=10.101.102.103
#sample# # To authorize this connection, but not actually start it, at startup,
#sample# # uncomment this.
#sample# #auto=start

conn net-to-net
left=192.168.3.133
leftsubnet=192.168.1.0/24
leftnexthop=192.168.3.111
leftid=192.168.3.133
leftrsasigkey=0sAQOtJonT68nc2Sks9M9OkDpaqlHJA7MQvgxSYI7kQv2O3Cw27ar7KJp3mjo2QDpS/vOzyyw+iBzXmXS4v/LBZN2R7MD95OaBko7rASJMp3L7Pf0iVn9eNp5riwrn6r/AqoYGK2rXm1q2on9Ji4oTlzspASFNGgBWBm//riXTSfQTixFA0yBSaoy6lLJLaftylLq2vLkvDZw4CWKP9Vohz1OVvVuJALVm1ApZISoV0jWPz1j0UcUxRPWEOTgX54pK6AMAOOHGOjhEh5ZcCe5hRl6bu0A7fIsSQwoMqBcWcP24lGSz9IsfP1CvfH1PoY2rRZx15OXPRWVcmEtSlp5tmZrIjBLArqhTWMtasiTKN2S65HnOzNvyZUoQqxcGYyzAa+NXUX9JXwFzr4BFAMZMQk166xoCkhFEYQBYC5vpCHnN5rpo/bIFay/ETfFqYjQ99ljgWhAkzJpGsLnEau1AgxbapSrRqzBlDdcKXQ==
right=192.168.3.111
rightsubnet=192.168.4.0/24
rightnexthop=192.168.3.133
rightid=192.168.3.111
rightrsasigkey=0sAQOyDBQyZCCrZ6FbQXaTpyy8wRrQQhFzW+TiEFwDvQo8VslEkRgFJ2bpXRvw52fq5jsaaRnI1vm+/CxXoT8VMBBGMY4y3Yg6PILXb1qkIt3ZKP09Y4WeD2qBLqW4PaMZmXqfRvgiu0G2NfvvSZm2/ea+CuERyONOHG5BP7ltNmzseziqiImwca+joJaIbv0FzPqhsnC0Lruk47YlR06SjEH9+PxtUCgQ6PRyaPpsmIKjrAOaNeqUguB6B9Hz6dtGnqBEV3sgF4l2O3EqWhExqcl+CSMHlAOF1LE37qHjOiuRvsAK2D2JqEk+CQ0e3NTX+besITVABPV8EA1mHuihAXu8Ne8mU9QLZcZtF6Eu3t/lLU408a0PgDFIr6C6/bnubQ2k/HG/UYf6QxEo4FL7w4P5I1CmapDdNlTvtBDQ2r4di+VQ02rV+eZuuRfcsUsB+FMp0Vulv/idzQ+8RZwIYC0vAqJa/tKbpkJRQ67WhbtjGBiiMwP35fLNMslnnRbsCH7cL427Cho3FKEzvL6kF/4p4Y5ZZqtp5F8z496+Hyb5RJ+AFafdgadbjYhyvRfJ+DHph12wR52lgbdf
authby=rsasig
auto=add

conn block
auto=ignore

conn private
auto=ignore

conn private-or-clear
auto=ignore

conn clear
auto=ignore

conn packetdefault
auto=ignore


下面,ipsec setup restart ; ipsec auto --up net-to-net;再测试ping,应该又能通讯了!