Rocky Linux 8 X86-64 位于具有两个以太网接口的 PC 上,每个接口连接到隔离的交换集线器,然后连接到路由器。
LAN1: 192.168.1.2/24 <--> Hub1 <--> 192.168.1.1 (Router port #1)
LAN2: 192.168.2.2/24 <--> Hub2 <--> 192.168.2.1 (Router port #2)
|
+------> Laptop (192.168.2.100/24, GW=192.168.2.1)
(PS:我已经去掉了所有其他电缆,所以现实世界的环境就是上图所示的。而且我不认为有任何循环)
并LAN1
已LAN2
正确设置相应的网关。路由器也正确设置了静态路由规则(端口#1 <--> 端口#2)。有另一台笔记本电脑连接到 Hub2 并将 IP 设置为192.168.2.100/24
, GW= 192.168.2.1
。
问题是:我无法192.168.1.2
从笔记本电脑连接,除非我禁用LAN2
Rockey Linux 上的网络接口。甚至PING
不会回应。
更多细节:
- 如果我禁用
LAN2
,我就可以毫无问题地192.168.1.2
从子网访问。192.168.2.0/24
- 只是从 Hub 上拔掉电缆是不行的。我必须使用
nmcli
/完全禁用网络接口nmtui
才能LAN1
响应。 - 如果我连续
PING
使用笔记本电脑,当我再次重新启用时,它将停止响应LAN2
。 - 所有 PC、笔记本电脑和路由器都可以
PING
在子网上互相访问192.168.2.0/24
,不会出现问题,因此不可能是 ARP 相关问题。
操作系统似乎付出了过多的努力来通过LAN2
(甚至不是默认网关)发送响应数据包,而不是使用最初接收数据包的接口。
默认路由表如下所示:
Destination Gateway Genmask Flag Metric Iface
default _gateway 0.0.0.0 UG 102 ens18
192.168.2.0 0.0.0.0 255.255.255.0 U 101 en1sf31
192.168.1.0 0.0.0.0 255.255.255.0 U 102 ens18
我不知道发生了什么事。
由于某种原因,我需要192.168.1.2
从192.168.2.0/24
子网进行访问,同时保持两个网络接口处于活动状态。
请帮忙。
答案1
简短回答:
sysctl -w net.ipv4.conf.all.rp_filter=2
为了使此更改在重启后仍然存在,请将其添加到/etc/sysctl.conf
。
完整答案:https://access.redhat.com/solutions/53031
简而言之,由于 RFC 3704 中推荐的“严格反向路径转发过滤”,该数据包被 Rocky Linux 丢弃。禁用它或将其设置为宽松可以解决问题。