本文目录导读:

我来为你详细介绍OpenVPN的搭建步骤,OpenVPN是一种安全、灵活的VPN解决方案,适合个人或企业使用。
环境准备
服务器要求
- 操作系统:Ubuntu 20.04/22.04 LTS 或 CentOS 7/8
- 公网IP地址
- 开放端口:UDP 1194(默认)
安装OpenVPN和Easy-RSA
Ubuntu/Debian:
sudo apt update sudo apt install openvpn easy-rsa -y
CentOS/RHEL:
sudo yum install epel-release -y sudo yum install openvpn easy-rsa -y
配置证书和密钥
创建PKI目录
make-cadir ~/openvpn-ca cd ~/openvpn-ca
配置变量
编辑 vars 文件:
nano vars
export KEY_COUNTRY="CN" export KEY_PROVINCE="Beijing" export KEY_CITY="Beijing" export KEY_ORG="Your Company" export KEY_EMAIL="admin@example.com" export KEY_OU="IT"
生成证书
# 初始化PKI source vars ./clean-all ./build-ca # 生成服务器证书 ./build-key-server server # 生成Diffie-Hellman参数 ./build-dh # 生成TLS密钥 openvpn --genkey --secret keys/ta.key # 生成客户端证书(每个客户端都需要) ./build-key client1
配置OpenVPN服务器
复制证书文件
cd ~/openvpn-ca/keys sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn/
创建服务器配置文件
sudo nano /etc/openvpn/server.conf
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem tls-auth ta.key 0 key-direction 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt 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 cipher AES-256-CBC comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log log-append /var/log/openvpn.log verb 3
启用IP转发
sudo nano /etc/sysctl.conf
取消注释 net.ipv4.ip_forward=1
sudo sysctl -p
配置防火墙
Ubuntu UFW:
sudo ufw allow 1194/udp sudo ufw allow OpenSSH sudo ufw enable
配置NAT(重要):
sudo nano /etc/ufw/before.rules
在文件开头添加:
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE COMMIT
启动OpenVPN服务
sudo systemctl start openvpn@server sudo systemctl enable openvpn@server sudo systemctl status openvpn@server
客户端配置
生成客户端配置文件
创建 client.ovpn:
client dev tun proto udp remote YOUR_SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key tls-auth ta.key 1 key-direction 1 cipher AES-256-CBC comp-lzo verb 3
合并配置文件(推荐)直接写入配置:
# 创建合并脚本
cat > make_config.sh << 'EOF'
#!/bin/bash
# 获取第一个参数作为客户端名称
CLIENT=$1
# 检查参数是否存在
if [ -z "$CLIENT" ]; then
echo "Usage: $0 <client-name>"
exit 1
fi
# 生成配置文件
cat > ${CLIENT}.ovpn <<END
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-CBC
comp-lzo
verb 3
key-direction 1
<ca>
$(cat ~/openvpn-ca/keys/ca.crt)
</ca>
<cert>
$(cat ~/openvpn-ca/keys/${CLIENT}.crt)
</cert>
<key>
$(cat ~/openvpn-ca/keys/${CLIENT}.key)
</key>
<tls-auth>
$(cat ~/openvpn-ca/keys/ta.key)
</tls-auth>
END
echo "Configuration file ${CLIENT}.ovpn created successfully"
EOF
chmod +x make_config.sh
./make_config.sh client1
客户端连接
Windows
- 下载 OpenVPN客户端
- 导入
.ovpn配置文件 - 连接
macOS
- 使用Tunnelblick或OpenVPN Connect
- 导入配置文件
Linux
sudo openvpn client.ovpn
Android/iOS
- 安装OpenVPN Connect应用
- 导入配置文件
安全建议
- 定期更新证书:设置证书有效期
- 使用更强的加密:AES-256-GCM
- 启用日志监控:定期检查日志
- 限制客户端数量:使用CCD控制
故障排除
检查服务状态
sudo journalctl -u openvpn@server -f
端口连通性
telnet YOUR_SERVER_IP 1194
常见问题
- 连接失败:检查防火墙规则
- 认证错误:检查证书配置
- 路由问题:确认IP转发已启用
搭建完成后,你可以通过VPN安全访问内部网络资源,如果需要更高级的功能(如双因素认证、负载均衡等),可以进一步配置。
标签: VPN配置
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。