OpenVPN是一款开源的VPN解决方案,以其高安全性和跨平台兼容性广受好评。无论是远程办公、安全访问内网资源,还是保护公共Wi-Fi下的数据传输,OpenVPN都能提供可靠支持。本教程将详解如何在Linux服务器上部署OpenVPN服务端,并生成客户端配置文件。建议使用较新的Linux系统,比如Ubuntu 22,Debian 11 及以上系统。
一、服务端搭建
1.1 安装OpenVPN与EasyRSA
# Ubuntu/Debian sudo apt update sudo apt install openvpn easy-rsa # CentOS/RHEL sudo dnf install openvpn easy-rsa
1.2 生成证书与密钥
初始化PKI目录:
make-cadir ~/openvpn-ca cd ~/openvpn-ca
编辑变量配置:
修改vars文件中的证书信息:
export KEY_COUNTRY="US"
export KEY_PROVINCE="California"
export KEY_CITY="SanFrancisco"
export KEY_ORG="YourOrg"
export KEY_EMAIL="[email protected]"
生成CA与证书:
source vars
./easyrsa init-pki
./easyrsa build-ca # 生成CA证书(连续回车使用默认值),存储在 ~/easy-rsa/pki/ 目录下。
./easyrsa build-server-full server nopass # 生成服务端证书
./easyrsa gen-dh # 生成Diffie-Hellman参数(耗时较长)
openvpn --genkey --secret ta.key # 生成TLS-auth密钥
1.3 配置OpenVPN服务端
将生成的证书密钥文件移动到/etc/openvpn/server下。
创建服务端配置文件:
sudo nano /etc/openvpn/server/server.conf
添加以下内容:
port 1194
proto udp #可改成tcp,一些固定要求需要tcp传输
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh2048.pem
tls-auth /etc/openvpn/server/ta.key 0
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
auth SHA256
server 10.0.0.0 255.255.255.0
client-config-dir /etc/openvpn/server/ccd #启动客户端配置,分配静态ip
push "route 10.0.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
1.4 启用IP转发与防火墙
# 启用IP转发 sudo sysctl -w net.ipv4.ip_forward=1 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf # 配置防火墙(UFW示例) sudo ufw allow 1194/udp sudo ufw allow OpenSSH sudo ufw disable && sudo ufw enable
1.5 启动服务
sudo systemctl start openvpn@server sudo systemctl enable openvpn@server
二、创建客户端配置
2.1 生成客户端证书
cd ~/openvpn-ca
source vars
./easyrsa build-client-full client1 nopass # client1替换为客户端名称
2.2 创建客户端配置文件
新建client1.ovpn,内容如下:
client
dev tun
proto udp # 与服务器上的传输模式对应
remote your_server_ip 1194 # 替换为服务器公网IP
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 1
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
auth SHA256
verb 3
同时将以下文件发送给客户端设备,放入任意位置
client1.ovpnca.crtclient1.crtclient1.keyta.key
注:假如客户端要使用静态ip,只需要在/etc/openvpn/server/ccd目录下新建client1,填入如下配置:
ifconfig-push 10.0.0.2 255.255.255.0 #给客户端1分配ip:10.0.0.2
2.3 客户端创建服务
创建 systemd 服务文件:
sudo nano /etc/systemd/system/openvpn-client1.service
[Unit]
Description=OpenVPN service for client1
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --config /path/to/client1.ovpn
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 重载
启用服务以便每次启动时自动连接 OpenVPN 客户端:
sudo systemctl enable openvpn-client1.service
启动 OpenVPN 客户端服务:
sudo systemctl start openvpn-client1.service
你可以通过以下命令检查服务的状态,确保它运行正常:
sudo systemctl status openvpn-client1.service
三、客户端连接
各平台客户端
- Windows:使用官方OpenVPN GUI,导入
.ovpn文件。 - macOS/Linux:命令行运行
openvpn --config client1.ovpn。 - Android/iOS:使用OpenVPN Connect应用导入配置文件。
连接测试
- 客户端导入所有文件后通过服务启动连接。
- 服务端检查日志:
sudo tail -f /var/log/openvpn-status.log
- 客户端验证:
sudo systemctl status openvpn-client1.service
常见问题排查
- 无法连接:检查防火墙规则、确认证书路径正确。
- TLS错误:确保
ta.key在服务端与客户端一致。 - 速度慢:尝试切换TCP协议。
结语
通过上述步骤,可以成功搭建安全的OpenVPN私有网络。定期更新证书(建议每年一次)并关注安全公告,可进一步提升网络安全性。
延伸阅读:
