目前我有一台物理 Linux 机器 (Centos7),有两个物理接口。在 eth0 接口上,我有 3 个虚拟接口 - eth0.66、eth0、67、eth0.99(vlan 接口)。wlan0 是内部 WAN 上行链路。tun0 是通过 SSL 站点到站点隧道创建的。我已在内核中启用了 ipv4 转发。
截至目前,默认路由表如下所示:
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 eth0.66
169.254.0.0 0.0.0.0 255.255.0.0 U 1005 0 0 eth0.67
169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 eth0.99
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.2.0 192.168.60.65 255.255.255.0 UG 0 0 0 tun0
192.168.6.0 192.168.60.65 255.255.255.0 UG 0 0 0 tun0
192.168.7.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.7.128 0.0.0.0 255.255.255.192 U 0 0 0 eth0.99
192.168.7.192 0.0.0.0 255.255.255.224 U 0 0 0 eth0.66
192.168.7.224 0.0.0.0 255.255.255.224 U 0 0 0 eth0.67
我正在尝试强制来自 192.168.7.224/27 网络的所有流量通过隧道,并使用 192.168.7.1 作为默认网关(192.168.7.1 是 VPN 服务器端防火墙的网关,也是我控制的)。
我尝试创建一个新的路由表(在 etc/iproute2/rt_tables 中) - 并添加适当的规则(目前在运行时而不是通过脚本,但我知道如何执行此操作以实现持久路由)。
from all to 192.168.7.224/27 lookup custom
from 192.168.7.224/27 lookup custom
然后是路由表:
default via 192.168.7.1 dev tun0
此时,一切都崩溃了……ping 停止工作,eth0.67 网络上的互联网失败,等等。我如何才能正确获取此路由?这可能是一个愚蠢的问题,但内核路由表是否会被完全忽略,我是否需要写入 SSL VPN 正在推送的所有其他路由?(192.168.2.0 和 6.0 路由来自 SSL OPENVPN 配置)。
答案1
找到解决方案:需要再添加一条路由 192.168.7.224/27 dev eth0.67 src 0.0.0.0 table custom。
其他路由仍然存在,因此无需重复添加它们。(针对 192.168.6.0 和 192.168.2.0 网络)。
PS-感谢您的反对!