인터넷 연결이 살아 있는지 확인하는 가장 좋은 방법은 무엇입니까?

인터넷 연결이 살아 있는지 확인하는 가장 좋은 방법은 무엇입니까?

저는 학생이고 다음 기기로 인터넷에 연결합니다.표어. 실제로 실행 시 자동으로 연결하기 위해 셀레늄과 phantomjs가 포함된 라즈베리 파이에 Python 스크립트가 있습니다.

네트워크 폭주 없이 인터넷 연결을 확인하고 싶습니다.

Icinga 모니터링, netstat 연결 설정, ping, nmap ... 가장 좋은 방법은 무엇입니까?

답변1

연결이 끊어졌거나 살아있어야 하며 그 차이를 확실하게 구분할 수 있다고 가정하는 것은 잘못된 것입니다. 이러한 종류의 가정은 예상했던 살아 있는 속성을 실제로 확인하지 않는 휴리스틱에 의존하게 될 수 있기 때문에 시스템을 신뢰할 수 없게 만듭니다.

더 나은 접근 방식은 연결해야 하는 작업이 실제로 작동하는지 여부를 모니터링하는 것입니다. 예를 들어 특정 서버에 연결하기 위해 특정 클라이언트가 필요한 경우 이를 모니터링해야 합니다. 두 사람이 계속 통신하는 한 다른 휴리스틱이 연결이 끊어진 것으로 간주하는지 여부는 신경 쓰지 않습니다.

모니터링에서 문제가 발견되면 모니터링에서 이에 대해 경고하도록 할 수 있습니다. 모니터링을 통해 연결이 끊어진 것을 감지하고 경고할 뿐만 아니라 문제를 해결하기를 원할 수도 있습니다. 그러나 이것은 더 많은 질문으로 이어집니다.

예를 들어, 정전이 발생할 경우 네트워크 구성 요소의 전원을 껐다 켤 수 있는 하드웨어가 있다고 가정합니다. 그러면 클라이언트와 서버가 서로 통신할 수 없다는 이유로 전원을 껐다가 다시 켜고 싶지 않을 수도 있습니다. 연결의 반대쪽 끝이 끊어져서 전원을 껐다가 다시 켤 필요가 없을 수도 있습니다. 전원을 껐다 켜면 자체적으로 중단이 발생하거나 수동 개입이 방해가 될 수도 있습니다.

이러한 문제를 해결하는 방법이 있습니다. 예를 들어 서버 연결이 끊어진 것으로 나타나면 서버에 대한 DNS 조회를 보낼 수 있습니다. 답장을 받았다면 연결이 완전히 끊어졌기 때문이 아닙니다. 하지만 DNS 서버까지 요청을 보낼 필요조차 없습니다. 낮은 홉 제한으로 DNS 조회를 보낼 수 있습니다. 예를 들어 홉 제한이 3인 DNS 조회를 보내고 세 번째 홉에서 ICMP를 다시 받은 경우 첫 번째 홉의 전원을 껐다가 켜도 문제가 해결될 가능성은 거의 없습니다.

물론 이것은 만능은 아닙니다. 최고의 경험적 방법이라도 때로는 잘못될 수 있습니다. 끊어진 연결을 자동으로 다시 시작하려는 무언가를 구축하려는 경우 반복적으로 다시 시작되는 것을 방지하기 위한 지수 백오프 전략이 있는지 확인해야 합니다.

패킷을 교환하지 않으면 연결 모니터링을 수행할 수 없습니다. 그러나 이러한 패킷 처리 비용을 제한하고 싶습니다. 예를 들어 몇 개의 홉으로 패킷을 보내고 특정 라우터에서 오류 메시지를 다시 받을 수 있지만 이는 대부분의 라우터에서 가장 저렴한 작업이 아닙니다. 라우터의 하드웨어 전달 부분 외에는 아무 것도 사용하지 않고 패킷을 보내고 받을 수 있는 방법을 찾을 수 있다면 더 많은 홉이 필요하더라도 더 저렴합니다.

사이트가 더 많은 경우 주기적으로 쌍으로 통신하도록 하여 연결 모니터링의 신뢰성을 높일 수 있습니다. 한 사이트가 동시에 다른 모든 사이트와의 연결이 끊어지면 이 사이트에 연결 문제가 있을 가능성이 높습니다.

답변2

인터넷 접속이 가능한지 알고 싶다면 8.8.8.8 및 8.8.4.4의 서버를 통해 www.google.com을 DNS 조회하는 것이 가장 안정적인 방법입니다.

답변을 얻을 수 없다면 인터넷 연결에 문제가 있는 것이 확실합니다. "뭔가 잘못되었습니다"라고 해서 전혀 액세스할 수 없다는 의미는 아닙니다.

인터넷 연결이 완벽하다는 것을 증명할 수는 없습니다.

관련 정보