如今大部分关注都给了 WireGuard,这也理所当然。但 OpenVPN 仍有它的一席之地:它能跑在 TCP 443 端口上,路由器和企业客户端里都内置了它,而且在基于 UDP 的 VPN 被屏蔽的网络里,它有时还能通过。如果你正是这种情况,下面是通往一台能用的服务器最短、最可靠的路。
需要准备什么
- 一台有独立公网 IP 的 VPS。客户端从互联网连进来,所以 NAT 套餐不行——个人使用的话,每月 $8 的 Nano-IP 足够了。
- Ubuntu 22.04/24.04 或 Debian 12,以及 root 或 sudo 用户。
- 大约十分钟。
1. 运行安装脚本
手动搭建证书颁发机构、密钥和路由,一下午就没了。angristan 写的常用脚本 openvpn-install 能一次搞定。下载下来,运行前先读一遍——这是一个会修改你网络配置的 shell 脚本,你应该知道它在做什么:
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
less openvpn-install.sh
sudo ./openvpn-install.sh
脚本会问几个问题。合理的回答是:
- IP 地址: 服务器的公网 IPv4(它会自动检测)。
- IPv6: 如果想让 IPv6 也走隧道,选 yes。
- 端口: 默认
1194,如果打算用 TCP 就选443。 - 协议: UDP 更快;TCP 能穿过严格的防火墙。
- DNS: 任何你信任的公共解析服务器。
- 压缩: 不要。它和加密一起用有已知的安全问题。
最后它会生成第一个客户端文件,比如 /root/phone.ovpn。
2. 开放端口
脚本会设置自己的 iptables 规则。如果你还在用 UFW,要显式放行 VPN 端口:
sudo ufw allow 1194/udp
sudo ufw status
如果选了 TCP,就换成 443/tcp。
3. 把客户端文件传到设备上
通过 SSH 复制 .ovpn 文件:
scp -P 22 root@203.0.113.10:/root/phone.ovpn .
把它导入 OpenVPN Connect 应用、Linux 的 NetworkManager 或你的路由器。这个文件里有该客户端的私钥,要像密码一样对待:不要用邮件发送,也不要放在共享文件夹里。
4. 确认可以用了
在服务器上:
systemctl list-units --type=service | grep -i openvpn
journalctl -u 'openvpn*' --since "10 min ago"
在客户端连接后查一下你的公网 IP,应该显示的是服务器的地址。
添加和吊销设备
再运行一次脚本:
sudo ./openvpn-install.sh
它会让你选择添加新客户端、吊销某个客户端,或者彻底卸载 OpenVPN。每台设备一个客户端,这点小麻烦很值——笔记本被偷时,你只吊销那一个文件,其他什么都不用动。
实话实说的取舍
OpenVPN 比 WireGuard 更老也更重。它只在一个核心上加密,所以在 1 vCPU 的套餐上,你跑不满高速家庭宽带。握手更慢,手机也更费电。如果你用不上 OpenVPN 特有的功能,那就改看我们的 WireGuard 指南——对大多数人,我们会推荐它。
OpenVPN 胜在兼容性:在普通防火墙看来,TCP 443 跟平常的 HTTPS 流量没什么两样,而且很多设备开箱就支持 OpenVPN。
关于个人 VPN 的更多背景,见 VPN 使用场景页面;IPv4/IPv6 在我们各套餐上的工作方式,见网络文档。
评论
暂无评论。来做第一个吧。