我对网络路由了解不多。希望这很容易。
- 我的 ISP 提供的路由器通过 DHCP 在 192.168.10.0/24 上提供 IP
- 它连接到 Nethserver(防火墙设备)的“红色”接口
- 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
- 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 em1
和tcpdump -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
看看数据包去往何处;添加和删除一些路由,看看有什么变化。跟踪数据包确实是了解网络的最佳方式。
在此期间尝试最小化其他流量;如果仍然有过多的流量,请阅读过滤规则(tcpdump
或wireshark
在流量过多的接口上使用;您可以使用它在 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 规则应该同样有效。