OpenVPN 搭建教程:从零配置服务端与客户端,手机电脑安全接入内网


出差在外想访问家里的 NAS、公司内网要连回办公室、担心公共 WiFi 不安全想加密上网——OpenVPN 是最成熟、兼容性最好的 VPN 方案之一:服务端跑在你的 VPS 上,手机、电脑、路由器都能一键接入,流量全程加密。这篇文章用最简单的方式,在 CentOS 上从零搭好 OpenVPN 服务端,并配置 Windows 和手机客户端。

一、OpenVPN 是什么?和 WireGuard 有什么区别

OpenVPN 基于 SSL/TLS 加密隧道,兼容性极好,几乎所有平台都有官方客户端;配置相对复杂但非常成熟稳定。

对比 OpenVPN WireGuard
内核/实现 用户态软件 内核模块,性能更高
配置复杂度 较高(证书体系) 简单(密钥对)
客户端支持 全平台,支持极好 主平台支持,部分旧设备不行
适用场景 需要兼容老设备、企业环境 追求性能、设备较新

VPS 搭建个人 VPN,两者都可以;想稳定兼容所有设备,OpenVPN 是老牌稳妥选择。

二、安装 OpenVPN(CentOS 7 示例)

第 1 步:安装软件包

yum install -y epel-release
yum install -y openvpn easy-rsa

第 2 步:初始化 easy-rsa(用于签发证书)

mkdir -p /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa
./easyrsa init-pki

第 3 步:创建 CA 证书(按提示设置密码/名称)

./easyrsa build-ca nopass

第 4 步:生成服务端证书和密钥

./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret ta.key

第 5 步:复制证书到 openvpn 目录

cp pki/ca.crt /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/dh.pem /etc/openvpn/dh.pem
cp ta.key /etc/openvpn/

三、配置服务端

编辑 /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.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 223.5.5.5"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3

关键参数:

参数 作用
server 10.8.0.0 给客户端分配的虚拟网段
redirect-gateway 客户端所有流量走 VPN(全局代理)
push DNS 客户端使用指定 DNS
cipher AES-256-GCM 加密算法

开启内核转发并放行端口:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.rules

iptables -A INPUT -p udp --dport 1194 -j ACCEPT

启动并开机自启:

systemctl start openvpn@server
systemctl enable openvpn@server
systemctl status openvpn@server    # 确认 active (running)

四、生成客户端证书与配置

第 1 步:签发客户端证书(每个客户端一个)

cd /etc/openvpn/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

第 2 步:生成客户端配置文件 client1.ovpn

client
dev tun
proto udp
remote 你的VPS公网IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3

<ca>
[粘贴 ca.crt 内容]
</ca>

<cert>
[粘贴 client1.crt 内容]
</cert>

<key>
[粘贴 client1.key 内容]
</key>

<tls-auth>
[粘贴 ta.key 内容]
</tls-auth>
key-direction 1

快捷生成方法:把证书内容拼进一个脚本自动生成 .ovpn 文件,然后下载到本地使用。

五、客户端连接

Windows 客户端:

  1. 官网下载安装 OpenVPN GUI;
  2. 把 client1.ovpn 放入 C:\Program Files\OpenVPN\config\;
  3. 右键托盘图标 -> 连接,输入用户名密码(如果配置了)即可。

手机端(Android/iOS):

  1. 应用商店搜索安装 OpenVPN Connect;
  2. 导入 client1.ovpn 文件;
  3. 点击连接,出现"已连接"就是成功了。

Linux 客户端:

yum install -y openvpn
openvpn --config client1.ovpn

六、验证 VPN 是否正常工作

客户端连上后,检查:

# 客户端上执行,能看到 10.8.0.1(服务端虚拟 IP)说明隧道通了
ping 10.8.0.1

然后访问一个网站或查 IP:

curl ifconfig.me

显示的是 VPS 的公网 IP,说明流量已经走 VPN 加密隧道了。

七、常见问题排查

1. 客户端连接超时

  • 确认服务端在跑:systemctl status openvpn@server;
  • 确认 1194 UDP 端口放行:ss -ulnp | grep 1194,防火墙检查;
  • 用客户端日志看卡在哪一步(连接->验证证书->隧道建立)。

2. 连上了但无法上网

一般是内核转发没开或 NAT 规则没加:

sysctl net.ipv4.ip_forward    # 应为 1
iptables -t nat -L -n | grep MASQUERADE   # 应有 10.8.0.0/24 的规则

3. TLS error: verify error(证书问题)

客户端和服务端的 ca.crt 不一致,或证书过期。重新生成并替换。

4. 忘记服务端密码

建 CA 时如果用了 nopass 就不会有密码;否则所有证书都要重新签发。建议直接 nopass 重新生成。

总结

OpenVPN 搭建流程就是四步:easy-rsa 签发证书 -> 配置 server.conf -> 放行端口和转发 -> 生成客户端 .ovpn 导入连接。一次搭好之后,手机、电脑、路由器都能随时接入,出差在外访问家里和公司内网非常方便。记得把 1194 端口只对你的客户端开放、证书文件别泄露,VPN 才能真正安全。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Jenkins 安装与使用教程:从零搭建 CI/CD 流水线,Git 提交自动构建部署

Zabbix 监控搭建实战:Agent 安装、主机接入、CPU/内存/磁盘监控与邮件告警

评 论
更换验证码