Linux中如何配置和使用 OpenVPN 服务器
近期有些网友想要了解的相关情况,小编通过整理给您分享一下。
OpenVPN是一款功能强大且开源的虚拟专用网络(VPN)解决方案,它能在Linux系统上提供安全可靠的远程访问服务。本文将详细介绍如何在Linux环境下配置和使用OpenVPN服务器,帮助你快速搭建自己的VPN环境。
一、OpenVPN服务器安装准备

在开始安装OpenVPN之前,你需要确保你的Linux系统满足基本要求。首先确认你的服务器拥有root权限,并且网络连接正常。大多数现代Linux发行版都支持OpenVPN,包括Ubuntu、CentOS、Debian等。
对于服务器硬件,OpenVPN对资源要求不高,1GB内存和单核CPU就足以支持数十个并发连接。当然,如果你的用户量较大,适当增加资源配置会获得更好的性能表现。
二、安装OpenVPN和必要组件
在基于Debian的系统(如Ubuntu)上,可以通过以下命令安装OpenVPN和Easy-RSA(用于证书管理):
sudo apt updatesudo apt install openvpn easy-rsa
对于CentOS/RHEL系统,则需要使用yum或dnf:
sudo yum install epel-releasesudo yum install openvpn easy-rsa
安装完成后,建议创建一个专用目录来存放所有OpenVPN配置文件:
sudo mkdir /etc/openvpn/server
三、配置证书颁发机构(CA)
OpenVPN使用TLS/SSL证书进行身份验证,因此需要设置一个证书颁发机构来生成服务器和客户端证书。
- 首先复制Easy-RSA模板文件:
sudo cp -r /usr/share/easy-rsa/ /etc/openvpn/sudo mkdir /etc/openvpn/easy-rsa/keys
- 编辑vars配置文件:
sudo nano /etc/openvpn/easy-rsa/vars
找到以下参数并根据你的需求修改:
export KEY_COUNTRY="CN"export KEY_PROVINCE="Beijing"export KEY_CITY="Beijing"export KEY_ORG="Your Organization"export KEY_EMAIL="admin@yourdomain.com"export KEY_OU="IT Department"export KEY_NAME="OpenVPN-CA"
- 初始化并构建CA:
cd /etc/openvpn/easy-rsasource ./vars./clean-all./build-ca
执行这些命令后,系统会提示你输入一些信息,可以直接按Enter使用vars文件中设置的默认值。
四、生成服务器证书和密钥
接下来为OpenVPN服务器生成证书和密钥:
./build-key-server server
然后生成Diffie-Hellman参数(这个过程可能需要一些时间):
./build-dh
最后生成TLS认证密钥:
openvpn --genkey --secret keys/ta.key
五、配置OpenVPN服务器
现在可以创建OpenVPN服务器的配置文件了。首先从示例配置开始:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/sudo gzip -d /etc/openvpn/server/server.conf.gzsudo nano /etc/openvpn/server/server.conf
以下是需要修改或确认的关键配置项:
port 1194proto udpdev tunca /etc/openvpn/easy-rsa/keys/ca.crtcert /etc/openvpn/easy-rsa/keys/server.crtkey /etc/openvpn/easy-rsa/keys/server.keydh /etc/openvpn/easy-rsa/keys/dh2048.pemserver 10.8.0.0 255.255.255.0push "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 8.8.8.8"push "dhcp-option DNS 8.8.4.4"keepalive 10 120tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0cipher AES-256-CBCcomp-lzouser nobodygroup nogrouppersist-keypersist-tunstatus openvpn-status.logverb 3
根据你的需求调整这些参数后保存文件。
六、启用IP转发和配置防火墙
为了让VPN客户端能够访问互联网,需要启用IP转发:
sudo nano /etc/sysctl.conf
找到并取消注释以下行:
net.ipv4.ip_forward=1
然后应用更改:
sudo sysctl -p
接下来配置防火墙规则。对于使用iptables的系统:
sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPTsudo iptables -A FORWARD -i tun+ -j ACCEPTsudo iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPTsudo iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPTsudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
对于使用ufw的用户:
sudo ufw allow 1194/udpsudo ufw allow OpenSSHsudo nano /etc/default/ufw
将DEFAULT_FORWARD_POLICY从"DROP"改为"ACCEPT",然后:
sudo nano /etc/ufw/before.rules
在"# don't delete the 'COMMIT' line"之前添加:
# NAT rules for OpenVPN*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADECOMMIT
保存后启用更改:
sudo ufw disablesudo ufw enable
七、启动OpenVPN服务
现在可以启动OpenVPN服务了:
sudo systemctl start openvpn@serversudo systemctl enable openvpn@server
检查服务状态确认运行正常:
sudo systemctl status openvpn@server
如果一切正常,你应该能看到服务处于active (running)状态。
八、生成客户端配置文件
为每个需要连接VPN的客户端生成证书和密钥:
cd /etc/openvpn/easy-rsasource ./vars./build-key client1
你可以将"client1"替换为实际的客户端名称。然后创建客户端配置文件:
sudo mkdir /etc/openvpn/client-configssudo nano /etc/openvpn/client-configs/client1.ovpn
添加以下内容:
clientdev tunproto udpremote your-server-ip 1194resolv-retry infinitenobindpersist-keypersist-tunremote-cert-tls servercipher AES-256-CBCcomp-lzoverb 3-----BEGIN CERTIFICATE-----[...你的CA证书内容...]-----END CERTIFICATE----- -----BEGIN CERTIFICATE-----[...你的客户端证书内容...]-----END CERTIFICATE----- -----BEGIN PRIVATE KEY-----[...你的客户端密钥内容...]-----END PRIVATE KEY----- -----BEGIN OpenVPN Static key V1-----[...你的TLS认证密钥内容...]-----END OpenVPN Static key V1----- key-direction 1
将[...]部分替换为相应文件的实际内容,这些文件位于/etc/openvpn/easy-rsa/keys/目录下。
九、客户端连接测试
将生成的.ovpn配置文件安全地传输到客户端设备。对于Windows用户,可以下载OpenVPN GUI客户端;Linux和macOS用户可以通过命令行客户端连接。
连接成功后,你可以通过以下命令检查VPN接口:
ip addr show tun0
如果一切正常,你应该能看到tun0接口已经分配了VPN IP地址。
十、OpenVPN服务器优化和安全加固
为了提高性能和安全性,可以考虑以下优化措施:
- 启用TLS加密:在服务器配置中添加或修改以下行:
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
- 限制用户访问:创建用户验证脚本:
sudo nano /etc/openvpn/checkuser.sh
添加内容:
#!/bin/bashif [ "$1" = "client1" ]; then exit 0else exit 1fi
然后修改服务器配置:
script-security 2auth-user-pass-verify /etc/openvpn/checkuser.sh via-file
启用双因素认证:结合Google Authenticator等工具增加安全性。
日志监控:定期检查/var/log/syslog和OpenVPN状态日志。
十一、常见问题解决
连接超时:检查防火墙设置和端口转发,确认1194/UDP端口已开放。
TLS错误:确保证书没有过期,且客户端和服务器的系统时间同步。
路由问题:检查服务器是否正确配置了IP转发和NAT规则。
性能问题:对于高负载服务器,考虑升级到更高版本的OpenVPN或调整加密算法。
通过以上步骤,你应该已经成功在Linux系统上搭建了一个功能完整的OpenVPN服务器。记得定期更新OpenVPN软件以获取最新的安全补丁,并监控服务器日志以确保安全稳定运行。