Linux의 이상한 임시 네트워크 중단

Linux의 이상한 임시 네트워크 중단

일주일 후에 발견했지만 답을 찾을 수 없는 매우 짜증나는 문제에 직면했습니다. 네트워크가 갑자기 응답을 멈추고 대개 정확히 25초 후에 다시 돌아옵니다. 저는 커널 3.10.4를 사용하고 있었고 이제 3.11-rc4로 마이그레이션하여 변경 사항이 있는지 확인했지만 아니요, 동작은 동일합니다. 일반적인 웹 서핑은 "폭발"하고 인터럽트가 완전히 무작위이기 때문에 문제를 발견하기 어렵기 때문에 이전 커널에서도 이 문제가 어떻게 존재하는지 실제로 알 수 없습니다(저는 항상 사용자 정의 커널을 사용하지만 Unpatched 커널은 kernel.org, 모두 직접 컴파일함)

또한 커널이 범인이라고 말할 수는 없지만 시스템 로그에 단서가 없고(둘 다 확인했는데 /var/log/syslog특이한 /var/log/messages점은 없습니다) 하드웨어에 문제가 있는 것 같지는 않습니다. 내 네트워크 카드 중 하나를 사용하고 있음을 나타냅니다.

lspci output:

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

이더넷 스위치 포트를 교체해 보았지만 저 외에는 제 직장에 여전히 문제가 있는 사람이 없습니다. (비록 비슷한 기기를 사용하고 있지만 Linux를 사용하는 사람은 저뿐이므로 나쁜 평판을 어느 정도 받아들여야 합니다. 농담이니까요. 뭐...헤헤).

나는 내 컴퓨터에서 Wireshark를 실행했고 그것이 우리 게이트웨이와 동일한 네트워크 세그먼트에 있는 다른 컴퓨터를 지속적으로 핑하도록 했습니다. 그런 다음 네트워크 문제의 첫 번째 징후가 나타나면 이를 확인하고 게이트웨이가 핑에 응답하지 않지만 다른 컴퓨터는 여전히 정상적으로 응답하는지 확인합니다. 때로는 다른 컴퓨터가 응답을 중지하고 게이트웨이는 정상일 때도 있고, 때로는 둘 다 응답을 중지하는 경우도 있습니다. 다른 무엇을 해야 할지 모르겠으므로 시스템 로그가 완전히 정상이므로 이를 추가로 디버깅하는 방법에 대한 도움이나 팁이 필요합니다.

내 커널 구성 파일과 상황을 보여주는 Wireshark의 캡처 파일이 있습니다. 여기나 일부 Pastebin 사이트에 게시할 수 있습니다. 누군가가 이 사례를 이해하는 것이 유용하다고 생각하는 경우 어떤 수준의 세부 정보를 사용해야 하는지 알려주시기 바랍니다(원시 데이터가 없는 패킷 수준이면 충분할 것 같습니다).

답변1

이러한 증상은 IP 주소 충돌과 일치합니다. 귀하의 컴퓨터와 동일한 네트워크에 있는 다른 컴퓨터가 동일한 IP 주소를 사용하려고 하면 IP 주소 충돌이 발생합니다.IP 주소.

링크-로컬 네트워크에서 주소 지정은 다음을 기반으로 합니다.MAC 주소. 각 이더넷 카드에는 고유한 MAC 주소가 있습니다(심각하게 잘못 구성되었거나 악의적이지 않은 경우). 라우터는 데이터를 어디로 보낼지 결정합니다.지적 재산권패킷은 다음과 함께 전송됩니다.ARP모든 포트에서 대상 IP 주소를 요청합니다. 이 메시지는 "소유자"라고도 합니다. 라우터는 어느 피어가 IP 주소를 담당하는지 알아내려고 합니다. 라우터가 MAC 주소가 포함된 응답을 받으면 IP 패킷(이더넷 패킷)이 포함된 이더넷 프레임을 구성하여 해당 MAC 주소로 보낼 수 있습니다. 이 교환에는 시간이 걸리기 때문에 라우터는 최신 ARP 정보의 캐시를 유지합니다. (ARP 메시지에는 다른 유형도 있지만 여기서 설명한 것만으로도 당면한 문제를 이해하기에 충분합니다.)

즉, 라우터는 IP 패킷을 보내는 각 IP 주소를 소유한 물리적 장치를 알아야 합니다. 그렇다면 두 장치가 동일한 IP 주소를 요구하면 어떻게 될까요? 라우터는 장치 중 하나로부터 응답을 받은 후 해당 캐시 항목이 만료될 때까지 IP 주소가 해당 장치에 속하는 것으로 결정합니다. 캐시 항목이 만료된 후 라우터는 새 ARP 요청을 보내며 이번에는 다른 장치가 더 빠르게 응답할 수도 있습니다. 이는 상황이 불안정한 이유를 설명합니다. 라우터가 1분 동안 사용자에게 말하고 다음에는 다른 사람과 이야기합니다.

누군가에게 지속적으로 핑을 보내면 라우터는 거의 항상 IP 주소를 ARP 캐시에 유지합니다. 따라서 ping을 수행할 때 다른 사람이 캐시에서 귀하를 대체할 수 있는 작은 시간이 있습니다(캐시 항목이 만료된 후 다음 ping이 도착하기 전). 그렇기 때문에 문제를 관찰하면 문제가 대부분 사라지게 되며 문제가 무엇인지 깨닫기 전까지는 실망스러울 수 있습니다.

귀하의 경우 로컬 라우터가 항목을 캐시에 25초 동안 보관하고 있는 것으로 보입니다. 캐시에 있는 동안 25초 동안 사용할 수 있습니다. 그러다가 때로는 무작위로 보이는 순간에 또 다른 사람이 나타나서 25초의 시간을 잃게 됩니다.

동일한 로컬 링크에서 여러 컴퓨터에 연결하려고 하면 각 컴퓨터에는 자체 ARP 테이블이 있으므로 한 컴퓨터에서 IP 주소를 소유하고 다른 컴퓨터에서 다른 컴퓨터가 IP 주소를 소유하고 있다고 판단하는 일관되지 않은 결과가 나타날 수 있습니다.

고급형 라우터는 IP 주소 충돌을 기록하므로 충돌이 있다고 생각되면 시스템 관리자에게 도움을 요청하세요. 먼저, 사용하지 말아야 할 IP 주소를 사용하려는 컴퓨터가 아닌지 확인하세요!

답변2

에 2개의 "네임서버" 항목이 있는 것이 좋습니다 /etc/resolv.conf. 첫 번째 항목은 다운되었거나 액세스할 수 없거나 주기적으로 실패하는 DNS 서버를 나타냅니다. libc의 해석기 코드는 첫 번째 이름 서버 IP 주소를 시도하고, 시간 초과 후 두 번째 이름 서버 IP 주소를 시도합니다.

/etc/resolv.conf이를 테스트하려면 네임서버 IP 주소를 Google의 공개 DNS 서버인 8.8.8.8 로 바꾸면 됩니다 . 중단이 발생하지 않으면 네임서버에 문제가 있는 것입니다.

관련 정보