在监控防火墙日志时,我注意到日志MAC
中报告的地址nftables
与标准长度不匹配。
据我了解,MAC
地址是 48 位,应该表示为 12 个十六进制数字,因为每个十六进制数字需要 4 位,因此 48/4 = 12 个十六进制数字(分为 6 组,每组 2 位数字)。
以上与维基百科的说法一致:
通常情况下,MAC 地址可以识别为六组两位十六进制数字,用连字符、冒号分隔,或者不使用分隔符。
根据维基百科,这种地址的一个例子是01:23:45:67:89:AB
,这意味着有 12 个十六进制数字(6 组 x 每组 2 个 = 12),这就是我如何识别我的设备LAN
以及如何进行流量过滤LAN
。
防火墙日志(例如条目)中也可以看到这样的 6 组十六进制数字ARP
,因为很明显,所以我就不发布它的示例了。
但是也有类似这样的日志:
2024-09-29T14:44:21.000498+02:00 debian kernel: [ 2520.417160] DROP default new_in_4: IN=wlan0 OUT= MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00 SRC=157.48.189.170 DST=192.168.1.34 LEN=132 TOS=0x08 PREC=0x20 TTL=43 ID=0 PROTO=UDP SPT=35165 DPT=3451 LEN=112
这个列出了 14 组十六进制数字MAC
地址,总共 28 个十六进制数字。
所有此类地址都以 开头00:
和结尾,:00
作为第一组数字和最后一组数字。
MAC
因此,日志中可以看到这个地址nftables
比实际大小高出一倍多(计算前缀组和后缀组00
)。
问题1是,这个14组28位地址是什么,它在日志MAC
中是什么意思?nftables
问题 2 可能更有趣,如何才能获取MAC
互联网上某个对等点的地址?我猜这个MAC
地址来自NAT
防火墙之外,因为我无法识别它。
我该如何过滤这些奇怪的MAC
地址?我应该这样做吗?
由于我已关闭客户端,此示例日志条目丢弃了由 bittorrent peer 生成的入站 UDP 流量。
编辑:
ip link show wlan0
3: wlan0 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
link/ether 00:c0:ca:52:bf:8e brd ff:ff:ff:ff:ff:ff
我查看了源代码,试图找出报告的内容
MAC=
。在Linux内核中发现dump_mac_header
netfilter
函数有以下相关块:这意味着:
NF_LOG_MACDECODE
设置了日志标志,将报告单独的MACSRC
、MACDST
和MACPROTO
字段。MAC=
以冒号分隔的字节列表。我还没有尝试过,但是从表 60.log-flags中
man nft
您应该能够设置ether
标志来导致 MAC 地址的解码:iptables偶尔会记录 MAC 地址。为什么?正如ilkkachu所建议的,对于问题中的 14 字节,
MAC=
认为:00:c0:ca:52:bf:8e
wlan0
是目标 MAC 地址。这与问题中给出的设备的 MAC 地址相匹配。来自 Wireshark OUI 查找工具,该工具适用于Alfa, Inc.
制造商(WiFi 适配器供应商)。10:a3:b8:f5:f7:28
是源 MAC 地址。这是针对Iskratel d.o.o.
制造商(宽带连接和融合通信的网络设备提供商)的。08:00
是 IPv4 的以太网类型。