Linux下OpenVPN配置详解
准备工作
在开始配置OpenVPN之前,需确保系统满足基本要求,推荐使用Ubuntu 20.04或CentOS 8等主流发行版,并已安装openvpn和easy-rsa工具,可通过以下命令安装:

- Ubuntu/Debian:
sudo apt update && sudo apt install openvpn easy-rsa
- CentOS/RHEL:
sudo yum install openvpn easy-rsa
需一台具有公网IP的服务器作为VPN服务端,客户端可以是任意Linux设备。
服务端配置
-
生成CA证书与密钥
创建证书目录并初始化PKI环境:make-cadir ~/openvpn-ca && cd ~/openvpn-ca
编辑
vars文件,设置证书默认参数(如国家、组织名称等),然后执行:source vars && ./clean-all && ./build-ca
-
生成服务器证书
为服务端生成专用证书:./build-key-server server
此过程中需输入两次密码,并确认证书信息。
-
生成客户端证书
为每个客户端生成证书(以client1为例):./build-key client1
-
创建Diffie-Hellman参数
增强密钥交换安全性:./build-dh
-
配置OpenVPN服务端
复制配置模板文件:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gunzip /etc/openvpn/server.conf.gz
编辑
/etc/openvpn/server.conf,关键参数如下:port 1194 proto udp dev tun ca /root/openvpn-ca/keys/ca.crt cert /root/openvpn-ca/keys/server.crt key /root/openvpn-ca/keys/server.key dh /root/openvpn-ca/keys/dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun verb 3
-
启动服务端
启用并启动OpenVPN服务:sudo systemctl enable --now openvpn@server
客户端配置
-
获取客户端配置文件
从服务端复制以下文件到客户端:ca.crtclient1.crtclient1.key
-
创建客户端配置文件
在客户端设备上创建client.conf:client dev tun proto udp remote your_server_ip 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-CBC comp-lzo key-direction 1 verb 3
将
your_server_ip替换为服务器的公网IP。 -
整合证书与配置
将证书内容追加到配置文件末尾:cat ca.crt >> client.conf cat client1.crt >> client.conf cat client1.key >> client.conf
防火墙与路由设置
-
服务端防火墙配置
允许OpenVPN端口(UDP 1194)和NAT转发:sudo ufw allow 1194/udp sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
保存规则(Ubuntu使用
netfilter-persistent save)。
-
启用IP转发
编辑/etc/sysctl.conf,取消注释以下行:net.ipv4.ip_forward=1
执行
sysctl -p生效。
连接测试与故障排查
-
启动客户端
使用以下命令连接:sudo openvpn --config client.conf
成功连接后,可通过
ifconfig查看tun0接口,或访问外网IP验证。 -
常见问题
- 连接超时:检查服务端防火墙和端口是否开放。
- 证书错误:确认客户端与服务端的CA证书一致。
- 无法上网:检查NAT规则和DNS配置。
安全增强建议
- 使用强密码:为所有证书设置复杂密码。
- 限制访问:通过
iptables限制仅特定IP可连接服务端。 - 日志监控:定期查看
/var/log/syslog中的OpenVPN日志。
通过以上步骤,即可完成Linux环境下OpenVPN的安全配置,实现加密通信与远程访问。
















