在CentOS7上使用Libreswan设置点对点IPSec VPN
前言
这是在两个CentOS 7主机之间设置主机到主机IPsec隧道的指南。
我们将使用Libreswan作为IPsec的实现。Libreswan在CentOS 7的默认软件包存储库中可用。 Libreswan自Openswan分支出來。
初始化
准备两台服务器
服务器A:
Location: FuZhou / cqnetcq External IP: 218.106.151.125 enp3s0 Internal IP: 192.168.100.200 enp2s0
服务器B:
Location: Beijing / kscyun External IP: 120.92.200.150 enp3s0 Internal IP: 10.9.3.30 enp2s0
环境初始化
分别在A/B服务器上执行
开启流量转发
$ cp -pv /etc/sysctl.conf{,.old} $ vim /etc/sysctl.conf ## Controls IP packet forwarding net.ipv4.ip_forward = 1 ## Controls source route verification net.ipv4.conf.default.rp_filter = 0
禁用send_redirects。
$ sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' $ sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf #执行后的结果如下(PS:不同服务器运行结果不一样,仅供参考) net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.enp2s0.accept_redirects = 0 net.ipv4.conf.enp2s0.send_redirects = 0 net.ipv4.conf.enp3s0.accept_redirects = 0 net.ipv4.conf.enp3s0.send_redirects = 0 net.ipv4.conf.ip_vti0.accept_redirects = 0 net.ipv4.conf.ip_vti0.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.lo.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.conf.eth1.rp_filter = 0
保存sysctl.conf
$ sysctl -p
setenforce关闭
分别在A/B服务器上执行
$ setenforce 0
/etc/hosts修改
分别在A/B服务器上执行
$ vim /etc/hosts 120.92.200.150 kscyun 218.106.151.125 cqnetcq
安装/配置
安装libreswan
分别在A/B服务器上执行
$ yum install -y gmp gmp-devel flex bison iproute2 iptables sed awk cut python xmlto $ yum install -y epel-release $ yum install -y libreswan $ cp -rp /etc/ipsec.conf{.,default}
执行ipsec verify,确认配置正常
分别在A/B服务器上执行
如果允许结果全部为 OK,则为正常; 相反则 环境初始化
环节需要重新检查。
$ ipsec verify
配置RSA密钥
分别在A/B服务器上执行
接下来,你需要配置RSA密钥,我们将使用RSA密钥进行身份验证,因为它提供了比私有共享密钥更高的安全级别。
服务器A:
$ ipsec initnss $ ipsec newhostkey --nssdir /etc/ipsec.d --output /etc/ipsec.d/cq-to-ksc.secrets $ ipsec showhostkey --list $ ipsec showhostkey --ckaid XXX --left
服务器B:
$ ipsec initnss $ ipsec newhostkey --nssdir /etc/ipsec.d --output /etc/ipsec.d/ksc-to-cq.secrets $ ipsec showhostkey --list $ ipsec showhostkey --ckaid XXX --left
修改配置文件
分别在A/B服务器上执行, leftrsasigkey/rightrsasigkey的值需要替换成自己生成。(本地为left,远端为right)
服务器A:
$ vim /etc/ipsec.d/cq-to-ksc.conf conn cq-to-ksc authby=rsasig left=%defaultroute leftsubnet=192.168.0.0/16 leftrsasigkey=0sAwEAAeL5diQXuE17r7LvwuLrYsSwqncd32nfiLmqQxD+JmuN...rPea3B5LkgbRd+FvwfzWXJdFb leftid=@cqnetcq right=kscyun rightsubnet=10.9.0.0/16 rightrsasigkey=0sAwEAAciTs1e8AN+cMNHMmOTelnTGOXeXw2lryoT3a7WXg4X3UcKX0Qp...tFHZP1sp8= rightid=@kscyun dpddelay=5 dpdtimeout=30 dpdaction=restart auto=add
服务器B:
$ vim /etc/ipsec.d/ksc-to-cq.conf conn ksc-to-cq authby=rsasig left=%defaultroute leftsubnet=10.9.0.0/16 leftrsasigkey=0sAwEAAciTs1e8AN+cMNHMmOTelnTGOXeXw2lryoT3a7WXg4X3UcKX0Qp...tFHZP1sp8= leftid=@kscyun right=cqnetcq rightsubnet=192.168.0.0/16 rightrsasigkey=0sAwEAAeL5diQXuE17r7LvwuLrYsSwqncd32nfiLmqQxD+JmuN...rPea3B5LkgbRd+FvwfzWXJdFb rightid=@cqnetcq dpddelay=5 dpdtimeout=30 dpdaction=restart auto=add
运行
启动程序
分别在A/B服务器上执行
服务器A:
$ systemctl start ipsec $ ipsec auto --add cq-to-ksc $ ipsec auto --up cq-to-ksc $ ipsec status
服务器B:
$ systemctl start ipsec $ ipsec auto --add ksc-to-cq $ psec auto --up ksc-to-cq $ ipsec status
路由转发(可选)
服务器A:
$ iptables -t nat -A POSTROUTING -s 10.9.3.0/24 -d 192.168.100.0/24 -j MASQUERADE 可选: 添加路由(vpn同段的其他服务器访问不了,可以试试) $ route add -net 10.9.3.0 netmask 255.255.0.0 gw 192.168.100.200
服务器B:
$ iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -d 10.9.3.0/24 -j MASQUERADE 可选: 添加路由(vpn同段的其他服务器访问不了,可以试试) $ route add -net 192.168.100.0 netmask 255.255.0.0 gw 10.9.3.30
抓包测试(可选)
$ tcpdump -n -i interface esp or udp port 500 or udp port 4500
参考
host-host-ipsec-libreswan-centos
sec-securing_virtual_private_networks
sec-Host-To-Host_VPN_Using_Libreswan
site-to-site_vpn_using_libreswan
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/9089.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~