RasPi에서 Debian Linux를 실행하고 있습니다. 네트워크에서 다른 시스템을 사용할 수 있을 때(내 Wi-Fi AP에 로그인된 경우에도) 스크립트를 실행할 수 있는 방법을 찾고 있습니다. AP는 AVM Fritzbox이므로 내가 달성하려는 목표를 달성하지 못합니다.
그래서 저는 네트워크에서 사용 가능한 RasPi 중 하나를 사용하여 이 작업을 수행하고 싶습니다. 항상 켜져 있으며 연중무휴로 네트워크를 모니터링합니다. 특정 호스트가 네트워크에 로그인하면 이벤트를 알려주는 스크립트를 실행하고 싶습니다.
답변1
dhcpdump
네트워크 인터페이스를 수신하고 dhcp 트래픽을 덤프하는 유틸리티가 있으며 하드웨어 주소(MAC)로 필터링할 수도 있습니다.
이를 grep과 함께 사용하여 작업을 실행할 수 있습니다.
내 노트북에서는 이더넷을 통해 IP 주소에 대한 내 휴대폰의 (Wi-Fi를 통한) 요청을 모니터링하는 데 사용합니다.
dhcpdump -i eth0 -h cc:05:1b:1d:8f:6d |tee dhcp3.log
cat dhcp3.log
TIME: 2015-10-17 14:21:25.079
IP: 0.0.0.0 (cc:5:1b:1d:8f:6d) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 00000000
SECS: 65535
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: cc:05:1b:1d:8f:6d:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 3 (DHCPREQUEST)
OPTION: 50 ( 4) Request IP address 192.168.1.75
OPTION: 54 ( 4) Server identifier 192.168.1.254
OPTION: 57 ( 2) Maximum DHCP message size 1500
OPTION: 60 ( 13) Vendor class identifier dhcpcd 4.0.15
OPTION: 55 ( 9) Parameter Request List 1 (Subnet mask)
121 (Classless Static Route)
33 (Static route)
3 (Routers)
6 (DNS server)
28 (Broadcast address)
51 (IP address leasetime)
58 (T1)
59 (T2)
---------------------------------------------------------------------------
답변2
아래와 같이 tcpdump를 실행하는 간단한 셸 스크립트를 사용하여 필요한 작업을 수행할 수 있습니다.
tcpdump -c 1 -nn '((port 67 or port 68) and ether host xx:xx:xx:xx:xx:xx)'
위의 tcpdump 실행은 xx:xx:xx:xx:xx:xx와 일치하는 MAC 주소를 가진 클라이언트로부터 BOOTP/DHCP 요청을 캡처할 때까지 기다린 후 종료됩니다. 이제 관심 있는 클라이언트가 네트워크에 연결되어 DHCP를 요청했다는 사실을 알고 필요한 작업을 수행할 수 있습니다.