연결된 클라이언트를 확인하는 가장 안정적인 방법은 무엇입니까?

연결된 클라이언트를 확인하는 가장 안정적인 방법은 무엇입니까?

Yocto를 사용하여 처음부터 개발한 임베디드 Linux OS가 있습니다. 이는 Windows XP/7 클라이언트와 통신합니다. 내장된 OS는 DHCP 서버를 실행하고 클라이언트에 주소를 제공합니다. 문제는 클라이언트가 "잠겨" 있고 많은 표준 포트와 작업 방법을 차단한다는 것입니다. 내장된 시스템에서 클라이언트가 감지되면 시작 스크립트가 시스템을 테스트하는 서버를 시작합니다. 그렇지 않으면 다른 OS로 kexec합니다.시스템에 상당한 부팅 시간을 추가하지 않고 이더넷을 통해 연결된 클라이언트가 시작 시(Linux에서) 존재하는지 감지하는 가장 좋은 방법은 무엇입니까?

내가 시도한 것과 작동하지 않는 것은 다음과 같습니다.

  1. ICMP 패킷은 클라이언트 측에서 차단되므로 기존 핑이 작동하지 않습니다.
  2. arping은 작동하지만(ARP 스캔을 사용하는 nmap도 마찬가지) Windows 클라이언트는 "스마트"하고 전화 접속을 시도하므로 실제로 연결을 설정하는 데 20-25초가 걸리며 이는 허용되지 않습니다. 이상적으로는 5~10초 안에 무언가를 감지해야 합니다. 속도를 높이기 위해 서버 측에서 설정할 수 있는 것이 있습니까? 항상 이 파티션으로 먼저 부팅되므로 가장 빠른 솔루션이 최상의 솔루션입니다.
  3. ifplugd, ethtool, netplugd 및 /sys/class/net/eth0/operstate 및 /sys/class/net/eth0/carrier 검색은 작동하지 않습니다. 임베디드 시스템의 이더넷 포트가 내부 스위치에 연결되어 있으므로 항상 작동하기 때문입니다. 하드웨어 측면에서 "위로" 및 "연결된"
  4. 향후 솔루션에서는 클라이언트 측에서 Bonjour를 사용하고 서버에서 Avahi를 사용하여 연결 없는 프로토콜을 사용할 가능성이 높지만 이를 구현하는 데 시간이 걸리고 클라이언트 측에 추가하는 소프트웨어가 매우 오래 걸리기 때문에 임시 솔루션이 필요합니다. 승인을 받을 시간입니다.

다시 말하지만, 이 장치는 다른 회사에서 구성하고 잠겨 있기 때문에 클라이언트 측에서는 아무 것도 할 수 없습니다. 그렇다면 클라이언트가 존재하는지 감지하기 위해 서버에서 또 무엇을 시도할 수 있습니까?

답변1

그래서 내부 스위치가 있다고 말씀하셨는데요. 해당 스위치의 관리에 액세스할 수 있습니까? I2C(내장형 스위치) 또는 SNMP 중 하나입니까?

임베디드 OS가 DHCP 서버를 실행한다고 명시했습니다. 클라이언트가 DHCP 요청을 하면 클라이언트가 존재하고 연결 가능하다는 증거가 아닌가요?

"스마트"와 "전화 걸기"가 무슨 뜻인지 모르겠습니다. Windows 시스템이 이더넷을 통해 통신하려면 ARP에 응답해야 합니다. 지금까지는 Arping이 최선의 선택인 것 같습니다.

관련 정보