OpenVPN 服务端与客户端
场景
要给一批用户开远程接入,或者对端只支持 OpenVPN(TCP 443 也能走)。
前置条件
- 公网服务器,放行 UDP 1194(或 TCP 443)
- 有 easy-rsa 生成的 CA
- 规划 VPN 网段
配置
dnf install -y openvpn easy-rsa
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret ta.key
服务端:
# /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.9.0.0 255.255.255.0
push "route 10.0.0.0 255.0.0.0"
push "dhcp-option DNS 10.0.0.2"
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
verb 3
systemctl enable --now openvpn@server
sysctl -w net.ipv4.ip_forward=1
客户端 .ovpn 把 ca/cert/key/ta 拼进去即可。
验证
systemctl status openvpn@server
tail -f /var/log/openvpn.log
cat /etc/openvpn/openvpn-status.log
客户端连上后 ip a 会多出 tun0。
回滚
systemctl disable --now openvpn@server
坑
- 服务端和客户端
dev不一致(tun/tcp),连上但没流量。 push "redirect-gateway def1"会把客户端全部流量拉走,可能断网。- 证书过期(默认 10 年倒还好),CA 换过要重发。
tls-auth两边密钥不是同一个,握手失败。- 防火墙只放 UDP 1194,改 TCP 就通不了。
- 客户端配置文件权限太松,私钥泄露。