凌峰创科服务平台

Ubuntu VPN服务器搭建如何操作?

  1. 使用 WireGuard(推荐)

    Ubuntu VPN服务器搭建如何操作?-图1
    (图片来源网络,侵删)
    • 优点:速度极快、协议现代、配置简单、资源占用少、安全性高,是目前最推荐的方案。
    • 缺点:相对较新,但已经非常成熟稳定。
  2. 使用 OpenVPN

    • 优点:兼容性最好,几乎所有设备和平台都支持,功能非常成熟。
    • 缺点:配置相对复杂,速度通常比 WireGuard 慢一些。

准备工作

在开始之前,请确保您:

  1. 拥有一台 VPS(云服务器)

    • 推荐使用 Ubuntu 20.04 或 22.04 LTS 版本。
    • 最小配置建议:1核 CPU, 1GB 内存, 25GB 硬盘。
    • 确保服务器的 80 (HTTP)443 (HTTPS) 端口是开放的,这对于后续安装和客户端连接至关重要。
    • 获取到服务器的 公网 IP 地址
  2. 以 root 用户或具有 sudo 权限的用户登录

    Ubuntu VPN服务器搭建如何操作?-图2
    (图片来源网络,侵删)
  3. 更新系统

    sudo apt update && sudo apt upgrade -y

使用 WireGuard 搭建 VPN 服务器(推荐)

WireGuard 的配置非常简洁,核心就是两个步骤:在服务器上创建配置,在客户端上使用相同的配置。

第 1 步:安装 WireGuard

# 安装 WireGuard 和必要的工具
sudo apt install wireguard resolvconf -y

第 2 步:生成服务器的密钥对

# 进入 /etc/wireguard 目录
cd /etc/wireguard
# 生成服务器的私钥和公钥
# umask 077 确保生成的私钥文件权限安全
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

您会在 /etc/wireguard 目录下看到两个文件:

  • server_private.key服务器私钥,请绝对保密!
  • server_public.key服务器公钥,可以分享。

第 3 步:创建服务器配置文件

创建并编辑 WireGuard 的主配置文件 wg0.conf

Ubuntu VPN服务器搭建如何操作?-图3
(图片来源网络,侵删)
sudo nano /etc/wireguard/wg0.conf

粘贴进去,并根据您的实际情况修改 AddressListenPortPostUp/PostDown 中的 eth0(如果您的主网卡名称不是 eth0,请使用 ip a 命令查看)。

[Interface]
# 服务器私钥内容
PrivateKey = $(cat /etc/wireguard/server_private.key)
# VPN 服务器的内网 IP 地址和子网掩码
Address = 10.0.0.1/24
# WireGuard 监听的端口 (建议使用 51820 或其他自定义端口)
ListenPort = 51820
# 启动后执行的命令,用于启用 IP 转发和 NAT
# 请将 eth0 替换为您服务器主网卡的名称 (如 ens3, eth0)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 停止前执行的命令,用于清理规则
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

保存并退出:在 nano 编辑器中,按 Ctrl + X,然后按 Y,最后按 Enter

第 4 步:启用 IP 转发

为了让服务器能将客户端的流量转发到互联网,需要开启内核的 IP 转发功能。

# 编辑 sysctl.conf 文件
sudo nano /etc/sysctl.conf

找到下面这行,如果被 注释了,就取消注释:

#net.ipv4.ip_forward=1

改为:

net.ipv4.ip_forward=1

保存后,让配置立即生效:

sudo sysctl -p

第 5 步:启动并设置开机自启 WireGuard

# 启动 wg0 接口
sudo wg-quick up wg0
# 设置开机自启
sudo systemctl enable wg-quick@wg0

检查 WireGuard 是否正常运行:

sudo wg

如果看到类似 interface: wg0listening port: 51820 的输出,说明服务器端已经成功运行。

第 6 步:为客户端生成配置

