在现代Linux桌面和服务器环境中,Ubuntu因其开源、稳定和易用性成为众多网络工程师和开发者的首选操作系统,当用户需要通过虚拟私人网络(VPN)访问远程资源或实现特定流量的加密传输时,如何在Ubuntu中正确配置路由规则,使部分流量走VPN而其他流量走本地网关,是一个常见且重要的需求,本文将详细介绍如何在Ubuntu系统中设置静态路由,并结合OpenVPN或WireGuard等主流协议,实现灵活的网络分流策略。

确保你已安装并配置好一个可用的VPN服务,以OpenVPN为例,通常通过openvpn命令行工具或图形界面客户端(如NetworkManager)来连接,一旦成功建立连接,你可以使用以下命令查看当前路由表:

ip route show

你会看到类似这样的输出:

default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.10

tun0是OpenVPN创建的虚拟接口,代表VPN隧道,默认路由(default)仍指向本地网关(192.168.1.1),这意味着所有流量都会通过本地网络,包括发往互联网的请求,这并非我们想要的效果。

要实现“仅特定流量走VPN”,我们需要修改路由表,假设你想让访问某个私有IP段(如192.168.100.0/24)的数据包通过VPN隧道,而其他流量仍走本地网关,可以执行如下命令:

sudo ip route add 192.168.100.0/24 via 10.8.0.1 dev tun0

这里,via 10.8.0.1是OpenVPN服务器分配给客户端的网关地址,dev tun0指定通过哪个接口转发,这样,只有目标为该子网的流量会被重定向到VPN。

更高级的场景是“智能分流”——即只让特定应用(如浏览器或企业内网工具)走VPN,此时可借助iptables进行更细粒度控制,将Chrome浏览器的流量强制走tun0接口:

sudo iptables -t mangle -A OUTPUT -m owner --pid-owner $(pgrep chrome) -j MARK --set-mark 1
sudo ip rule add fwmark 1 table 100
sudo ip route add default via 10.8.0.1 dev tun0 table 100

命令会创建一个名为table 100的自定义路由表,并将标记为1的流量导向VPN,此方法适用于企业环境中的多租户网络隔离或远程办公场景。

建议在/etc/openvpn/client.conf中添加redirect-gateway def1选项以自动替换默认路由,但务必谨慎使用,因为它会影响所有流量,若需保留本地网关,应手动管理路由规则。

记得测试你的配置是否生效,使用curl -v https://www.google.com检查是否能正常访问公网;再用ping 192.168.100.5验证内网连通性,必要时可使用traceroute观察数据包路径。

Ubuntu下配置路由与VPN的核心在于理解IP层的转发机制,合理利用ip routeiptables和自定义路由表,掌握这些技能后,不仅能提升网络安全性,还能优化带宽利用率,满足复杂的企业级网络需求,对于网络工程师而言,这是日常运维中不可或缺的实战能力。

Ubuntu系统中配置路由与VPN的完整指南,实现网络分流与安全访问  第1张

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN