最近更新时间:2025-12-29 22:59:33
本文档通过在客户侧开通一台服务器,安装并配置开源IPSEC VPN软件,作为VPN的一端;同时配置金山云托管VPN,作为VPN的另一端;两端建立IPSEC VPN隧道,最终实现两边的内网可以互相ping通。
搭建的VPN拓扑如下:
在客户侧创建一台服务器,操作系统ubuntu22.04,安装StrongSwan,配置IPSEC VPN步骤如下:
1. 首先,在 /etc/sysctl.conf 配置文件中添加适当的系统变量启用数据包转发。
$ sudo vim /etc/sysctl.conf查找以下行,取消注释并设置值如下。
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp = 02.运行以下命令加载新设置。
sudo sysctl -p3. 确认防火墙没有启用
sudo ufw status4. 配置iptables调整mss大小,解决大包无法过VPN的问题
#假定物理接口为eth0
sudo iptables -t mangle -A FORWARD -o eth0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
#确认配置
sudo iptables -t mangle -L -n -v5. 安装 strongswan 程序包。
sudo apt update
sudo apt install strongswan 6. 安装完成后,安装程序脚本将启动 strongswan 服务,并使其在系统启动时自动启动。使用以下命令检查其状态以及是否已启用。
sudo systemctl status strongswan-starter.service
sudo systemctl is-enabled strongswan-starter.service7. 使用 /etc/ipsec.conf 配置文件配置安全网关。
sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo vi /etc/ipsec.conf 将以下配置复制并粘贴到文件中。(将原有配置全部注释掉)
config setup
charondebug="all"
uniqueids=yes
conn devgateway-to-prodgateway
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
leftid=36.103.167.250 /*自己的公网IP*/
left=10.2.0.6 /*自己的内网IP*/
leftsubnet=10.2.0.0/24 /*自己的内网网段*/
right=120.92.121.158 /*对端的公网IP*/
rightsubnet=172.31.0.0/16 /*对端的内网网段*/
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
lifebytes=0
dpddelay=10s /*决定失败后重试的间隔*/
dpdtimeout=120s
dpdaction=restart
8. 在 /etc/ipsec.secrets 文件中添加 PSK。
sudo vim /etc/ipsec.secrets复制并粘贴以下行。
10.2.0.6 120.92.121.158 : PSK "kingsoft123" /*语法:自己IP、对端IP*/1)路由配置
内网配置路由,将去往172.31.0.0/16的下一跳,指向VPN Server;
2)VPN Server安全配置
VPN Server的入向,只放行对端托管VPN 的公网IP(或者只放行对端VPN端口号:udp 500,udp 4500):
3)客户内网安全配置(如果有)
客户侧内网需要允许对端内网网段172.31.0.0/16的访问。
新建VPN网关,如下所示:
VPN网关添加去往对端内网网段路由,如下所示:
?
路由模式:选择“目的路由”模式
隧道参数按如下配置:(互联IP选择自动分配即可)
配置完成后如下所示:
指定对端VPN公网IP
托管VPN的内网安全组入向,需要允许对端内网网段。
1. 重启VPN Server的 IPSec 程序,使得配置生效,并检查其状态以查看连接。
sudo ipsec restart
sudo ipsec status成功后输出如下:
2. 同时托管VPN通道状态如图所示:
注:隧道2没有进行配置,所以状态为失败。
3. 最后,通过运行 ping 命令验证两侧内网的互通性。
ping x.x.x.x4. 托管VPN流量监控:(ping流量)
纯净模式
