手把手教你搭建L2TP/IPsec VPN服务器,安全远程访问的利器
在现代企业网络环境中,远程办公已成为常态,而如何确保员工在公网环境下安全、稳定地访问内网资源,是网络工程师必须面对的核心问题之一,L2TP(Layer 2 Tunneling Protocol)结合IPsec(Internet Protocol Security)的方案,因其成熟、跨平台兼容性强和加密能力出色,成为许多组织部署远程接入服务的首选,本文将带你从零开始,基于Linux系统(以Ubuntu Server为例)搭建一个稳定可靠的L2TP/IPsec VPN服务器。
第一步:准备环境
你需要一台具有公网IP的Linux服务器(如阿里云ECS或AWS EC2),操作系统推荐Ubuntu 20.04 LTS或更高版本,确保防火墙开放UDP端口1701(L2TP)和500/4500(IPsec),若使用云服务商,还需配置安全组规则。
第二步:安装所需软件包
通过终端执行以下命令安装OpenSwan(IPsec实现)和xl2tpd(L2TP守护进程):
sudo apt update sudo apt install -y openswan xl2tpd
第三步:配置IPsec(/etc/ipsec.conf)
编辑配置文件,添加如下内容:
config setup
protostack=netkey
plutodebug=all
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=yes
auto=add
keyingtries=3
rekey=no
type=transport
left=YOUR_PUBLIC_IP
leftprotoport=17/udp
right=%any
rightprotoport=17/udp
第四步:设置预共享密钥(/etc/ipsec.secrets)
添加一行用于身份验证的密钥:
YOUR_PUBLIC_IP %any : PSK "your_strong_pre_shared_key"
第五步:配置L2TP(/etc/xl2tpd/xl2tpd.conf)
[global]
ipsec saref = yes
[lns default]
ip range = 192.168.100.100-192.168.100.200
local ip = 192.168.100.1
require chap = yes
refuse pap = yes
require authentication = yes
name = l2tpd
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
第六步:设置用户认证(/etc/ppp/options.xl2tpd)
启用PAP认证并指定DNS:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
第七步:创建用户账号(/etc/ppp/chap-secrets)
格式为:用户名 密码
username * password *
第八步:启动服务与测试
重启IPsec和L2TP服务,并启用内核转发:
sudo systemctl restart ipsec xl2tpd sudo sysctl net.ipv4.ip_forward=1
在客户端(Windows/macOS/Linux)配置L2TP连接,输入服务器IP、用户名和密码,选择“使用IPsec”并填入预共享密钥即可连接。
L2TP/IPsec不仅提供强加密通道,还能轻松集成到现有网络架构中,虽然配置稍复杂,但一旦成功,便能为远程团队提供安全、低延迟的访问体验,建议定期更新证书和密钥,并结合日志监控(如journalctl)保障运维安全,作为网络工程师,掌握这项技能,你就能为组织筑起一道无形却坚固的数字防线。




