部署 IPsec VPN 服务器
概述
IPSec
全称为 Internet Protocol Security
,是由 Internet Engineering Task Force (IETF)
定义的安全标准框架,用以提供公用和专用网络的端对端加密和验证服务。
应用场景
公司内网部署 IPsec
服务器,并在路由器上做相应的端口映射,实现在家里访问公司内网服务器或服务
准备工作
linux
服务器 1
台(我这台机器的 IP
为 10.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
网段的机器,自行按需修改
接下来的两条防火墙规则,则开放了 500
和 4500
端口
最后记得要 save
一下并重启一下 iptables
和 docker
[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
在路由器上做端口映射
不同路由器不同做法,请根据实际情况自行设置
连接 IPsec VPN
此处用 win10
举例子
测试是否可用
刚我做了 10.18.193.0/24
网段的转发,现在来测试一下,我们来连接同网段的另外一台服务器 10.18.193.9
参考资料
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