Debian下用OpenSwan搭建IPSEC VPN

Debian下用OpenSwan搭建IPSEC VPN

应用场景
由于各机房或者机柜之间要通过内网进行数据交互,因此需要将内网打通,Ipsec VPN支持net-net的方式,可以实现这个功能 。
软件介绍
在linux下,可以用openswan来实现IPSEC VPN的环境搭建,从目前使用情况来看,效果较好,可以实现linux服务器之间,linux服务器与H3c U200设备之间的IPSEC VPN隧道创建。由于服务器的处理能力较强,VPN通道的传输能力比较强,可满足大量数据的传输要求。
软件安装:
由于debian强大的包管理器,使安装变得非常简单,使用以下一条命令就可以完成安装。
apt-get install openswan

询问是否使用 opportunistic encryption 选NO(默认)

询问是否创建公、私钥对,选NO(需移动选择)

确定后很快即完成了安装。
软件配置:
生成密钥:
使用以下命令生成服务器的密钥
ipsec newhostkey  --output /etc/ipsec.secrets


如果此操作执行了很久没有完成,这可能是由于程序的一个BUG导致执行失败了,可以按以下的方式解决。
Ctrl+c结束掉程序,修改以下文件
/usr/lib/ipsec/newhostkey 第60行,
ipsec rsasigkey $verbose $host $bits
改成以下这样
ipsec rsasigkey $verbose --random /dev/urandom $host $bits

然后再次执行,即可。
修改系统配置
拷贝/etc/ipsec.d/examples/sysctl.conf 中的所有内容到追加到/etc/sysctl.conf
cat /etc/ipsec.d/examples/sysctl.conf  >>/etc/sysctl.conf

然后,
#sysctl –f

