1. OpenSwan介绍
OpenSwan是Linux下实现Ipsec及L2tp协议的一个不错的实现方案。OpenSwan项目起源于FreeS/WAN 2.04项目,其功能很强大,可以很大程度上保证数据在跨网传输中的安全性、完整性,特别是通过OpenSwan技术,可以很好地实现跨机房或异地办公场所实现局域网互联解决方案,如果和OpenVPN工具配合,可以实现将多机房互访及VPN的各种强大解决方案。
2. 环境介绍
本文目的旨在指导在Linux服务器上安装OpenSwan,使用OpenSwan搭建Ipsec VPN
3. OpenSwan安装
3.1 软件安装
yum -y install openswan
3.2 启动ipsec服务
systemctl start ipsec
3.3 检查ipsec服务
ipsec verify
对于上述检查结果中带红色的结果需要进一步处理
处理1:开启允许IP转发、永久性禁止重定向
命令:
net.ipv4.ip_forward=1;net.ipv4.conf.default.rp_filter=0
处理2:关闭ICMP重定向
命令:
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print $1"= 0"}' >> /etc/sysctl.conf
处理3:关闭SELinux
命令:
set enforce 0
处理4:关闭rp_filter
命令:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/bond0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp2s0f0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp2s0f1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ip_vti0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp6s0f0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp6s0f1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp6s0f2/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enp6s0f3/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
说明:conf后使用服务器上所有网卡的别名
再次使用ipsec verify进行确认
4. OpenSwan搭建IPSEC VPN配置
VPN配置举例:
VPN配置说明:
ipsec.conf说明
conn : 隧道名字(ipsec auto –delete/down/up conn_name )
left:配置B端详细信息,此处配置为10.30.10.212
leftid:配置B端出口公网IP,即36.111.134.8
leftsubnets:配置B端需打通的私网地址段,此处为10.30.10.0/24
right:配置A端的公网ip地址,即106.37.75.11
rightid:配置A端的公网ip地址,即106.37.75.11
rightsubnets: 配置A端私网地址段,即10.10.100.0/24
ike:此处配置的是VPN一阶段协商的参数,这些算法和参数用于保护隧道建立过程中的数据(协商参数有多种组合:3des-sha1 modp1024,aes-md5 modp1536等),协商的参数需跟A端保持一致
phase2:esp or ah 加密数据流方式,需跟A端保持一致
phase2alg:同ike,选择加密方式,协商ipsec sa,需跟A端保持一致
ipsec.secrets说明
B端公网地址 A端公司地址 加密密钥
B端公网地址:36.111.134.8
A端公网地址:106.37.75.11
加密密钥:举例子 PSK "Test@123"
5. VPN常用运维命令
ipsec verify //检验ipsec配置
service ipsec restart //重启ipsec服务
ipsec auto --delete conn_name //手动删除ipsec隧道conn_name
ipsec auto --add conn_name //手动添加ipsec隧道conn_name
ipsec auto --up conn_name //手动拉起ipsec隧道conn_name
ipsec status //查看ipsec状态