dmesg + UDP:校验和错误。 + RHEL 7.x

dmesg + UDP:校验和错误。 + RHEL 7.x

从 dmesg 我们得到非常奇怪的行

[6484420.812643] raid6: using avx2x2 recovery algorithm
[6484420.859086] Btrfs loaded
[6484426.278636] nr_pdflush_threads exported in /proc is scheduled for removal
[6484708.776239] ixgbe 0000:04:00.0: invalid short VPD tag 06 at offset 4
[6900952.098901] perf: interrupt took too long (6247 > 6167), lowering kernel.perf_event_max_sample_rate to 32000
[7372848.819396] Peer 0000:0000:0000:0000:0000:ffff:0a15:f030:1054/8042 unexpectedly shrunk window 3002395993:3002395997 (repaired)
[8139485.039423] Turbo disabled by BIOS or unavailable on processor
[8380300.891343] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380320.890541] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380440.896206] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380460.895001] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380463.207397] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380467.316531] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380468.363352] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380469.332044] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380489.330943] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380509.329849] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380529.328678] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380549.468256] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380569.326474] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380589.340946] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380609.339969] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380619.870472] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380620.964216] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380621.979847] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380641.869255] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380661.883737] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380681.867153] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380701.881531] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380721.864752] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380741.879282] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380761.878160] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380781.876977] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380801.875853] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380821.874754] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380841.873636] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380861.872533] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380881.871408] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380901.870340] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380921.884773] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380956.392645] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380957.392566] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380958.517530] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380978.384846] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8380998.383622] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381018.387820] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381038.390564] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381058.395931] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381060.052209] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381061.114504] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381062.115355] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69
[8381082.053988] UDP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69

那行是:

DP: bad checksum. From 73.2.33.11:5353 to 82.2.33.1:5353 ulen 69

表明存在严重问题?

答案1

这些“UDP 错误”是 UDP 校验和卸载。 NIC 负责校验和,因此不在 CPU 级别完成,以节省 CPU 资源。 VMWare 做到了,我认为 KVM 也做到了(而且不仅仅是)。因此,在使用tcpdump或查看系统日志时,无法在操作系统/虚拟机级别看到正确的校验和。

分段和校验和卸载:使用 ethtool 关闭

不幸的是,有时我们在 Wireshark 中看到的并不是我们所期望的。发生这种情况的一种情况是操作系统将 TCP/IP 操作卸载到网络接口卡 (NIC)。卸载的常见操作是分段和校验和计算。也就是说,它允许NIC使用自己的处理器来执行分段,而不是操作系统使用CPU来分段TCP数据包。这样可以节省 CPU 资源,并且重要的是减少与 NIC 之间的总线通信。

也可以看看Linux 网络:如何禁用/启用卸载功能、RX/TX 校验和、分散、收集等

tcpdump 输出中的 UDP / TCP 校验和错误

如果您启用了卸载功能,并且在 tcpdump 输出中看到 cksum 不正确,没有任何数据包错误,并且您的网络工作正常:则无需担心,因为校验和实际上是在网络适配器上计算的,并且 tcpdump 显示计算出的校验和在内核级别。

来自 tcpdump 和 NIC 硬件卸载的 UDP/TCP 校验和错误

检查活动 NIC 硬件卸载选项后,您可以看到明显的结果

$ sudo ethtool -k eth0 | $ sudo ethtool -k eth0 | $ sudo ethtool -k eth0 | grep on
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
generic-segmentation-offload: on
generic-receive-offload: on
rx-vlan-offload: on
tx-vlan-offload: on

禁用 NIC 上 TX/RX 的 TCO(tcp 卸载)后,问题就消失了

$ sudo ethtool -K eth0 tx off rx off

请务必在完成调试网络问题后重新打开优化,因为优化关闭时性能会受到轻微影响。

TLDR 这些“错误”是 Linux 虚拟机上常见的现象,没有什么值得关注的一旦你知道它们是你基线的一部分。另外,请记住,在查看日志或调试网络问题时,您在内核级别看到的内容不一定是在线路级别看到的内容。

答案2

您从用于 MDNS 或多播 DNS 的端口 5353 上的数据包中得到错误的校验和。这可能是因为您的设备有故障,例如路由器、交换机、网卡或其他损坏数据包的设备,或者因为某处存在中间人攻击。

73.2.33.11 地址是 Comcast,82.2.33.1 地址是 Virgin Media。对于您的情况,最好的办法是使用 Tcpdump 或 Wireshark 检查数据包以了解发生了什么情况。您还想查看网络中的其他系统上是否发生同样的情况。这将帮助您弄清楚它是什么。

答案3

这不是tcpdump输出,而是列表wireshark的一部分。dmesg

这些消息直接来自内核,来自Linux 内核源代码中__udp4_lib_rcv()的函数。net/ipv4/udp.c该函数了解硬件卸载功能。

据我所知,如果校验和是在硬件中处理的,则此消息意味着硬件实际上在收到的 UDP 数据包中检测到错误的校验和。

UDP/5353 通常由 MDNS 使用:多播 DNS,一种点对点主机名解析和服务发现协议。它通常只能在单个组织内使用:通常不需要允许 UDP/5353 流量通过组织的边界防火墙,无论是入站还是出站。

如果 IP 地址是真实的,则不良数据包来自不同的 Internet 服务提供商的网络。为此您无能为力:您充其量可以检查流量以查看数据包是否与已知攻击匹配,并根据需要向源 ISP 的滥用报告地址进行报告。

但是,您的服务器显然正在从 Internet 接收 UDP/5353 流量这一事实本身可能就令人担忧:这可能意味着您的防火墙正在泄漏,并且可以从 Internet 不必要地访问 MDNS 服务。如果该服务器应该受到外部硬件防火墙的保护,请仔细检查其配置。

如果该服务器应该iptables仅受其自己的防火墙保护,则应调整防火墙设置以仅接受来自组织自己的网络的 MDNS 流量,或者在不需要时完全禁用 MDNS 服务。

相关内容