인터넷 연결을 감지하기위한 임베디드 리눅스 장치를위한 스마트 방법

StackOverflow https://stackoverflow.com/questions/1468038

문제

우리 팀은 Linux 2.6을 기반으로 인터넷 미디어 장치를 개발하고 있습니다. 현재 우리는 www.google.com을 핑하여 인터넷 연결이 확립되는지 (유선 이더넷 I/F를 통해) 여부를 감지합니다.

우리가 테스트 한 일부 네트워크는 ICMP 패킷 전달을 지원하지 않으므로 응용 프로그램 코드는이 경우 인터넷을 실수로보고 할 수없는 것으로보고합니다.

잘 알려진 서비스를 핑하는 데 의지하지 않고 /dev /eth0을 통해 인터넷 연결을 이용할 수 있는지 여부를 추론하기위한보다 세련된 접근 방식을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

Christophed가 언급 한 그 대답을 쓴 사람으로서, 그것은 내가 여기서 사용하는 접근법이 아닙니다. 이 경우 현재 컴퓨터에서 직접 PPP 링크가 있는지 확인하고 있었기 때문에 다른 질문에 대해 효과가있었습니다.이 경우 기본 경로가 있거나 아직 없을 수도있는 Abitrary Network에 연결되어 있습니다. 더 넓은 인터넷 연결과 무관합니다.

당신은 당신의 앱에 대한 글로벌 DNS 연결이 필요하기 때문에, 나는 그것을 확인하겠습니다 - 당신이 알고있는 주소를 찾아보십시오. NS 쿼리를 입력하십시오 com. 도메인. 포기하기 전에 합리적으로 긴 시간을 사용하거나 몇 번 다시 시도하십시오. 이 같은:

dig NS +aaonly com.

출력을 무시하고 종료 값을 테스트합니다 -0은 조회가 루트 서버에 연락 할 수 있음을 나타냅니다.

다른 팁

궁극적으로 장치가 유용한 기능을 위해 인터넷을 사용할 수 있기를 원합니다. 장치가 일반적으로 연결되는 잘 정의 된 서버가 있으면 쿼리를 보내는 것이 유용합니다.

"아무것도 없음"과 "유용한 기능"사이에는 많은 단계가 있으며, "연결성"의 일부 측정 값으로 그 중 하나를 확인할 수 있습니다.

  • 이더넷 케이블이 연결된 이더넷 케이블 (또는 PPP 링크 또는 Wi-Fi, 낮은 계층이 무엇이든)
  • DHCP 서버 지정된 주소 (해당되는 경우)
  • 기본 게이트웨이가 작동합니다
  • DNS 서버가 응답 중입니다
  • 대상 서버가 응답 중입니다 (ICMP 핑은 아니지만 작은 HTTP 쿼리 또는 사용중인 다른 프로토콜).

고객이 얼마나 정통한 지, 또는 기술 지원에보고 할 수있는 유용한 오류/진단을 원한다면 모든 것을 탐지하는 것이 유용 할 수 있습니다.

진단 도구로 추적자를 수행 할 수 있다는 것도 유용 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top