我们需要为你的设备(手机、电脑)创建一个配置文件,假设我们要为第一个客户端创建。

  1. 生成客户端密钥对

    # 在服务器上执行,生成客户端的密钥对
    umask 077
    wg genkey | tee client_private.key | wg pubkey > client_public.key

    你会得到 client_private.keyclient_public.key

  2. 获取客户端的公钥

    cat client_public.key

    复制输出的公钥内容。

  3. 添加客户端到服务器配置: 再次编辑服务器的 wg0.conf 文件:

    sudo nano /etc/wireguard/wg0.conf

    在文件末尾添加以下内容(将 [Peer] 部分添加到文件末尾):

    [Peer]
    # 这里粘贴刚刚复制的客户端公钥
    PublicKey = <粘贴客户端的公钥>
    # 为客户端分配一个固定的内网 IP 地址
    AllowedIPs = 10.0.0.2/32

    保存并退出

  4. 重新加载 WireGuard 配置

    sudo wg-quick down wg0 && sudo wg-quick up wg0
    # 或者使用 reload 命令
    sudo wg syncconf wg0 <(wg-quick strip wg0)

第 7 步:创建客户端配置文件

你需要一个配置文件来导入到你的客户端设备上,这个文件通常包含 [Interface][Peer] 两部分。

# 创建客户端配置文件
sudo nano /etc/wireguard/client.conf

粘贴进去,并填入正确的信息:

[Interface]
# 客户端私钥内容 (cat /etc/wireguard/client_private.key)
PrivateKey = <客户端的私钥>
# 客户端内网 IP 地址
Address = 10.0.0.2/32
# 可选:设置 DNS 服务器,防止 DNS 泄露
DNS = 8.8.8.8, 1.1.1.1
[Peer]
# 服务器公钥内容 (cat /etc/wireguard/server_public.key)
PublicKey = <服务器的公钥>
# 服务器公网 IP 和端口
Endpoint = <你的服务器公网IP>:51820
# 客户端通过 VPN 发出的所有流量都走这个隧道
AllowedIPs = 0.0.0.0/0, ::/0
# 保持连接,避免被 NAT 超时
PersistentKeepalive = 25

保存并退出

第 8 步:下载配置并连接

  1. 从服务器下载 client.conf 文件到你的本地电脑或手机。

    # 在本地电脑上使用 scp 命令下载
    scp root@<你的服务器公网IP>:/etc/wireguard/client.conf ~/Downloads/
  2. 在客户端设备上安装 WireGuard

    • Windows: 官方下载页
    • macOS: 从 Mac App Store 下载 "WireGuard"
    • Android: 从 Google Play 下载 "WireGuard"
    • iOS: 从 App Store 下载 "WireGuard"
  3. 打开客户端应用,点击“从文件/二维码导入”,选择你下载的 client.conf 文件。

  4. 启用该隧道,现在你的设备已经通过 VPN 安全地连接到服务器了!


使用 OpenVPN 搭建 VPN 服务器

OpenVPN 的配置比 WireGuard 复杂,因为它需要生成证书和密钥。

第 1 步:安装 OpenVPN 和 Easy-RSA

sudo apt install openvpn easy-rsa -y

第 2 步:准备 CA 和证书环境

# 创建一个目录来存放证书
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
# 编辑 vars 文件,设置一些默认值
nano vars

vars 文件中,修改以下几行,设置你的国家、省份、城市、组织、邮箱等:

set EASYRSA_REQ_COUNTRY="CN"
set EASYRSA_REQ_PROVINCE="Beijing"
set EASYRSA_REQ_CITY="Beijing"
set EASYRSA_REQ_ORG="My Company"
set EASYRSA_REQ_EMAIL="admin@mycompany.com"

保存并退出。

第 3 步:构建证书颁发机构 (CA)

# 初始化 PKI (Public Key Infrastructure)
./easyrsa init-pki
# 构建一个自签名的 CA
./easyrsa build-ca nopass

一路按回车,最后会生成 pki/ca.crtpki/private/ca.key

第 4 步:为服务器生成证书和密钥

