目录
什么是 OpenVPN
OpenVPN 是一种开源的、跨平台的虚拟专用网络 (VPN) 解决方案。它使用 SSL/TLS 协议提供安全的端到端加密连接,可以突破防火墙和网络限制,实现安全访问内部资源。
OpenVPN 具有以下特点:
- 跨平台支持: Windows、macOS、Linux、Android、iOS 等主流操作系统
- 安全性强: 采用 SSL/TLS 协议,提供端到端加密
- 灵活性高: 支持多种身份验证方式,如用户名/密码、证书等
- 配置简单: 相比其他 VPN 方案,OpenVPN 的部署和配置更加简单
为什么选择 Vultr 搭建 OpenVPN
Vultr 是一家知名的云服务提供商,提供高性能的 VPS 服务。选择 Vultr 搭建 OpenVPN 有以下优势:
- 机房众多: Vultr 在全球 17 个地区设有数据中心,可以根据需求选择最合适的位置
- 性能卓越: Vultr 的 VPS 配备了高性能的 CPU 和 SSD 存储,网络延迟低,非常适合搭建 VPN
- 价格优惠: Vultr 的价格相比其他云服务商更加友好,性价比很高
- 管理方便: Vultr 提供了方便的控制台,可以轻松管理服务器和VPN
Vultr 搭建 OpenVPN 的步骤
注册 Vultr 账号
首先,需要在 Vultr 官网 (https://www.vultr.com/) 注册一个账号。注册过程非常简单,只需要填写基本的个人信息即可。
创建 Vultr 服务器
- 登录 Vultr 控制台,点击左侧菜单栏的 “Servers”。
- 点击 “+” 号创建新的服务器实例。
- 选择合适的数据中心位置,例如东京、硅谷等。
- 选择合适的服务器配置,例如 $5/月的基础配置。
- 选择 “OS” 为 “Ubuntu 20.04 LTS”。
- 点击 “Deploy Now” 创建服务器。
安装和配置 OpenVPN
-
服务器创建完成后,记录 IP 地址和 root 密码。
-
通过 SSH 客户端连接到 Vultr 服务器。
-
执行以下命令安装 OpenVPN:
bash sudo apt-get update sudo apt-get install -y openvpn easy-rsa
-
使用
easy-rsa
生成 OpenVPN 所需的证书和密钥:bash
mkdir -p ~/openvpn-ca cd ~/openvpn-ca wget -O – https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz | tar xzf – cd EasyRSA-3.0.8/ ./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1 nopass
-
配置 OpenVPN 服务:
bash
sudo mkdir -p /etc/openvpn/server sudo cp pki/ca.crt /etc/openvpn/server/ sudo cp pki/issued/server.crt /etc/openvpn/server/ sudo cp pki/private/server.key /etc/openvpn/server/ sudo cp pki/issued/client1.crt /etc/openvpn/server/ sudo cp pki/private/client1.key /etc/openvpn/server/
sudo tee /etc/openvpn/server/server.conf <<-EOF port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh none topology subnet 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 comp-lzo user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 EOF
sudo systemctl enable openvpn-server@server sudo systemctl start openvpn-server@server
客户端连接 OpenVPN
- 将之前生成的
client1.crt
和client1.key
文件下载到本地。 - 在客户端安装 OpenVPN 客户端软件,如 Windows 上的 OpenVPN GUI、macOS 上的 Tunnelblick 等。
- 在客户端软件中导入 OpenVPN 配置文件,包括
ca.crt
、client1.crt
和client1.key
文件。 - 连接 OpenVPN 服务器,即可通过 VPN 访问内网资源。
OpenVPN 高级配置
自定义 OpenVPN 端口
默认情况下, OpenVPN 使用 UDP 协议的 1194 端口。如果您需要使用其他端口,可以修改 /etc/openvpn/server/server.conf
文件中的 port
参数。例如:
port 443
设置 OpenVPN 双重身份验证
为了提高安全性,您可以为 OpenVPN 设置双重身份验证。可以使用 Google Authenticator 或其他 TOTP 应用程序实现。具体步骤如下:
-
安装
libpam-google-authenticator
包:bash sudo apt-get install -y libpam-google-authenticator
-
运行
google-authenticator
命令并按照提示操作,生成 TOTP 密钥。 -
修改
/etc/pam.d/openvpn
文件,添加双重身份验证配置:auth required pam_google_authenticator.so
-
在
/etc/openvpn/server/server.conf
文件中添加以下配置:plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
-
重启 OpenVPN 服务以应用配置。
使用 Let’s Encrypt 配置 SSL/TLS
为了提高 OpenVPN 连接的安全性,您可以使用 Let’s Encrypt 为 OpenVPN 服务器配置 SSL/TLS 证书。具体步骤如下:
-
安装 Certbot 工具:
bash sudo apt-get install -y certbot
-
使用 Certbot 申请 SSL/TLS 证书:
bash sudo certbot certonly –standalone –preferred-challenges http -d your-domain.com
-
修改
/etc/openvpn/server/server.conf
文件,添加以下配置:cert /etc/letsencrypt/live/your-domain.com/cert.pem key /etc/letsencrypt/live/your-domain.com/privkey.pem
-
重启 OpenVPN 服务以应用配置。
OpenVPN 常见问题解答
如何查看 OpenVPN 服务状态和日志?
可以使用以下命令查看 OpenVPN 服务状态和日志:
bash sudo systemctl status openvpn-server@server sudo tail -n 100 /var/log/openvpn/openvpn.log
客户端连接 OpenVPN 时出现错误怎么办?
常见的错误包括:
- 证书或密钥文件配置错误
- 网络防火墙阻挡 OpenVPN 端口
- OpenVPN 服务器配置问题
可以检查上述问题,并查看 OpenVPN 日志以定位问题所在。
如何增加 OpenVPN 连接速度?
可以尝试以下方法提高 OpenVPN 连接速度:
- 选择就近的 Vultr 数据中心
- 使用 TCP 协议而不是 UDP 协议
- 在 OpenVPN 配置中启用
comp-lzo
压缩 - 调整 OpenVPN 客户端的 MTU 和 MSS 参数
如何限制 OpenVPN 客户端的带宽?
可以在 /etc/openvpn/server/server.conf
文件中添加以下配置:
client-connect /etc/openvpn/client-connect.sh client-disconnect /etc/openvpn/client-disconnect.sh
然后创建 client-connect.sh
和 client-disconnect.sh
脚本,在其中设置客户端的带宽限制。
更多高级配置和故障排查请参考 OpenVPN 官方文档。