首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iptables偶尔会记录MAC地址。为什么?

iptables偶尔会记录MAC地址。为什么?
EN

Server Fault用户
提问于 2015-10-25 19:25:54
回答 2查看 1.4K关注 0票数 6

我已经在特定的iptable包丢弃上启用了日志记录。我使用的规则只与IP/端口相关,这是我在日志中很容易看到的,不过偶尔我也会得到记录的MAC地址信息。比如:

“MAC=00:26:a9:7b:c9:30:00:17:0f:ac:6a:80:08:00"... ....OUT=eth1 IN=”

这些与mac地址相关的日志是零星的。

我注意到的:

  • 这些被丢弃的/mac日志的通信总是入站的。
  • 所记录的源mac地址是我默认的网关(服务提供者)之一,尽管源IP是不同的。
  • 目的地mac (很明显,但只是确认一下)是我的接口之一。

我想要理解的是:

  • 当决定在日志中捕获"MAC地址+IP/端口“而不是”IP/端口“时,iptables逻辑是什么?
EN

回答 2

Server Fault用户

发布于 2016-03-04 23:16:50

MAC信息只记录在本地网络上的设备上。它实际上是以太网MAC头的十六进制转储,由源MAC地址(00:26:a9:7b:c9:30)、目标MAC地址(00:17:0f:ac:6a:80)和以太网帧类型(08:00)组成。

票数 3
EN

Server Fault用户

发布于 2023-03-20 20:22:02

这些信息必须是可以得到的。如果不可用,它将不会被记录。

由于IPv4依赖于ARP来解析目的地的MAC地址,所以目前还不知道iptables的情况:这种解析会在iptables的任何一个钩子中发生,即使目标IP地址已知,即使这些信息通常仍然缓存在相邻的ARP表中也是如此。

下面是观察到的结果(使用内核6.1),并推断当涉及的接口都是以太网时:

  • 预输出/输入/前向
    • 源和目标MAC地址总是可用的PREROUTING,输入或转发。
    • 对于前向情况,目标MAC地址表示接收帧的接口的本地系统的目标MAC地址,而不是未来的目标系统或网关。

  • 输出
    • 源MAC地址未知:尚未将数据包嵌入到帧中,因此不知道该MAC地址。
    • 目标MAC地址也不知道解释。

  • 后处理
    • 如果包是本地发出的(通过输出),那么就像输出情况一样:没有可用的信息。
    • 如果数据包被路由(通过转发):那么即使“过时”,转发的未更改信息仍然可用并记录在案。

简言之:

  • 预选,输入总是有信息的
  • 转发将始终拥有路由之前的信息。
  • 输出将永远不会在日志中有MAC地址。
  • 只有在数据包被路由时,POSTROUTING才会拥有它,在本例中,这将是与转发登录相同的信息。

不提供信息的其他情况是,这些信息从来不存在:

  • 当出口接口不是以太网时(例如: lo,一个像WireGuard或OpenVPN这样的tun模式的第3层接口):那么POSTROUTING将不会显示它在数据包被路由时会显示的“过时”MAC地址。
  • 当入口接口不是以太网时,任何钩子中都不会出现MAC地址。

当使用sysconf属性br_netfilter加载bridge-nf-call-iptables=1模块(通常由Docker加载)时,我没有考虑桥接帧(在第2层)遍历iptables (通常是处理第3层数据包)的行为会有什么不同。这些“数据包”还将使用附加属性:PHYSIN=PHYSOUT=记录。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/731545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档