OpenVPN内网分流

OpenVPN 的关键配置不是“能连上”,而是只让访问公司内网的流量走 VPN,避免客户端全部公网流量都被拉到公司出口。

准备参数

  • VPN_PUBLIC_HOST:VPN 公网 IP 或域名。
  • VPN_SERVER_LAN_IP:VPN 服务器在公司内网的 IP。
  • LAN_SUBNETLAN_MASK:公司内网网段与掩码。
  • OVPN_PORT:OpenVPN 端口,常见为 1194/udp

安装与配置

  1. 使用可信安装脚本或发行版软件源安装 OpenVPN,首次安装建议选择 UDP 和 1194 端口。
  2. 找到服务端配置文件,常见位置是 /etc/openvpn/server.conf/etc/openvpn/server/server.conf
  3. 注释或删除 push "redirect-gateway def1 bypass-dhcp",避免全局代理。
  4. 增加内网路由推送,例如 push "route 192.168.1.0 255.255.255.0"
  5. 如需内网域名解析,可额外推送内网 DNS。

转发、防火墙与端口映射

  • 开启 IPv4 转发,并写入系统配置以便重启后生效。
  • 使用 UFW 或 firewalld 放行 1194/udp
  • 在路由器后台配置端口映射:外部 UDP 1194 → VPN 服务器内网 IP 的 UDP 1194。
  • 云服务器还需要在安全组放通 UDP 1194。
“能连 VPN 但访问不了内网”的常见根因,是缺少回程路由。

回程路由与客户端

如果公司网关不是 VPN 服务器,需要在公司主路由器添加静态路由:目标网段为 OpenVPN 客户端网段,下一跳为 VPN 服务器内网 IP。生成客户端配置后,应确认客户端拿到 VPN 地址,并且访问公网时仍走本地出口。

验收与排障

  • 客户端可成功连接 VPN,并获得 VPN 地址。
  • 可访问内网目标系统。
  • 本机访问公网 IP 与未连接前基本一致,说明未全局走 VPN。
  • 服务端日志无明显报错。
  • 连不上时检查公网地址、端口映射、云安全组和防火墙。
  • 连上但访问不了内网时检查路由推送、IP 转发和回程路由。
  • 所有网站都走公司网络时,检查是否仍下发 redirect-gateway。