三层交换机 arp 学习疑问

185 天前
 Executor

现有一台服务器, 内网 IP 为 11.1.2.3, 上联一个三层交换机
其余内网的 udp 通讯 10.1.2.3 -> 10.1.2.4 被该交换机转发到 11.1.2.3 上
由于 11.1.2.3 内 forward 链上的 nft 规则计算为 reject, 组合 10.1.2.4 -> 10.1.2.3 icmp admin-prohibited 包发回到该三层交换机
请问此时交换机会根据该 icmp 包学习到服务器具有该 IP 的 arp 表项不

即:
IP ADDRESS | MAC ADDRESS
11.1.2.3 | abcd-ef01-0203
10.1.2.4 | abcd-ef01-0203

2146 次点击
所在节点    宽带症候群
33 条回复
Executor
184 天前
@newborn 谢谢, 实际情况中, 上层交换为我的 mac 地址记录了额外的 3 个/24 段, 每段至少 5 个 IP+的映射关系, 因此 "11.1.2.3 设备的 mac 地址与 10.1.2.4 相同" 这个说法应该不成立
所以我很疑惑这些记录是怎么创建出来的, 按理说其它内网的 arp 包到不了我这一边, 且就算到了我这边, 内核也不应回复
机房给我的 dis arp | in abcd-ef01-0203 截图大体如下
IP ADDRESS | MAC ADDRESS | EXP(M) | TYPE/VLAN | INTERFACE
10.1.2.4 | abcd-ef01-0203 | 110 | D/123 | Eth-Trunk2
...
10.2.5.6 | abcd-ef01-0203 | 112 | D/123 | Eth-Trunk2
...
10.3.6.7 | abcd-ef01-0203 | 113 | D/123 | Eth-Trunk2
...
11.1.2.3 | abcd-ef01-0203 | 111 | D/123 | Eth-Trunk2
Executor
184 天前
@newborn 另附当时在 vpn xfrm 网口上抓到的回包脱敏图片: https://sm.ms/image/UFRiNvxGPaTlc3o
这个包从网口收到, 但 reject 报文从 xfrm 网口传出, 因为当时偷懒直接定了 10.0.0.0/8 dev ipsec0 的路由规则, 所以 reject 报文从 xfrm 网口发出去前被我抓到了
看内容是机房内部的 syslog 通信报文被转到我机器 (11.x.y.z) 上来了, 后来我严格了路由规则后, reject 报文就会从网口发回, 交换机应该就会看到了
有些怀疑是因为这个 syslog 的报文被交换机广播到我机器上, 然后机器回了 reject 报文导致交换机学习了
Int100
183 天前
这机房怎么会用 11.0.0.0/8 这种作为内网地址呢?
Int100
183 天前
让我捋捋

- 这机房给你配的地址是 11.0.0.0/8 这种地址.
- 机房没做隔离, 10.0.0.0/8 的数据包也转发到你这来了.
- 机房内部内部的 syslog 通信报文你也收到了.
- 机房认为你的的服务器在进行 ARP 欺骗攻击, 执意要清退.

---
你是单独托管一台服务器在机房里的吗?
Executor
183 天前
@Int100 差不多就是这样子; 是的, 我单独托管了一台
huaxie1988
183 天前
感觉你把因果搞错了,单播包在交换机没做策略情况下不可能发给你,所以会不会是先交换机上 arp 指向你了才导致把包发给你,和你后面的 icmp 没关系。
newborn
183 天前
@Executor 看看你的机器是不是开了 arp 代理 sysctl -a | grep proxy_arp
Executor
183 天前
@huaxie1988 所以我也很好奇这些包是怎么给我转来的
别的网段的 arp 请求一般来讲我不可能能原样收到, 中间都要过网关, 我很显然和其它网段的主机不是"网络邻居", 但交换机就是学到了我的 mac 挂着多个/24 段的 IP
但有一个有趣的现象, 我的网卡挂的实际上直接是公网 IP 地址, 网关也是该 IP /24 段下的地址, 是不是这中间他们有什么策略转换成他们自己内网的 11.0.0.0/8 这个地址后搞出来的一系列问题
Executor
183 天前
@newborn 今晚我的机器才送到家里, 到时候上电了我看看, 感谢
Executor
182 天前
@newborn 输出全 0, 确实没开这东西
nkloveni
179 天前
你看看你 ICMP reject ,回包的 IP ,应该就是你那个 nft 的 reject 导致的。交换机的 mac 表只是看了一眼报文里的 mac 地址和 ip 地址,就把对应关系记录下来了。而你的机器开了 ip_forward ,回个别的 IP 给网关很正常啊
Executor
179 天前
@nkloveni 没错的, 我也估计是这样的情况, 只是机房给我的回复非常肯定我在搞 arp 欺骗把我整的不自信了, 再加上从 kernel 的源码 /net/ipv4/netfilter/nf_reject_ipv4.c#L183-L184 可以看出确实是按你说的这样回
nkloveni
179 天前
@huaxie1988 你猜当交换机在 mac 表里找不到数据包的 mac 地址,不知道该向哪个口转发的时候,交换机会怎么办?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1121295

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX