三、openswan 安装
演示使用的系统是centos
1、输入下面命令安装 openswan
yum install -y make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced man nss openswan
2、通过 ipsec verify 查看状态,会出现如下报错可通过下面配置开启数据转发、关闭ICMP重定向、修改proc解决
①开启数据转发
把 net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1
把 net.ipv4.conf.default.rp_filter = 1 改成 net.ipv4.conf.default.rp_filter = 0
②关闭icmp重定向和写入内存
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
sysctl -p 写入内存
③修改proc,直接复制粘贴过去
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ip_vti0/rp_filter
④重启ipsec服务查看状态
ipsec restart #重启IPSEC 服务
ipsec verify #查看IPSEC 状态
3、防火墙放通
①查看防火墙状态,如果防火墙开启需要进行放通,如果防火墙状态是关闭的可以忽略
四、IPSEC 配置
1、修改ipsec 配置文件 vim /etc/ipsec.cof
①先把config setup、plutodebug=none、virtual_private、include的前面加个#注释掉或者删除掉(如下图)
②在include /etc/ipsec.d/*.conf 前面粘贴下面的配置,需要注意配置前面是有空格的
version 2
config setup
protostack=netkey
plutostderrlog=/var/log/pluto.log
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
conn centos-sangfor
ikev2=insist
ike=3des-md5;dh2
esp=3des-md5;dh2
authby=secret
ikelifetime=3600
keylife=28800
pfs=yes
auto=start
leftid=@centos
left=172.21.0.10
leftsubnet=172.21.0.10/32
leftnexthop=%defaultroute
rightid=@sangfor
right=180.141.76.211
rightsubnet=172.16.16.0/24
rightnexthop=%defaultroute
说明注释:
version 2 #使用版本2
config setup #配置设置
protostack=netkey #使用2.6内核内建模块netkey,2.6以下是KLIPS模块
plutostderrlog=/var/log/pluto.log #日志记录,也可以通过查看日志/var/log/messages以及/var/log/secure来查看连接启动的具体情况
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 #加密网段传输
conn centos-sangfor #自定义名称,conn是固定参数,centos-sangfor可以自行修改
ikev2=insist #使用IKEV2版本,如果使用IKEV1可以忽略
ike=3des-md5;dh2 #IKE参数,对应的第一阶段安全提议
esp=3des-md5;dh2 #第二阶段的安全提议
authby=secret #使用预共享密钥
ikelifetime=3600 #IKE SA超时时间
keylife=28800 #IPSEC SA超时时间
pfs=yes #是否使用密钥完美向前保密pfs(yes或者no)
leftid=@centos #本端身份ID
left=172.21.0.10 #本端接口IP,NAT环境写内网接口IP,公网直接在网卡中写公网IP
leftsubnet=172.21.0.10/32 #本端网段
leftnexthop=%defaultroute
rightid=@sangfor #对端身份ID
right=180.141.76.211 #对端公网IP
rightsubnet=172.16.16.0/24 #对端网段
rightnexthop=%defaultroute
2、配置连接地址和预共享密钥 ,修改 vim /etc/ipsec.secrets
添加 @centos @sangfor : PSK “sangfor123”
#@centos是源(本端) @sangfor是目的(对端) “sangfor123”是预共享密钥
这里不能写IP地址,写IP地址会导致无法协商成功,所以需要用前面配置的 leftid和 rightid
3、重启IPSEC 服务
ipsec stop start #关闭IPSEC 服务再打开,如果出现跟进对应的说明进行修改,后面故障排查有详细说明
ipsec verify #查看IPSEC状态
ipsec auto --up centos-sangfor #查看IPSEC 连接状态
4、状态检查
通过ping对端能通,说明配置成功隧道建立成功
五、排障分析
1、到AF系统->系统故障日志->日志选项设置,勾选所有的日志选项,只看DLAN总部的日志
根据日志报错排障
这个一般是双方无法收到对端的信息,检查500,4500端口是否正常,两边IKE阶段是否配置正确
2、如下报错是两边的IKEv2中的认证算法两端不一致会有对应的报错提示,通过修改一端的配置解决
3、如下报错需要检查双方的共享密钥是否一致,linux端是否写了IP地址,不能写IP地址只能写@的id
4、端口测试,使用 yum install nc -y 安装nc
nc -vuz 180.141.76.211 500 #测试目标 180.141.76.211的UDP500是否能通
5、公有云上的服务器还需要查看公有云的安全规则是否放通,需要出入站都放通