参考文献:
http://www.freeswan.org/freeswan_trees/freeswan-2.04/doc/config.html
网络环境:
LAN A---GW PC A---Internet---GW PC B---LAN B
A和B两边GW都有公网IP
LAN A
IP=192.168.0.0/24 GW=192.168.0.1
LAN B
IP=192.168.1.0/24 GW=192.168.1.1
GW PC A
LAN if=eth0 IP=192.168.0.1
WAN if=eth1 IP=202.100.100.100 GW=202.100.100.254
GW PC B
LAN if=eth0 IP=192.168.1.1
WAN if=eth1 IP=202.100.100.200 GW=202.100.100.254
安装:
两边GW PC上安装FreeS/WAN,推荐RPM安装(简单),源码编译方式我是没有成功过的
推荐下载地址:http://download.freeswan.ca/freeswan-x509/
ipsec.conf配置:
在两边的GW PC上做相同的配置
vi /etc/ipsec.conf
#添加以下信息
conn net-to-net
left=202.100.100.100 #GW PC A的eth1的IP
leftsubnet=192.168.0.0/24 #LAN A的网络
leftid=@xy.example.com #GW PC A的主机名
leftrsasigkey=0s1LgR7/oUM... #GW PC A上使用ipsec showhostkey --left可以查到该信息
leftnexthop=%defaultroute #GW PC A的eth1的网关
right=202.100.100.200 #GW PC B的eth1的IP
rightsubnet=192.168.1.0/24 #LAN B的网络
rightid=@ab.example.com #GW PC B的主机名
rightrsasigkey=0sAQOqH55O... #在GW PC B上使用ipsec showhostkey --right可以查到该信息
rightnexthop=%defaultroute #GW PC B的eth1的网关
auto=add #改成auto=start则该隧道在freeswan启动的时候自动完成连接
启动使用:
在两边的GW PC上执行以下命令
#service ipsec start
#ipsec auto --up net-to-net
iptables配置(作为GW需要做NAT服务,但是走ipsec的数据又不能被NAT掉)
GW PC A
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.0.0/24 -d !192.168.1.0/24 -j SNAT --to 202.100.100.100
GW PC B
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.1.0/24 -d !192.168.0.0/24 -j SNAT --to 202.100.100.200
检验隧道是否有效:
在LAN A或LAN B ping对方网络的活动主机
在GW上使用tcpdump -i eth1查看接口eth1的数据流信息
如果有类似以下的信息则表示隧道建立成功
192.168.0.11 > 192.168.1.11: ESP(spi=0x19d4cbe6,seq=0x16)