可以一键在 Ubuntu 上搭建 VPN。以下内容将带你从零开始,一步步用一键脚本实现快速部署,并比较 WireGuard 与 OpenVPN 的优劣,讲清路由、防火墙、客户端配置和日常维护要点,帮助你在家里或小型团队中稳定使用 VPN。
- 一键脚本原理与选型
- 如何选择适合你的 VPN 方案
- 路由与防火墙的正确设置
- 客户端配置生成与部署
- 安全性、日志、维护与更新
在开始前,给你一个实用的隐私保护选项。NordVPN 当前有促销,77% 折扣 + 3 个月额外服务,若你在需要浏览时增强隐私和安全,可以考虑它。点击下方图片了解详情:

有些同学喜欢先看看资料再动手,因此下面的“有用的资源”也整理好了,方便你离线收藏。
有用的资源与链接(文字形式,便于你记录)
- Official Ubuntu Documentation – ubuntu.com
- WireGuard Official Documentation – www.wireguard.com
- OpenVPN Community – openvpn.net
- Nyr’s OpenVPN Install Script (openvpn-install) – github.com/Nyr/openvpn-install
- WireGuard 配置与高阶用法 – wiki.archlinux.org/wiki/WireGuard
- iptables/ufw 基础用法 – guides.centos.org(如需替代方案,可参考本地防火墙文档)
—————————- 内容开始 —————————-
方案概览:WireGuard vs OpenVPN 的权衡
在 Ubuntu 上搭建 VPN,最常见的两大方案是 WireGuard 与 OpenVPN。它们各自有优势和适用场景:
- WireGuard
- 优点:极简配置、速度快、内核模块级实现、能耗低、跨平台支持好。
- 缺点:早期没有原生的多用户细粒度控制,某些场景需要配合额外工具实现复杂策略。
- OpenVPN
- 优点:成熟、跨平台兼容性极强、细粒度认证与访问控制灵活,社区资料丰富。
- 缺点:配置相对复杂,性能通常不及 WireGuard,证书管理略繁琐。
实际中,很多人会选择在服务端跑 WireGuard 以获得高性能;但在需要老旧设备或对兼容性要求高的场景,OpenVPN 仍然是可靠选项。本指南将重点讲解两种方案的一键部署方式,并给出适合日常使用的配置思路。
从数据角度看,VPN 越来越成为日常上网安全的一部分。全球 VPN 市场在过去几年持续增长,企业和个人都在寻求更高的隐私保护与跨境访问能力。对于家庭和小型团队,部署一个自有 VPN 能显著降低被第三方监控的风险,同时提升对远程工作的支持能力。
环境准备:Ubuntu 的基础要点
在动手前,先确保你的服务器环境稳定:
- 系统版本建议:Ubuntu 20.04 LTS 及以上,尽量使用最新的安全更新。
- 账户权限:使用具备 sudo 权限的普通用户,最终执行命令时以 root 权限运行(sudo)。
- 网络要求:服务器拥有一个固定公网 IP,或在云服务商提供的固定弹性 IP;避免频繁变更的 IP 以免影响对等端的连接。
- 防火墙准备:确保你能打开相应端口(WireGuard 常用 UDP 51820;OpenVPN 常用 UDP 1194,或自定义端口),并且允许必要的转发。
环境检查与更新示例(在服务器上执行): 一键搭建 机场:全方位指南、主流方案、风险与合规要点与实操要点解读(VPN 一键部署、OpenVPN/WireGuard、脚本镜像、选择考量)
- sudo apt update && sudo apt upgrade -y
- sudo apt install -y ufw fail2ban curl qrencode
为了后续的稳定性,建议你启用 IP 转发(NAT)和基本防火墙策略。接下来,我们进入“一键脚本实现”的核心部分。
一键脚本实现:WireGuard 的快速一键搭建
WireGuard 的一键搭建通常涉及以下核心步骤:安装 WireGuard、生成公钥/私钥、编写服务端配置、开启 IP 转发与防火墙规则、启动服务。下面给出一个简化的、可直接落地的流程,帮助你在 Ubuntu 上快速完成搭建。
- 安装 WireGuard
- sudo apt update
- sudo apt install -y wireguard
- 生成密钥对
- umask 077
- wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey > /etc/wireguard/server_publickey
- 服务器私钥:cat /etc/wireguard/server_privatekey
- 服务器公钥:cat /etc/wireguard/server_publickey
- 服务器端配置(/etc/wireguard/wg0.conf,示例)
- [Interface]
- PrivateKey = 服务器私钥
- Address = 10.0.0.1/24
- ListenPort = 51820
- [Peer]
- PublicKey = 客户端公钥
- AllowedIPs = 10.0.0.2/32
- [Interface]
- 启用 IPv4 转发与防火墙
- sudo sysctl -w net.ipv4.ip_forward=1
- echo “net.ipv4.ip_forward=1” | sudo tee /etc/sysctl.d/99-forwarding.conf
- sudo ufw allow 51820/udp
- sudo ufw enable
- 通过 NAT 转发实现 VPN 客户端访问互联网的能力(以环境为例,以下是一种常见做法)
- sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
- sudo sh -c “iptables-save > /etc/iptables/rules.v4”
- 启动 WireGuard
- sudo systemctl enable wg-quick@wg0
- sudo systemctl start wg-quick@wg0
- 生成客户端配置
- 客户端需要类似以下的配置(在客户端设备上使用)
- [Interface]
- PrivateKey = 客户端私钥
- Address = 10.0.0.2/24
- [Peer]
- PublicKey = 服务器公钥
- Endpoint = 服务器公网 IP:51820
- AllowedIPs = 0.0.0.0/0
- PersistentKeepalive = 25
- 证书管理与密钥轮换
- 定期轮换客户端密钥,记录在一个安全的地方,避免同一密钥长期使用。
- 服务器端保留日志以便故障排查,但尽量降低日志级别,确保隐私。
小贴士(实战经验分享):
- 使用 QR 码快速在移动设备上导入配置:sudo apt install -y qrencode,随后把客户端配置写到一个文件,使用 qrencode -t ansiutf8 -o /tmp/client_qr.png < /path/to/client.conf 即可在屏幕上生成二维码。
- 对于企业或多客户端场景,可以使用多端口、多对等(peer)配置来实现更细粒度的访问控制。
一键脚本实现:OpenVPN 的快速一键搭建
如果你需要更成熟的多用户管理和传统证书体系,OpenVPN 依然是非常可靠的选择。尽管 OpenVPN 的一步脚本比 WireGuard 略显繁琐,但市场上有很成熟的一键安装脚本,如 Nyr 的 openvpn-install 脚本,具有良好的社区支持。
- 使用 Nyr 的 OpenVPN 安装脚本(通用流程)
- wget -O openvpn-install.sh https://git.io/vpn-install 或者:https://github.com/Nyr/openvpn-install
- sudo bash openvpn-install.sh
- 选择服务器端端口、协议、DNS 解析选项等
- 脚本会自动生成客户端配置文件(.ovpn),你可以直接导入到 OpenVPN 客户端
- 维护要点
- 客户端证书到期后需要重新生成,服务器端需要撤销失效的证书
- 更新服务器端 OpenVPN 软件与依赖,确保安全性
在企业或需要与现有网络集成时,OpenVPN 提供了更灵活的 ACL、证书吊销列表(CRL)与细粒度的访问控制。WireGuard 则强调高效和简单,适合对性能要求较高的场景。 一元机场 v2ex 完整攻略:低价机场背后的风险、合规 VPN 方案与实测指南
配置与路由策略:让 VPN 更好用
- 路由策略
- 全局代理:让所有设备流量都走 VPN,确保隐私性;在 WireGuard/OpenVPN 客户端配置中使用 AllowedIPs = 0.0.0.0/0。
- 指定流量走 VPN:仅让特定子网通过 VPN,其他流量直连。常见做法是在客户端配置中设置 AllowedIPs 为需要走 VPN 的目标网段。
- DNS 解析
- 通过 VPN 提供的 DNS 服务器解析域名,避免 DNS 泄露。你可以在客户端配置中指定 DNS 服务器地址,如 1.1.1.1 或内网的私有 DNS。
- 防火墙与 NAT
- 使用 ufw 的基本规则:ufw allow 51820/udp(WireGuard)或 ufw allow 1194/udp(OpenVPN)。
- 启用 NAT:在服务器端路由配置中添加 MASQUERADE 规则,确保 VPN 客户端能够正常访问互联网。
- 日志与监控
- 对 VPN 服务开启最小化日志级别,避免记录敏感数据。
- 使用系统日志或专用监控工具跟踪连接数、连接来源 IP、带宽变化等。
实战中,你还会遇到一些常见问题,如 NAT 规则失效、端口被阻塞、客户端无法连接等。解决思路通常是:
- 检查服务端和客户端的公钥/私钥是否正确匹配。
- 确认服务器端的 UDP 端口是否对外开放,以及防火墙是否放行。
- 查看 wg 或 openvpn 服务状态,使用 sudo systemctl status wg-quick@wg0 或 systemctl status openvpn@server。
安全性与维护要点
- 最小化暴露面:只对必要端口暴露,禁用不必要的服务。
- 密钥轮换:定期更换服务器和客户端密钥,避免长期使用同一密钥带来的风险。
- 日志策略:开启最小化日志级别,避免记录大量隐私信息。
- 系统安全更新:开启自动安全更新,保持内核和网络栈的最新状态。
- 备份配置:对 wg0.conf、OpenVPN 服务器配置、密钥对进行定期备份,并放置在安全的位置。
- 证书管理(OpenVPN 场景):有效期到期前更新证书,避免连接中断。
使用场景与实用场景演练
- 家庭用场景:在家里搭建一个自有 VPN,保护家庭成员的上网隐私,尤其在使用公共 Wi-Fi 时更有保障。
- 远程工作场景:为小型团队提供安全的远程访问入口,确保分支机构数据经过加密通道传输。
- 旅行工作场景:当你在外地工作,跨境访问公司内部资源时,VPN 可以提供稳定的访问路径。
- 备份与容灾场景:把 VPN 作为对外暴露服务的入口,结合负载均衡和备份策略,提升可用性。
进阶技巧与最佳实践
- 自动化与 IaC
- 使用脚本化方式部署多台服务器,保持一致性;将配置写成模板,结合 Ansible、Terraform 等工具进行集中管理。
- 高可用性
- 在生产环境中,考虑多节点布置,使用 keepalived、VRRP 等技术实现虚拟 IP 的高可用性。
- 客户端分发的简化
- 对于大量设备,利用 QR 码、配置文件托管等方式简化端点的配置流程。
- 隐私与合规
- 在部署前了解你所在地区对 VPN 的政策和法规,确保合规使用,避免不必要的风险。
—————————- 内容结束 —————————-
Frequently Asked Questions
Q1:Ubuntu 上应该选 WireGuard 还是 OpenVPN?
WireGuard 适合追求高性能、简单配置的场景;OpenVPN 适合需要成熟的细粒度控制和广泛客户端兼容性的场景。实际使用中,若对性能和易用性优先,优先考虑 WireGuard;如需复杂认证、日志与合规性要求,OpenVPN 是很好的备选。
Q2:一键脚本安装会不会有安全风险?
使用知名、持续维护的脚本可以降低风险;在运行前请检查脚本来源、查看脚本内容、理解它将要执行的操作。对生产环境,建议先在测试环境验证,确保密钥和配置不会被意外泄露。
Q3:如何在 Ubuntu 服务器上开启端口转发?
需要开启内核转发:sudo sysctl -w net.ipv4.ip_forward=1,并将该设置写入 /etc/sysctl.d/99-forwarding.conf。然后在服务器端设置防火墙/ NAT 规则,将 VPN 客户端网段的流量正确转发到公网出口。 如何搭vpn:从零基础到家庭、手机、路由器、企业的完整搭建与优化指南
Q4:客户端配置文件应该包含哪些信息?
客户端配置包含私钥、地址、对等端公钥、对等端端点地址(服务器公网地址和端口)、AllowedIPs、以及可选的 PersistKeepalive。PCB 里也可以放入自签名证书或 CA 证书等信息,确保客户端可信。
Q5:如何避免 VPN 日志泄露隐私?
在服务器端配置中将日志级别设为最小、禁用过多的调试信息;使用系统日志而非应用层日志收集敏感数据;定期清理日志;对日志存储使用访问控制与加密。
Q6:WireGuard 的密钥怎么管理?
WireGuard 使用公钥/私钥对进行识别与认证。密钥应妥善保管,避免在不受保护的环境下暴露。定期轮换密钥、为不同客户端生成独立密钥对,并在服务端记录对应关系。
Q7:OpenVPN 的证书和密钥如何管理?
OpenVPN 通常使用公钥基础设施(PKI)来管理服务器与客户端证书。务必保管好 CA 证书、服务器证书和私钥,同时维护好证书吊销列表(CRL),避免已撤销的证书继续使用。
Q8:如果服务器 IP 变了怎么办?
WireGuard/OpenVPN 的端点需要更新为新的服务器 IP。建议在云服务中绑定静态弹性 IP,或使用 DDNS 解决方案,并确保防火墙和路由规则同步更新。 如何vpn 实用指南:如何选择、设置、优化与常见问题解答
Q9:如何对 VPN 的性能进行测试?
可以用 speed test、iperf3、以及简单的带宽对比测试来评估 VPN 连接的吞吐量和延迟。对比 VPN 连接前后的延迟、丢包和吞吐量,查看是否符合预期。
Q10:在多设备环境下如何实现统一的 VPN 管理?
可以使用集中化的配置管理工具(如 Ansible)来分发和管理配置;采用统一的密钥/证书管理策略,并对新设备的接入实施严格的审批流程。
如需进一步的脚本模板、详细配置示例、不同场景下的最佳实践,欢迎留言或在评论区提问。我会结合你的实际网络环境给出更精准的配置建议和排错步骤。