概述

IPSec 全称为 Internet Protocol Security,是由 Internet Engineering Task Force (IETF) 定义的安全标准框架,用以提供公用和专用网络的端对端加密和验证服务。


应用场景

公司内网部署 IPsec 服务器,并在路由器上做相应的端口映射,实现在家里访问公司内网服务器或服务


准备工作

linux 服务器 1 台(我这台机器的 IP10.18.193.27)
路由器 1 台(建议有外网固定 IP 地址)


linux 服务器上部署 IPsec

需要使用 iptables 做转发,安装 iptables

[root@dev-of-IPsec-27 ~]# yum -y install iptables-services
[root@dev-of-IPsec-27 ~]# systemctl start iptables.service && systemctl enable iptables.service

此处使用 docker 部署,先安装 docker

[root@dev-of-IPsec-27 ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo
[root@dev-of-IPsec-27 ~]# yum -y install docker-ce.x86_64
[root@dev-of-IPsec-27 ~]# systemctl start docker.service && systemctl enable docker.service

配置 IPsec 配置文件

[root@dev-of-IPsec-27 ~]# mkdir -p /data/ipsec
[root@dev-of-IPsec-27 ~]# vim /data/ipsec/vpn.env
VPN_IPSEC_PSK=CFops@2019
# 预共享密钥
VPN_USER=ops
# 用户名
VPN_PASSWORD=itsupport.0
# 密码
VPN_DNS_SRV1=10.18.193.1
# dns1,建议为服务器所在内网网关
VPN_DNS_SRV2=114.114.114.114
# dns2,建议为服务器所在外网dns地址
[root@dev-of-IPsec-27 ~]# chmod 755 /data/ipsec/vpn.env

部署 IPsec
docker 部署命令,注意的是,每次修改了 /data/ipsec/vpn.env 文件内容,均需要删除原来的 docker 容器并重新启动一个容器

[root@dev-of-IPsec-27 ~]# docker run --name ipsec-vpn-server --env-file /data/ipsec/vpn.env --restart=always -p 500:500/udp -p 4500:4500/udp -d --privileged hwdsl2/ipsec-vpn-server
[root@dev-of-IPsec-27 ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                                          NAMES
48ae4f3fbcd7        hwdsl2/ipsec-vpn-server   "/opt/src/run.sh"   46 seconds ago      Up 45 seconds       0.0.0.0:500->500/udp, 0.0.0.0:4500->4500/udp   ipsec-vpn-server

配置防火墙转发并重新启动 docker
第一条防火墙规则,能使连接了 IPsec VPN 的用户能访问 10.18.193.0/24 网段的机器,自行按需修改
接下来的两条防火墙规则,则开放了 5004500 端口
最后记得要 save 一下并重启一下 iptablesdocker

[root@dev-of-IPsec-27 ~]# iptables -I FORWARD 2 -i ppp+ -d 10.18.193.0/24 -j ACCEPT && iptables -I FORWARD 2 -s 10.18.193.0/24 -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[root@dev-of-IPsec-27 ~]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
[root@dev-of-IPsec-27 ~]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
[root@dev-of-IPsec-27 ~]# service iptables save
[root@dev-of-IPsec-27 ~]# systemctl restart iptables.service && systemctl restart docker.service

在路由器上做端口映射

不同路由器不同做法,请根据实际情况自行设置

88152-e1ousndcq6a.png

92399-v6218n9p42.png


连接 IPsec VPN

此处用 win10 举例子

35128-xr4kz97zhk.png

27150-dy9z8xdax9t.png

30089-pul9na9y9fm.png

64808-cuzl955ich.png

59791-8r1lrpxftz6.png

81457-hg2xt5ixsu5.png

51607-j4ugsdtqhvg.png

68611-ybuh3cu60jg.png


测试是否可用

刚我做了 10.18.193.0/24 网段的转发,现在来测试一下,我们来连接同网段的另外一台服务器 10.18.193.9

53866-9i5ab5geoi.png


参考资料

https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/README-zh.md

https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md


文章作者: Runfa Li
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Linux 小白鼠
Linux 网络 Linux vpn IPsec
觉得文章不错,打赏一点吧,1分也是爱~
打赏
微信 微信
支付宝 支付宝