科学上网

持续优化服务器资源和服务质量,为广大用户打造更加便捷、高效、安全的全球网络加速服务,是值得信赖的专业VPN加速平台。

Linux下搭建VPN服务,从零开始的详细指南

rdd9514472 2026-07-04 科学上网 2 0

在当今数字化时代,网络安全和隐私保护变得愈发重要,VPN(Virtual Private Network)技术作为一种成熟的解决方案,能够为用户提供加密的网络连接,保护数据传输安全,同时突破地域限制访问资源,对于Linux系统管理员和开发者而言,掌握在Linux服务器上搭建VPN服务的技能至关重要,本文将详细介绍在Linux系统上安装和配置VPN服务的完整流程,涵盖PPTP、L2TP/IPSec和OpenVPN三种主流协议,帮助您构建安全可靠的私有网络环境。

准备工作

在开始安装VPN服务之前,需要做好以下准备工作:

  1. 系统要求:确保您的Linux服务器满足基本要求,建议使用Ubuntu 18.04/20.04 LTS或CentOS 7/8等主流发行版,服务器至少需要512MB内存和10GB磁盘空间。

  2. 网络环境:服务器需要拥有公网IP地址,并确保防火墙允许VPN协议使用的端口通过(如TCP 1723用于PPTP,UDP 500和4500用于L2TP/IPSec,TCP/UDP 1194用于OpenVPN)。

  3. 权限准备:使用root用户或具有sudo权限的账户执行安装命令。

  4. 域名准备(可选):为VPN服务配置一个域名可以提升便利性,特别是使用SSL证书时。

安装PPTP VPN服务

PPTP(Point-to-Point Tunneling Protocol)是最简单的VPN协议,配置容易但安全性较低,适合对安全性要求不高的内部网络使用。

安装PPTP服务端

在Ubuntu/Debian系统上:

sudo apt update
sudo apt install pptpd

在CentOS/RHEL系统上:

sudo yum install epel-release
sudo yum install pptpd

配置PPTP服务

编辑配置文件/etc/pptpd.conf

option /etc/ppp/options.pptpd
logwtmp
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

编辑PPP选项文件/etc/ppp/options.pptpd

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp 
novj
novjccomp
nologfd

设置用户认证

编辑/etc/ppp/chap-secrets文件,添加VPN用户:

# 用户名   服务类型   密码   分配的IP
user1      pptpd      pass1   *
user2      pptpd      pass2   192.168.0.234

启用IP转发并配置NAT

编辑/etc/sysctl.conf,确保包含:

net.ipv4.ip_forward=1

然后执行:

sudo sysctl -p

添加iptables规则:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables.rules

启动服务

sudo systemctl start pptpd
sudo systemctl enable pptpd

安装L2TP/IPSec VPN服务

L2TP/IPSec提供了比PPTP更高的安全性,是现代操作系统广泛支持的VPN协议。

安装必要软件

在Ubuntu/Debian上:

sudo apt install strongswan xl2tpd

在CentOS/RHEL上:

sudo yum install epel-release
sudo yum install strongswan xl2tpd

配置IPSec (strongSwan)

编辑/etc/ipsec.conf

config setup
    uniqueids=never
conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev1
    authby=secret
    ike=aes256-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha1,3des-sha1!
conn l2tp-psk
    auto=add
    left=%defaultroute
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
    type=transport
    leftauth=psk
    rightauth=psk

设置预共享密钥/etc/ipsec.secrets

%any %any : PSK "YourSharedSecret"

配置L2TP (xl2tpd)

编辑/etc/xl2tpd/xl2tpd.conf

[global]
ipsec saref = yes
saref refinfo = 30
[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 = LinuxVPN
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

编辑PPP选项/etc/ppp/options.xl2tpd

ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1280
mru 1280
lock
connect-delay 5000

添加VPN用户

编辑/etc/ppp/chap-secrets

# 用户名   服务类型   密码   分配的IP
user3      l2tpd       pass3   *
user4      l2tpd       pass4   192.168.1.100

配置防火墙和启动服务

sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT   # IKE
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT  # NAT-T
sudo iptables -A INPUT -p udp --dport 1701 -j ACCEPT  # L2TP
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables-save > /etc/iptables.rules
sudo systemctl start strongswan xl2tpd
sudo systemctl enable strongswan xl2tpd

安装OpenVPN服务

OpenVPN是目前最安全、灵活的VPN解决方案,支持TCP/UDP协议,可穿越大多数防火墙。

安装OpenVPN和Easy-RSA

sudo apt install openvpn easy-rsa  # Ubuntu/Debian
sudo yum install openvpn easy-rsa  # CentOS/RHEL

配置PKI基础设施

mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
cd ~/easy-rsa
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey --secret ta.key

配置OpenVPN服务器

复制示例配置文件:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server/server.conf

编辑/etc/openvpn/server/server.conf

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

启用IP转发和防火墙规则

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPT
sudo iptables

Linux下搭建VPN服务,从零开始的详细指南

猜你喜欢