安装 openswan 及其环境
一、openswan 介绍
- OpenSWan是linux选Ipsec及I2tp协议的一个不错的实现方案。他支持和ipsec相关的大多数的扩展(RFC+IETF drafts)。Openswan项目起源于FreeS/WAN 2.04项目,该项目的功能很强大,可以很大程度上保证数据在跨网传输中的安全性、完整性,特别是通过它,可以很好地实现跨机房或异地办公场所实现局域网互联解决方案,如果和openvpn工具配合,可以实现将注入门户网站的多机房互访及vpn的各种强大解决方案.
- ucloud和公司网络打通,实现内网互通:
环境:
服务器:(外) 106.75.x.x (内) 10.10.68.61
公司:(外) 58.22.x.x(内)192.168.99.168
二、安装 openswan 及其环境(两台都要装)
2.1 软件安装
Centos:1
2yum install -y gmp gmp-devel gawk flex bison iproute2 iptables sed awk cut python xmlto lsof
yum install -y openswan
Ubuntu:1
2apt-get update
apt-get install -y openswan lsof
(ubuntu 会交互安装,第一个询问启用 X.509 证书的时候选择 no,第二个只要点 ok 就可以。)
2.2、开启 linux 主机的路由功能(所有为ipsec vpn server 的主机都要开启)
vim /etc/sysctl.conf1
2
3
## Controls IP packet forwarding
net.ipv4.ip_forward = 1
(开启主机路由转发)1
2##Controls source route verification
net.ipv4.conf.default.rp_filter = 0
(关闭源路由验证)
修改 /etc/sysctl.conf文件,加入以下内容:
1 | net.ipv4.ip_forward = 1 |
修改完成后执行 sysctl -p 加载配置。
2.3、在控制台上的防火墙添加 ipsec vpn 所用的端口
1 | 云服务商(阿里 腾讯 金山)开放端口 UDP 500 4500 |
2.4 测试udp端口
1 | nc -vuz 58.22.x.x 500 |
Connection to 58.22.x.x 500 port [udp/isakmp] succeeded!
2.5 验证环境
1 | ipsec verify (一个 N/A 和一个 DISABLED 不影响 ipsec vpn 的建立,Ubuntu 主机可能在checking /bin/sh 会多一个 warning,也不影响。) |
1 | Verifying installed system and configuration files |
三、配置服务
3.1 检测服务正常(所有为 ipsec vpn server 的主机)
1 | service ipsec start |
3.2 配置认证 key(所有为 ipsec vpn server 的主机)
vim /etc/ipsec.secrets1
2
3
4
5#include /etc/ipsec.d/*.secrets
#源IP 目标IP: PSK "(key)" (0.0.0.0 即为所有 vpn 都使用这个 key)
0.0.0.0 0.0.0.0 : PSK "boyihuyu.com" (注意空格格式不能错)
3.3 配置VPN主体
3.3.1 跨外网云主机间(云主机和其他公司内网 linux 主机)互通
192.168.99.168:
cat /etc/ipsec.d/boyihuyu.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19conn BY-to-UC
ike=3des-sha1
authby=secret
phase2=esp
phase2alg=3des-sha1
compress=no
type=tunnel
pfs=yes
leftid=106.75.x.x
left=106.75.x.x
leftsubnet=10.10.0.0/16
leftnexthop=%defaultroute
rightid=58.22.x.x
right=192.168.99.168
rightsubnet=192.168.0.0/16
rightnexthop=%defaultroute
auto=start
106.75.x.x:
cat /etc/ipsec.d/ucloud.conf
1 | conn UC-to-BY |
对端网络设备(B)配置参数:
Peer 的 ip 为云主机的外网 ip 即 A.A.A.A
第一阶段选择 ikev1 主模式(main mode),参数为 3des、sha、group2。
第二阶段选择模式为 tunnel,参数为 esp、3des、sha。
启用 pfs 和 nat-t(nat 穿越)。
感兴趣流为 b.b.0.0/16 到 a.a.0.0/16,即用户端网段到云主机网段。
四、测试完成与错误定位
4.1 测试
1 | ipsec auto --up BY-to-UC |
这个状态即为启动成功,两端可互相 ping 通。1
ping 10.10.68.61
4.2 VPN自动启动
1 | chkconfig ipsec on |
将/etc/ipsec.conf 文件中的 auto=add 改为 auto=start
4.3 其他主机路由
其他云主机如果要通过 ipsec 访问对端要增加相应的路由,或者网关指向本地的 ipsec服务器。
4.4 故障排查 发生no connection named “xxxxx”的报错时基本为配置文件错误或者conn名字错误,检查conn名称、配置文件格式,并查看/var/log/messages中具体错误参数/格式提示。
发生第一阶段(STATEMAINI1)或者第二阶段(STATEQUICKI1)初始化超时报错的时候,多为两端参数配置错误导致的协商失败,需要查看/var/log/secure以及对端的日志确定具体哪个参数协商错误。