想通过自建VPN实现远程访问公司内网、家庭NAS或测试环境,确实需要把几个关键环节串起来:公网入口、服务端协议、证书认证、客户端配置以及安全策略。任何一环缺失,连接都可能卡在端口不通、证书校验失败或路由不通上。本文以OpenVPN为主线展开,因为它文档丰富、跨平台支持好,适合第一次搭建的人理解原理。再次提醒,VPN部署必须遵守当地法律法规,仅限合法远程访问用途。

一、先解决公网入口与协议选型
架设VPN服务器之前,服务器至少要有一个可被公网访问的IP地址。云服务器通常会提供公网IPv4地址,但安全组需要放行对应端口;家庭宽带则可能需要先确认运营商是否提供公网IP,有些地区默认是NAT后的内网地址,需要向运营商申请或改用内网穿透方案。没有公网入口,后面所有配置都无法生效。
协议选择上,OpenVPN、WireGuard、IPsec/IKEv2各有特点。OpenVPN兼容性最好,配置稍繁琐,但排错资料最多;WireGuard配置极简、性能高,但很多企业老客户端不支持;IPsec/IKEv2适合原生客户端,但NAT穿透和证书配置对新手不够友好。下面用表格做一个直观对比。
| 协议 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| OpenVPN | 兼容性好、文档多、可TCP/UDP | 配置步骤较多、性能一般 | 设备类型复杂、初次搭建 |
| WireGuard | 配置简单、性能高、代码简洁 | 老系统支持较弱、审计工具有限 | 较新Linux/移动端 |
| IPsec/IKEv2 | 原生客户端支持好、移动端体验佳 | NAT穿透配置麻烦、证书要求高 | iOS/macOS/Windows原生接入 |
总体建议:如果团队设备较杂,优先OpenVPN;如果所有设备都较新且追求低资源占用,可以选WireGuard。只要不碰已经不再推荐的点对点隧道协议PPTP,基础安全性就有保障。
二、OpenVPN服务端搭建实操
以Ubuntu服务器为例,先更新软件源并安装openvpn与easy-rsa。easy-rsa用于生成CA证书、服务端证书、客户端证书和Diffie-Hellman参数。生产环境不要把证书直接放在当前用户目录,建议统一放到 /etc/openvpn/easy-rsa 下,并设置仅root可读。
证书签发流程大致如下:初始化PKI目录,生成CA根证书,再签发服务端证书和至少一个客户端证书。DH参数生成耗时会稍长,可以先运行。生成后把 ca.crt、server.crt、server.key、dh.pem、ta.key 拷贝到 /etc/openvpn/server 目录。证书的Common Name不要重复,否则后期吊销时容易混淆。
接下来编辑服务端主配置文件。关键参数包括监听端口1194、使用UDP协议、启用tun设备、指定证书路径、配置子网拓扑和推送路由。示例如下:
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
keepalive 10 120
cipher AES-256-GCM
verb 3
其中 push 路由需要替换成你实际内网网段。之后开启系统IP转发,编辑 /etc/sysctl.conf 中 net.ipv4.ip_forward=1 并执行 sysctl -p。防火墙方面,如果使用ufw,需要放行1194/udp并在转发策略中允许来自tun0的流量,同时配置NAT规则。云服务器还要去控制台安全组放行1194/udp。
最后启动服务:systemctl enable openvpn@server --now,然后用 systemctl status openvpn@server 查看是否有报错。日志中出现 Initialization Sequence Completed 说明服务端基本起来了。
三、客户端配置与连接测试
服务端证书签发后,需要把客户端证书、客户端私钥、CA证书和ta.key打包到客户端配置文件里。一个典型的client.ovpn会包含remote 你的服务器公网IP 1194、proto udp、dev tun,以及内嵌的证书内容。内嵌证书时注意不要漏掉BEGIN和END标记,否则导入后会报证书解析错误。
Windows用户安装OpenVPN GUI后,把client.ovpn放入 C:\Program Files\OpenVPN\config\client.ovpn,然后右键OpenVPN GUI图标选择连接。注意,如果系统开启了UAC,首次运行可能需要管理员权限。移动端可以直接通过OpenVPN Connect导入.ovpn文件,Android和iOS都支持。
连接成功后,本机应能获取到10.8.0.x地址。此时先ping 10.8.0.1,如果通,说明VPN隧道正常;再ping内网中的某台服务器,例如192.168.1.10,如果通,说明路由和转发配置生效。不要一上来就访问具体业务,先按网络层逐级排错效率更高。
四、常见问题排查思路
端口不通是最常见的问题。可以用telnet或nc命令测试服务器1194端口,如果连接失败,先检查安全组、本机防火墙和运营商是否封堵UDP端口。部分运营商会对热门VPN端口做限制,此时可尝试将端口改为443/UDP或使用TCP 443,但不要使用TCP 443上的HTTP伪装等规避手段。
证书相关的报错通常表现为TLS握手失败。先检查服务器和客户端时间是否偏差过大,OpenVPN对证书有效期非常敏感;再确认客户端使用的是对应证书,如果服务端重新签发了CA,所有客户端必须同步替换新CA。
能连上但无法访问内网时,重点检查三个方面:一是服务器是否开启IP转发,二是NAT规则是否把10.8.0.0/24的流量正确转发到内网网卡,三是内网设备是否回程路由指向VPN服务器。许多内网路由器或服务器没有到10.8.0.0/24的路由,导致回包丢失。
五、安全加固与日常维护注意事项
自建VPN最大的风险不是配置难度,而是证书和密钥泄露。私钥文件必须设置600权限,不要通过聊天工具明文传输。员工离职或设备丢失时,要立即吊销对应客户端证书,并在服务端配置证书撤销列表crl-verify,这样被吊销的证书就无法再接入。
日常维护还要养成几个习惯:定期更新操作系统和OpenVPN版本;限制VPN用户只在必要时间段访问;对连接日志做集中留存,便于异常溯源;不要与Web服务共用同一张证书;如果VPN只面向少数固定人员,可以在防火墙层对来源IP做白名单。最后再次强调,任何VPN部署都必须在法律允许范围内进行,不可用于违规跨境访问。