检查安装:
执行以下命令,检查输出结果
debian#ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.4.12/K2.6.26-2-686-bigmem (netkey)
Checking for IPsec support in kernel                            [OK]
NETKEY detected, testing for disabled ICMP send_redirects       [OK]
NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
Checking for RSA private key (/etc/ipsec.secrets)               [OK]
Checking that pluto is running                                  [OK]
Checking for 'ip' command                                       [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

如果输出以上内容,恭喜你,安装是正确的。
生成私钥
生成两边的密钥
ipsec showhostkey --left
ipsec showhostkey --right

其实两个key的内容是一样的, 只是分left和right,left和right是相对的。

增加网络配置:
配置文件是:/etc/ipsec.conf
初始配置文件如下:
######################################################
# /etc/ipsec.conf - Openswan IPsec configuration file
# RCSID $Id: ipsec.conf.in,v 1.15.2.6 2006-10-19 03:49:46 paul Exp $

# This file:  /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual:     ipsec.conf.5


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

# basic configuration
config setup
        # plutodebug / klipsdebug = "all", "none" or a combation from below:
        # "raw crypt parsing emitting control klips pfkey natt x509 private"
        # eg: plutodebug="control parsing"
        #
        # ONLY enable plutodebug=all or klipsdebug=all if you are a developer !!
        #
        # NAT-TRAVERSAL support, see README.NAT-Traversal
        nat_traversal=yes
        # virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
        #
        # enable this if you see "failed to find any available worker"
        nhelpers=0

# Add connections here

# sample VPN connections, see /etc/ipsec.d/examples/

#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
###############################################################

所需要增加网络配置如下:
将以下内容加到# Add connections here下面
conn net1-to-net0   net1-to-net0是连接名
        left=192.168.1.16    本端服务器的外网IP
        leftsubnet=192.168.30.0/24	  本端的内网段
     leftrsasigkey=0sAQNzT87y8jDxQpASTxAO4EKvLe8tvc4B/6DLgyTd23uzLf9Knx2EhiJxNHa/qUJ0tMVomcqAURfrQbGyYEEOmrGWZflnfWcWOQtaN/MUbf9/KWDFS0rbM8qb67eRi94+0kiYUes4jG0taw+0dGSe1F2UVZWiQY20EvuG78KDSLyCoNXbrEYTIi3g5kkVIZuQb3CjIlyFywl3DF07U4BIEHIqNomOlm86C+ZZg/vBKMbKPe+JpUMAYsWc/Rn9IT/RozCGPoi1gLLeBeLsOySVv8cm0/TKzIcrtEyn5yUPhliImWOZLRYvEc4JrOYeLA/+U294IOvZMe44c6OBUCYu4pRDsV0FIYOvQXlUkcmQ4F1qMRpp  这一行是刚刚生成的私钥。
        right=192.168.1.241  对端服务器的公网IP
        rightsubnet=10.10.20.0/24	对端的内网段
        rightrsasigkey=0sAQO0Ycw3Z4mz8Xsklq7FwfzayqVk4BlUkgGd1xCZASdODCKTodqCJOpm90tzf22DAZlrLRbglWBCtJaOBmmAgsF5yf6/fhldXjP8zwpCVlLvZ1XVadBf4J2dNlpskI+UfHocQvd7/9yhCiFHoxsDkivWj//J1bznYaeX+L6mq0D10Ut4v5ySWYwUKhw6iNWs6k9VOJLsBqdcqiwZJbrHH0/uC/2WNTVOInJB9RNOe1BbvQ58nk1OgguUNAaRbMQMaMXtJ7MOLAV+bXc7BCoAnEu3c8bccDSrLpZv1OZcWHZ3/LIXd6J1FBirMpI8zJUFAJHPFZzKJjx/zFqOhoLE2P39R3TqYZuhOLpzA4NxJK3U7+5n 对端服务器的私钥
        auto=start  设置成自动连接

以下是另一个连接
conn net2-to-net0
        left=192.168.1.245
        leftsubnet=192.168.40.0/24
       leftrsasigkey=0sAQN+Eqgb8wB9ufW0b1X3NZKVrC8do1gHGbRTfDIiYIFu13o8KKTmhbetf/bxPhCJzo1rW9DPBVYNVeVKHDS3plSKImZ0vQh1K3Z/fFMptaIwiTaIT8zXrnVgPiKn6I304jVwTfGr6BgL5z84teIvsuZA6MhJ23wBCTcSXEzeWX9DqhSWrQOuR+4FBxg+QFjunNsVgr3QXASeDU7982HePX1v+nLw81wqYn29B9KucvlpIij60oSYzcBUAKXDaheN7apImGovhadBlw4XSL9l0OpgSCQ8DpbK3S5M6SE5cR5QYBn5E9AnPM8IW+igJe9h0Pk6+jwGXjTzm9uQTDo+WUlNAnHPK+tbVbogWW0LNMi2RyOV
        right=192.168.1.241
        rightsubnet=10.10.20.0/24
        rightrsasigkey=0sAQO0Ycw3Z4mz8Xsklq7FwfzayqVk4BlUkgGd1xCZASdODCKTodqCJOpm90tzf22DAZlrLRbglWBCtJaOBmmAgsF5yf6/fhldXjP8zwpCVlLvZ1XVadBf4J2dNlpskI+UfHocQvd7/9yhCiFHoxsDkivWj//J1bznYaeX+L6mq0D10Ut4v5ySWYwUKhw6iNWs6k9VOJLsBqdcqiwZJbrHH0/uC/2WNTVOInJB9RNOe1BbvQ58nk1OgguUNAaRbMQMaMXtJ7MOLAV+bXc7BCoAnEu3c8bccDSrLpZv1OZcWHZ3/LIXd6J1FBirMpI8zJUFAJHPFZzKJjx/zFqOhoLE2P39R3TqYZuhOLpzA4NxJK3U7+5n
        auto=start

完成以上配置后,重启ipsec服务即可,如果配置正常,即可建立隧道。(某些情况下,需要ping对端的IP才能激活隧道)

防火墙配置:
防火墙需要开通udp 500端口的访问,ah、gre协议的访问,如下
iptables -I INPUT -s 192.168.1.241/32 -i eth1 -p udp -m udp --dport 500 -j ACCEPT 
iptables -I INPUT -s 192.168.1.241/32-i eth1 -p ah -j ACCEPT 
iptables -I INPUT -s 192.168.1.241/32 -i eth1 -p gre -j ACCEPT


常用命令:
ipsec  auto --add 连接名 用于在某些不方便重新ipsec服务器的情况下,将配置文件修改后,热加载配置文件中新加的连接;
ipsec auto --delete 连接名 同上场景中,用于删除,对于修改一个连接,可以先删除再新加。
ipsec auto --down 连接名 断开一个连接;
ipsec auto --up 连接名 手动连接一次;

常见问题处理:
 网络异常断开后导致VPN隧道不能建立
由于网络频繁的通断,可能导致这个问题,遇到这种情况,使用上面的命令手动重连即可;

猜你喜欢

转载自yaofayang.iteye.com/blog/2061685