搭建L2TP/IPsec VPN服务器:从零开始的网络连接安全方案

在现代企业与远程办公场景中,安全、稳定、高效的远程访问成为刚需,L2TP(Layer 2 Tunneling Protocol)结合IPsec(Internet Protocol Security)是一种成熟且广泛支持的虚拟私人网络(VPN)解决方案,尤其适合中小型企业或个人用户部署私有网络隧道,实现跨地域的数据加密传输,本文将详细介绍如何在Linux系统(以Ubuntu Server为例)上架设一个功能完整的L2TP/IPsec VPN服务器,确保数据通信的安全性和稳定性。

第一步:环境准备
你需要一台运行Ubuntu Server 20.04或更高版本的物理机或云服务器,具备公网IP地址(静态IP更佳),并开放必要的端口:UDP 500(ISAKMP)、UDP 4500(NAT-T)、UDP 1701(L2TP),建议使用UFW防火墙进行精细化管理。

第二步:安装必要软件包
执行以下命令安装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
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev1
    authby=secret
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
conn l2tp-psk
    auto=add
    left=%any
    leftid=@your-server-hostname.com
    right=%any
    rightauth=pubkey
    rightsendcert=never
    rightsubnet=192.168.100.0/24
    leftprotoport=17/udp
    rightprotoport=17/udp
    type=transport
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart

注意:leftid 应填写你的服务器域名或IP,用于身份验证。

第四步:设置预共享密钥(PSK)
编辑 /etc/ipsec.secrets

%any %any : PSK "your_strong_pre_shared_key"

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

[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

第六步:设置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 1400
mru 1400
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

第七步:创建用户账号
编辑 /etc/ppp/chap-secrets


第八步:启用服务并重启

sudo systemctl enable strongswan xl2tpd
sudo systemctl restart strongswan xl2tpd

第九步:内核转发与NAT配置
开启IP转发:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

配置iptables NAT规则(假设网卡为eth0):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT

在客户端(Windows、iOS、Android等)配置L2TP/IPsec连接时,输入服务器IP、用户名密码及预共享密钥即可建立安全隧道。

通过以上步骤,你便成功搭建了一个可扩展、易维护的L2TP/IPsec VPN服务器,为远程办公、分支机构互联提供可靠保障,务必定期更新软件补丁,强化日志监控,并结合证书认证进一步提升安全性。

Secrets for authentication using CHAP  第1张

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