在存在 VPN 的情况下进行 Linux 路由-穿过防火墙设备访问路由器?

在存在 VPN 的情况下进行 Linux 路由-穿过防火墙设备访问路由器?

我对网络路由了解不多。希望这很容易。

  1. 我的 ISP 提供的路由器通过 DHCP 在 192.168.10.0/24 上提供 IP
  2. 它连接到 Nethserver(防火墙设备)的“红色”接口
  3. Nethserver 的“绿色”接口通过 DHCP 为 192.168.100.0/24 上的 LAN 提供 IP
$ ip route # on the firewall    
default via 192.168.10.1 dev em1     
192.168.10.0/24 dev em1 proto kernel scope link src 192.168.10.10    
192.168.100.0/24 dev p2p2 proto kernel scope link src 192.168.100.1  
  1. 192.168.100.0/24 网络上的笔记本电脑已连接到 VPN
$ ip route # on the laptop
default via 10.8.8.1 dev tun0  proto static  metric 50 
default via 192.168.100.1 dev enp0s25  proto static  metric 100 
10.8.8.0/24 dev tun0  proto kernel  scope link  src 10.8.8.27  metric 50 
169.254.0.0/16 dev tun0  scope link  metric 1000 
192.168.100.0/24 dev enp0s25  proto kernel  scope link  src 192.168.100.10  metric 100 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 linkdown 
209.X.Y.Z via 192.168.100.1 dev enp0s25  proto static  metric 100 

我会在某个时候把路由器从那里拿走,但现在我希望能够从我的笔记本电脑访问该路由器的 Web 界面 192.168.10.1。我如何在路由表中添加一些内容来实现这一点?

(加分点:不太长的参考资料至少可以帮助我了解网络路由的基础知识。)

答案1

路由的简要说明:给出目标地址后,内核会查阅路由表以找出下一跳要使用的接口。您可以使用ip route get 1.2.3.4查看目标地址的查找结果1.2.3.4

您已经发现ip route,其相当于ip route list,并且您可以使用ip route add ...ip route del ...来添加和删除规则。

但是,从您的路由表来看,假设您的笔记本电脑有到 的default路由192.168.100.1,那么一切都应该正常。如果没有,那么不是路由的问题。

为了调试这个,打开三个终端(一个在你的笔记本电脑上,两个在 Nethserver 设备上,无论如何你都可以进入这个终端),然后在 Nethserver 上执行tcpdump -ni em1tcpdump -ni p2p2,在你的笔记本电脑上使用正确的网络接口执行类似操作。

然后ping 192.168.10.1在笔记本电脑上执行此操作,并观察 ping 数据包(和响应)的传输距离。这将帮助您缩小问题的范围。

例如,如果您在 上看到传出数据包p2p2,但在 上没有看到em1,则防火墙不允许从p2p2到 的流量em1。如果您在 看到响应数据包em1,但在 上没有看到p2p2,则防火墙中的连接跟踪器(它应该允许已建立连接的应答通过)不起作用。等等。

编辑

由于您的default路由并非指向 Nethserver(但在您的情况下,指向 VPN),因此您必须告诉您的笔记本电脑它可以192.168.10.0/24通过 Nethserver 访问(并且不应该尝试通过 VPN 访问它)。

为此,您需要在笔记本电脑上添加(以 root 身份)一条路线:

ip route add 192.168.10.0/24 via 192.168.100.1 dev enp0s25

(此命令的一些变体也可以起作用,稍微试验一下)。

因此在这种情况下打开终端窗口tcpdump,两个在您的笔记本电脑上,tun0以及enp0s25

ping看看数据包去往何处;添加和删除一些路由,看看有什么变化。跟踪数据包确实是了解网络的最佳方式。

在此期间尝试最小化其他流量;如果仍然有过多的流量,请阅读过滤规则(tcpdumpwireshark在流量过多的接口上使用;您可以使用它在 UI 中设置过滤规则)。

编辑

是的,您可以post-up根据自己的设置以各种方式(包括)使此设置持久化,但最优雅的方式是让 Nethserver 通过 DHCP 将该附加路由分发到192.168.100.0/24子网。这样,子网中的所有计算机都将收到路由,而无需明确配置所有计算机。您可能需要编辑 Nethserver 上的 DHCP 配置文件来实现这一点。

答案2

您遇到的问题是,所有不发往 192.168.100.* 的流量都会通过 VPN 发出(因为您有 2 个默认网关,而 VPN 网关的度量值较低)。您需要做的就是添加一条路由,说明 192.168.10.*(或者甚至只是 192.168.10.1,以实现更严格的安全性)应该通过 WAN 端口发出。我会添加一条规则,例如

   route add 192.168.10.1 gw 192.168.100.1

@DirkT 规则应该同样有效。

相关内容