Linux下L2TP/IPsec VPN的搭建与配置详解:从零开始构建安全远程访问通道

在现代企业网络架构中,远程办公和跨地域访问已成为常态,为了保障数据传输的安全性和稳定性,虚拟私人网络(VPN)技术成为不可或缺的一环,L2TP(Layer 2 Tunneling Protocol)结合IPsec(Internet Protocol Security)是一种成熟、广泛支持的协议组合,尤其适合在Linux服务器上部署,本文将详细介绍如何在Linux系统(以Ubuntu 20.04为例)上搭建一个安全、稳定的L2TP/IPsec VPN服务,适用于中小型企业或个人用户远程接入内网资源。

确保你有一台运行Linux的服务器(如Ubuntu Server),并具备公网IP地址,我们使用StrongSwan作为IPsec后端,xl2tpd作为L2TP守护进程,整个流程分为以下几个步骤:

第一步:安装必要软件包
通过终端执行以下命令安装所需工具:

sudo apt update
sudo apt install strongswan xl2tpd -y

第二步:配置IPsec(StrongSwan)
编辑 /etc/ipsec.conf 文件,添加如下内容:

config setup
    charondebug="ike 1, knl 1, cfg 1"
    uniqueids=no
conn %default
    keylife=20m
    rekey=yes
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256!
    dpdaction=restart
    dpddelay=30s
conn l2tp-psk
    auto=add
    left=%any
    leftid=@your-server.com
    leftsubnet=192.168.1.0/24
    right=%any
    rightsourceip=192.168.1.100-192.168.1.200
    authby=secret
    pfs=yes
    type=transport
    ikelifetime=60m
    keylife=20m
    rekey=yes
    dpdaction=restart
    dpddelay=30s

注意:leftid 应设置为你的服务器域名或IP,便于客户端识别;rightsourceip 是分配给客户端的IP段。

第三步:设置共享密钥
编辑 /etc/ipsec.secrets 文件,添加预共享密钥(PSK):

%any %any : PSK "your_strong_pre_shared_key_here"

请务必使用强密码,并妥善保管此文件权限(建议 chmod 600 /etc/ipsec.secrets)。

第四步:配置L2TP(xl2tpd)
修改 /etc/xl2tpd/xl2tpd.conf

[global]
port = 1701
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 192.168.1.100-192.168.1.200
local ip = 192.168.1.1
require chap = yes
refuse pap = yes
require authentication = yes
name = l2tpd
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd

第五步:配置PPP选项
创建 /etc/ppp/options.xl2tpd

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
modem
noipx
mtu 1280
mru 1280
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

第六步:添加用户认证
编辑 /etc/ppp/chap-secrets


此处用真实用户名和密码替换“username”和“password”。

第七步:启用IP转发与防火墙规则
编辑 /etc/sysctl.conf 启用IP转发:

net.ipv4.ip_forward = 1

执行 sysctl -p 生效。

然后配置iptables允许流量通过:

sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 1701 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

重启服务:

sudo systemctl restart strongswan
sudo systemctl restart xl2tpd
sudo systemctl enable strongswan xl2tpd

至此,L2TP/IPsec VPN已成功搭建,客户端可通过Windows、iOS或Android设备连接,输入服务器IP、用户名和密码即可建立加密隧道,该方案兼顾安全性与兼容性,是Linux环境下部署远程访问服务的理想选择。

Secrets for authentication using CHAP  第1张

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN