为了学习ipsec协议,现在需要构造ipsec流量,这里是用ipsec协议封装gre协议
A over B 表示B是底层,A是上层,所以ipsec报文头在gre协议头前面
搭建ipsec环境之前需要先搭建gre环境,参考教程centos7搭建GRE隧道进行通信
根据gre协议搭建教程,两台服务器已经可以通过隧道进行通信,现在只需要对ip层进行加密即可
环境搭建
1.两台服务器都需要做的准备工作
# 1.安装ipsec
yum install libreswan
# 2.初始化
ipsec initnss
# 3.生成ckaid
# 这一步生成的ckaid需要先记录下来
ipsec newhostkey --configdir /etc/ipsec.d --random /dev/urandom --output /etc/ipsec.d/01.secrets --verbose;
# 4.获取密钥
# 生成的密钥需要记录下来
ipsec showhostkey --left --ckaid 上一步生成的ckaid
# 5.创建配置文件
touch /etc/ipsec.d/ipsec.conf
经过上述步骤服务器A和服务器B都有自己的密钥,需要记录下来
2.服务器A配置
# 1.打开配置文件
vim /etc/ipsec.d/ipsec.conf
# 2.添加以下内容
conn tun0
authby=rsasig
auto=start
type=transport
left=10.20.50.148
leftprotoport=gre
leftrsasigkey=服务器A生成的密钥
right=192.168.4.2
rightprotoport=gre
rightrsasigkey=服务器B生成的密钥
# 3.重启服务
systemctl restart ipsec
这里需要注意left表示服务器A,相对应的right就是服务器B
3.服务器B配置
这里只需要交换一下left和right的顺序即可
# 1.打开配置文件
vim /etc/ipsec.d/ipsec.conf
# 2.添加以下内容
conn tun0
authby=rsasig
auto=start
type=transport
left=192.168.4.2
leftprotoport=gre
leftrsasigkey=服务器B生成的密钥
right=10.20.50.148
rightprotoport=gre
rightrsasigkey=服务器A生成的密钥
# 3.重启服务
systemctl restart ipsec
4.验证
在服务器A上ping服务器B
ping 192.168.4.2
通过tcpdump抓取通信网卡(不是tun0)查看数据包
里面有ESP字段表示成功