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
시스템 로그를 사용하거나 볼 때 OS/VM 수준에서 올바른 체크섬을 확인할 수 없습니다.
바라보다분할 및 체크섬 오프로드: ethtool을 사용하여 끄기
불행하게도 Wireshark에서 보는 내용은 우리가 기대하는 것과 다를 때가 있습니다. 이것이 발생할 수 있는 한 가지 방법은 운영 체제가 TCP/IP 작업을 네트워크 인터페이스 카드(NIC)로 오프로드하는 경우입니다. 오프로드를 위한 일반적인 작업은 분할 및 체크섬 계산입니다. 즉, 운영 체제가 CPU를 사용하여 TCP 패킷을 조각화하는 대신 NIC가 자체 프로세서를 사용하여 조각화를 수행할 수 있습니다. 이렇게 하면 CPU 리소스가 절약되고 NIC에 대한 버스 통신이 크게 줄어듭니다.
당신은 또한 볼 수 있습니다Linux 네트워킹: 오프로드 기능, RX/TX 체크섬, 분산, 수집 등을 비활성화/활성화하는 방법
tcpdump 출력의 UDP/TCP 체크섬 오류
오프로딩이 활성화되어 있고 패킷 오류 없이 tcpdump 출력에 잘못된 cksum이 표시되고 네트워크가 제대로 작동하는 경우 체크섬이 실제로 네트워크 어댑터에서 계산되고 tcpdump가 계산된 값을 표시하므로 걱정할 필요가 없습니다. 커널 수준의 체크섬.
~에서tcpdump 및 NIC 하드웨어 오프로드로 인한 UDP/TCP 체크섬 오류
활성 NIC 하드웨어 오프로드 옵션을 확인한 후 명확한 결과를 볼 수 있습니다.
$ sudo ethtool -k eth0 | $ sudo ethtool -k eth0 | grep on
rx-checksumming
: on
분산
-수집: on
generic-receive-offload :
rx-vlan-offload에서:
tx-vlan-offload에서: 켜짐NIC에서 TX/RX에 대한 TCO(tcp 오프로드)를 비활성화한 후 문제가 사라졌습니다.
$ sudo ethtool -K eth0 tx 끄기 rx 끄기
최적화가 꺼지면 성능이 약간 영향을 받으므로 네트워크 문제 디버깅을 마친 후에는 최적화를 다시 켜십시오.
TLDR 이러한 "버그"는 Linux 가상 머신에서 흔히 발생하므로 걱정할 필요가 없습니다.일단 알고 나면 그것들은 기준선의 일부입니다.또한 로그를 보거나 네트워크 문제를 디버깅할 때 커널 수준에서 보는 것이 반드시 라인 수준에서 보는 것은 아니라는 점을 명심하십시오.
답변2
MDNS 또는 멀티캐스트 DNS에 대한 포트 5353의 패킷에서 잘못된 체크섬을 받았습니다. 이는 라우터, 스위치, 네트워크 카드 또는 패킷을 손상시키는 기타 장치와 같은 결함이 있는 장치가 있거나 어딘가에 중간자 공격이 있기 때문일 수 있습니다.
주소 73.2.33.11은 Comcast이고 주소 82.2.33.1은 Virgin Media입니다. 귀하의 경우 가장 좋은 방법은 Tcpdump 또는 Wireshark를 사용하여 패킷을 검사하여 무슨 일이 일어나고 있는지 확인하는 것입니다. 또한 네트워크의 다른 시스템에서도 동일한 일이 발생하는지 확인하려고 합니다. 이것은 그것이 무엇인지 알아내는 데 도움이 될 것입니다.
답변3
이는 tcpdump
출력 되지 않지만 wireshark
목록의 일부입니다.dmesg
이러한 메시지는 커널, __udp4_lib_rcv()
Linux 커널 소스 코드의 함수에서 직접 제공됩니다. net/ipv4/udp.c
이 기능은 하드웨어 오프로드 기능을 이해합니다.
내가 아는 한, 체크섬이 하드웨어에서 처리되는 경우 이 메시지는 하드웨어가 실제로 수신된 UDP 패킷에서 잘못된 체크섬을 감지했음을 의미합니다.
UDP/5353은 MDNS(지점 간 호스트 이름 확인 및 서비스 검색 프로토콜인 멀티캐스트 DNS)에서 일반적으로 사용됩니다. 일반적으로 단일 조직 내에서만 사용됩니다. 일반적으로 인바운드든 아웃바운드든 조직의 경계 방화벽을 통해 UDP/5353 트래픽을 허용할 필요가 없습니다.
IP 주소가 실제라면, 잘못된 패킷은 다른 인터넷 서비스 제공업체의 네트워크에서 오는 것입니다. 이에 대해 할 수 있는 일은 많지 않습니다. 기껏해야 트래픽을 검사하여 패킷이 알려진 공격과 일치하는지 확인하고 필요한 경우 소스 ISP의 남용 보고 주소에 이를 보고할 수 있습니다.
그러나 귀하의 서버가 분명히 인터넷으로부터 UDP/5353 트래픽을 수신하고 있다는 사실 자체가 우려스러울 수 있습니다. 이는 방화벽이 누출되고 인터넷에서 MDNS 서비스에 불필요하게 액세스할 수 있음을 의미할 수 있습니다. 서버가 외부 하드웨어 방화벽으로 보호되어야 하는 경우 구성을 다시 확인하세요.
서버가 iptables
자체 방화벽으로만 보호되어야 하는 경우 조직 자체 네트워크의 MDNS 트래픽만 허용하도록 방화벽 설정을 조정해야 하며, 필요하지 않은 경우 MDNS 서비스를 완전히 비활성화해야 합니다.