OpenVPN可访问VPC但联网流量丢失,需配置仅VPC流量走VPN
OpenVPN可访问VPC但联网流量丢失,需配置仅VPC流量走VPN
看起来你遇到的是OpenVPN默认把所有流量都导去VPN服务器,导致公网访问失效的问题,别担心,咱们一步步调整配置就能解决它!
问题根源
你的当前配置里,OpenVPN服务器默认会把客户端的默认网关设置为VPN服务器本身,这就导致所有流量(包括公网访问)都试图通过VPN转发,但你的VPN服务器并没有配置公网流量的转发规则,所以客户端就失去了公网连接。我们需要调整路由策略,让只有VPC网段的流量走VPN,其余流量保留本地网络路径。
具体调整步骤
1. 修改OpenVPN服务器配置文件
打开你的服务器配置文件(比如/etc/openvpn/server/server.conf),做以下调整:
- 检查是否存在类似
push "redirect-gateway def1 bypass-dhcp"的配置,如果有直接删除——这就是强制所有流量走VPN的元凶。 - 保留你已有的
push "route 10.0.0.0 255.255.0.0"配置,这会告诉客户端:只有访问10.0.0.0/16(你的VPC网段)时才使用VPN路由。 - 建议添加一行DNS推送配置,避免客户端连VPN后DNS解析失效:
你也可以替换成自己信任的公网DNS服务器,比如push "dhcp-option DNS 8.8.8.8"1.1.1.1。
2. 确保服务器IP转发功能正常
VPC流量的转发依赖服务器的IP转发功能,先临时开启:
sudo sysctl -w net.ipv4.ip_forward=1
再设置永久生效(重启后不失效):
编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward一行,修改为:
net.ipv4.ip_forward=1
保存后执行sudo sysctl -p让配置立即生效。
3. 客户端.ovpn文件检查
打开你的客户端.ovpn文件,确保没有redirect-gateway相关的配置项,如果有就删除。如果服务器推送的路由没有生效,也可以手动在客户端配置里添加:
route 10.0.0.0 255.255.0.0
4. 重启服务并测试
重启OpenVPN服务器让配置生效:
sudo systemctl restart openvpn-server@server
重新连接VPN客户端后,测试:
- 访问VPC内的
10.0.0.x地址,确认能正常访问; - 访问公网网站(比如
google.com),确认公网连接恢复正常。
原理说明
通过删除默认网关推送、仅指定VPC网段的路由,客户端会自动区分流量:访问VPC时将数据包发送至VPN服务器,其余公网流量则沿用本地网络的默认网关,这样就实现了“仅VPC流量走VPN,公网流量不受影响”的需求。
备注:内容来源于stack exchange,提问作者David Rojo