# 生成服务器证书和密钥,并指定一个名字,"server"
./easyrsa gen-req server nopass
# 使用 CA 签名服务器请求
./easyrsa sign-req server server

Confirm request details: 时输入 yes

第 5 步:生成 Diffie-Hellman 参数

这个步骤可能需要几分钟时间:

./easyrsa gen-dh

完成后会生成 pki/dh.pem

第 6 步:生成 HMAC 密钥

openvpn --genkey --secret pki/ta.key

第 7 步:创建服务器配置文件

# 复制一个示例配置文件
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz
# 编辑服务器配置文件
sudo nano /etc/openvpn/server.conf

找到并修改/取消注释以下行:

# 使用哪个协议和端口
port 1194
proto udp
# 使用 TUN 虚拟网卡
dev tun
# CA 证书路径
ca /root/openvpn-ca/pki/ca.crt
# 服务器证书和密钥路径
cert /root/openvpn-ca/pki/issued/server.crt
key /root/openvpn-ca/pki/private/server.key
# DH 参数文件路径
dh /root/openvpn-ca/pki/dh.pem
# 使用 HMAC 来增强安全性
tls-crypt /root/openvpn-ca/pki/ta.key
# 网络配置
server 10.8.0.0 255.255.255.0
# 推导客户端使用网关
push "redirect-gateway def1 bypass-dhcp"
# 推导客户端使用的 DNS 服务器
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"
# 允许客户端之间互相通信
client-to-client
# 保持连接
keepalive 10 120
# 使用 LZO 压缩
comp-lzo
# 用户和权限
user nobody
group nogroup
# 状态日志
status /var/log/openvpn/openvpn-status.log
verb 3

保存并退出

第 8 步:启动 OpenVPN 并设置开机自启

# 启动服务
sudo systemctl start openvpn@server
# 设置开机自启
sudo systemctl enable openvpn@server

第 9 步:配置 IP 转发和防火墙

这部分与 WireGuard 相同。

# 编辑 sysctl.conf
sudo nano /etc/sysctl.conf

确保 net.ipv4.ip_forward=1 已取消注释并生效:

sudo sysctl -p

配置 UFW 防火墙:

# 允许 OpenVPN 端口 (UDP 1194)
sudo ufw allow 1194/udp
# 允许 SSH 连接,防止你被锁在门外
sudo ufw allow OpenSSH
# 启用防火墙
sudo ufw enable

第 10 步:生成客户端配置文件

这部分最复杂,需要为每个客户端生成独立的证书和配置文件,可以写一个脚本来自动化,但手动步骤如下:

  1. 为客户端生成证书: 回到 ~/openvpn-ca 目录:

    cd ~/openvpn-ca
    ./easyrsa gen-req client1 nopass
    ./easyrsa sign-req client client1
  2. 创建客户端配置文件 client1.ovpn: 你需要将以下所有内容合并到一个 .ovpn 文件中。

    • 服务器配置模板
    • <ca>, <cert>, <key>, <tls-crypt> 四个标签内的内容(从对应的证书文件中复制)
    • 推荐使用 easyrsa 提供的脚本 ./easyrsa build-client-full client1 nopass 来自动生成包含所有内容的配置文件。
  3. 下载并连接: 将生成的 client1.ovpn 文件下载到客户端设备,使用 OpenVPN 客户端导入连接。


总结与建议

特性 WireGuard OpenVPN
配置难度 非常简单 较复杂
速度性能 极快 良好
协议现代性 非常现代 成熟,但略显传统
资源占用 极低 较高
兼容性 良好,主流系统已支持 极佳,所有平台都支持
安全性 极高

对于绝大多数用户,我强烈推荐使用 WireGuard。 它的配置流程清晰、快速,性能和安全性都是顶级的,只有当你需要连接到一些非常老旧的设备,或者某些特定网络环境对 OpenVPN 协议有特殊要求时,才考虑使用 OpenVPN。

搭建完成后,请务必注意安全,不要泄露服务器的私钥和客户端的配置文件。

分享:
扫描分享到社交APP
上一篇
下一篇