Oamc

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 就通不了。
  • 客户端配置文件权限太松,私钥泄露。