Linux에서 arping 명령을 사용하는 방법
게시 됨: 2022-07-28
Linux arping
명령은 ping
과 유사하지만 로컬 네트워크에만 해당됩니다. 그것의 장점은 낮은 네트워킹 수준에서 작동하며 때때로 ping
이 불가능한 경우 응답을 받는다는 것입니다. 사용 방법은 다음과 같습니다.
ARP 프로토콜
IP 주소는 네트워크 장치에 대한 숫자 레이블입니다. 적절한 네트워크 트래픽이 올바른 장치에 도달하도록 주소로 사용됩니다. 그러나 근거리 통신망에 있는 대부분의 장치에는 동적 IP 주소가 있습니다. 즉, 다음에 부팅할 때 IP 주소가 변경될 수 있습니다.
네트워크 트래픽을 적절한 장치로 올바르게 라우팅하려면 IP 주소를 MAC(Media Access Control) 주소에 매핑하는 체계를 사용해야 합니다. MAC 주소는 장치 제조 시점에 설정된 고유한 ID입니다. IP 주소는 논리 주소입니다. MAC 주소는 물리적 주소입니다.
주소 확인 프로토콜은 IP 주소를 MAC 주소에 매핑하는 중개자입니다. 네트워크에서 네트워크 패킷을 마샬링하고 전달하는 장치(일반적으로 라우터)는 IP 주소를 MAC 주소에 연결하는 ARP 테이블을 만들고 유지 관리합니다.
라우터가 알지 못하는 장치로 데이터를 라우팅해야 하는 경우 새 장치의 MAC 주소를 얻기 위해 ARP 요청을 합니다.
새 장치가 네트워크에 연결되면 IP 주소가 할당되지만 실제로 트래픽을 라우팅하기에 충분하지 않습니다. 라우터는 퍼즐의 누락된 부분인 MAC 주소를 얻어야 합니다. 그러나 IP 주소 자체는 패킷을 장치로 라우팅하기에 충분한 정보가 아니기 때문에 Catch-22는 IP 주소를 사용하여 MAC 주소를 얻기 위해 하드웨어를 쿼리할 수 없다는 것입니다.
개방형 시스템 상호 연결 모델은 작업 네트워크를 구성하는 기술을 일련의 계층으로 그룹화합니다. 상위 계층은 하위 계층 없이 작동할 수 없습니다. OSI 모델에는 7개의 계층이 있습니다.
- 계층 7은 최상위 계층인 응용 프로그램 계층입니다. 그것은 컴퓨터 사용자에게 정보를 제공하고 그들로부터 정보를 다시 받습니다.
- 레이어 6은 프레젠테이션 레이어입니다. 이렇게 하면 데이터가 네트워크 형식으로 이동하거나 네트워크 형식에서 이동할 때 올바른 형식 또는 상태인지 확인합니다. 암호화 및 암호 해독은 이 계층에서 발생합니다.
- 계층 5는 세션 계층입니다. 세션은 둘 이상의 장치 간의 네트워크 연결입니다. 이 계층은 연결 시작, 핸드셰이킹, 시간 초과 및 더 이상 필요하지 않은 연결 끊기와 같은 문제와 관련됩니다.
- 레이어 4는 전송 레이어입니다. 이것은 조정된 방식으로 네트워크에서 데이터를 이동하는 계층입니다. 이 계층은 전송 속도 및 데이터 볼륨과 관련된 것입니다. TCP/IP의 TCP인 전송 제어 프로토콜은 이 계층에서 작동합니다.
- 계층 3은 네트워크 계층입니다. 여기에서 라우팅 및 패킷 전달이 수행됩니다. 인터넷 프로토콜(TCP/IP의 IP)이 작동하는 계층입니다.
- 레이어 2는 데이터 링크 레이어입니다. 모든 장치에 대한 브로드캐스트 또는 특정 MAC 주소에 대한 유니캐스트를 사용하여 직접 주소 지정 가능한 장치 간에 패킷을 보내는 데 사용됩니다.
- 레이어 1은 물리적 레이어입니다. 이것은 케이블링, 라우터 및 네트워크 스위치를 포함한 물리적 인프라와 관련이 있습니다. Wi-Fi에서 사용되는 전파도 이 범주에 속합니다.
라우터가 테이블에 없는 IP 주소에 대한 패킷을 받으면 전체 네트워크에 브로드캐스트 패킷을 보냅니다. 그것은 효과적으로 "누가 이 IP 주소를 가지고 있습니까?"라고 묻습니다. 이것은 레이어 2 메시지이므로 IP 라우팅에 의존하지 않습니다.
주소가 일치하는 장치는 MAC 주소를 다시 전송하여 응답합니다. 해당 장치의 IP 주소와 MAC 주소를 매핑 테이블에 추가할 수 있습니다. 이제 IP 주소와 MAC 주소 간의 관계가 설정되고 기록되었기 때문에 일반 IP 트래픽을 장치로 라우팅할 수 있습니다.
관련: 인터넷의 기초: TCP/IP 40주년
아르핑 명령
모든 영리한 ARP 작업은 백그라운드에서 자동으로 진행되어 ARP 테이블을 만들고 유지 관리합니다. arping
명령은 ARP 쿼리의 일부 기능을 터미널 창으로 가져옵니다. OSI 레이어 2에서 작동하며 ping
이 수행되지 않을 때 장치에서 응답을 요청할 수 있습니다.
Fedora 36에는 arping
이 이미 설치되어 있었지만 Manjaro 21 및 Ubuntu 22.04에 설치해야 했습니다.
Ubuntu에서 명령은 다음과 같습니다.
sudo apt 설치 아르핑
Manjaro에서는 다음을 입력해야 합니다.
sudo pacman - 싸이아핑
arping
을 사용하는 가장 간단한 방법은 IP 주소를 사용하는 것입니다. 이것은 로컬 네트워크에 연결된 직접 주소 지정이 가능한 장치의 주소여야 합니다. arping
은 레이어 2에서 작동하기 때문에 라우팅이 불가능합니다. arping
과 함께 sudo
를 사용해야 합니다.
sudo 아르핑 192.168.1.17
Ctrl+C를 눌러 중지합니다. 반환되는 정보는 응답 장치의 MAC 주소, arping
요청의 인덱스 번호 및 arping
요청이 완료될 왕복 시간입니다.
출력을 아래 ping
명령의 출력과 비교하십시오. ping
명령은 네트워크 패킷 왕복 타이밍에 대한 추가 정보를 반환합니다. arping
명령은 더 적은 타이밍 통계를 제공하지만 여기에는 장치의 MAC 주소가 포함됩니다.
핑 192.168.1.17
arping
과 함께 장치의 네트워크 이름을 사용할 수도 있습니다.
sudo arping fedora-36.local
-c
(count) 옵션을 사용하여 설정한 수의 요청 후에 arping
이 중지하도록 지시할 수 있습니다. 이 명령은 arping
에게 두 번 시도한 다음 중지하도록 지시합니다.
sudo 아르핑 -c 2 192.168.1.18

컴퓨터에 여러 네트워크 인터페이스가 있는 경우 -I
(인터페이스) 옵션을 사용하여 사용할 인터페이스를 arping
에 알릴 수 있습니다.
ip link
명령을 사용하여 네트워크 인터페이스를 나열할 수 있습니다.
아이피 링크
이 컴퓨터에는 세 가지 인터페이스가 있습니다. lo
가상 인터페이스는 동일한 컴퓨터에 있는 소프트웨어 간의 내부 연결을 위한 루프백으로 사용됩니다. 여기에서는 우리에게 쓸모가 없습니다. 이더넷 연결 enp3s0
또는 무선 인터페이스 wlan0
을 사용할 수 있습니다.
이 명령은 arping
이 자체적으로 선택하지 않고 우리가 선택한 인터페이스를 사용하도록 지시합니다.
sudo arping -c 2 -I enp3s0 manjaro-21.local
스크립트에서 arping 사용
스크립트의 루프에서 arping
을 래핑하여 IP 주소 범위에서 작동하도록 할 수 있습니다. 이 스크립트에서 텍스트를 복사하여 "scan-range.sh"라는 파일에 저장합니다.
스크립트를 편집하고 192.168.1의 모든 항목을 네트워크의 IP 주소로 바꿔야 합니다.
#!/bin/bash for (( device = $1 ; device <= $2 ; device ++ )) do arping -c 1 192.168.1. $device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ] ; then echo "192.168.1. $device responded." else echo "192.168.1. $device didn't respond." fi done
스크립트는 두 개의 명령줄 매개변수를 허용합니다. 이들은 arping
을 사용하려는 범위의 IP 주소 중 마지막 옥텟으로 사용됩니다. 따라서 스크립트에 20과 30을 전달하면 루프가 192.168.1에서 시작됩니다. 20 이며 IP 주소 192.168.1을 사용한 후 종료됩니다. 30 .
매개변수는 스크립트 내에서 $1
및 $2
로 액세스됩니다. 이들은 C 스타일 for
루프에서 사용됩니다. for
루프의 각 회전에서 $device
는 범위의 다음 IP 주소로 설정됩니다.
스크립트는 우리가 이미 본 것과 동일한 arping -c
형식을 사용하지만 이번에는 범위 내의 각 장치에 단일 ARP 요청만 보내도록 요청합니다.
arping
명령의 출력은 grep
을 통해 전달됩니다.
grep
구문은 스크립트에서 단순화할 수 있습니다. grep
은 "1 응답" 또는 "1 패킷 수신"이라는 두 문자열 중 하나를 찾고 있습니다. 이는 테스트 컴퓨터에 서로 다른 버전의 arping
이 있고 다른 용어를 사용하기 때문입니다. grep
이 이러한 구 중 하나를 찾으면 종료 값은 0이 됩니다.
사용 중인 arping
버전에서 사용하는 구문을 알고 있으면 다른 구문을 제거하여 grep
구문을 단순화할 수 있습니다.
if
문은 $?
—종료된 마지막 프로세스의 종료 코드를 보유하는 변수—이 값이 0인지 확인합니다. 그렇다면 echo
를 사용하여 터미널 창에 성공 메시지를 인쇄합니다. 테스트가 실패하면 grep
이 두 문자열 중 하나를 찾지 못했으며 이는 ARP 요청이 실패했음을 의미합니다.
chmod
명령과 +x
옵션을 사용하여 스크립트를 실행 가능하게 만드십시오.
chmod +x 스캔 범위.sh
우리는 그것을 실행하고 15에서 20까지의 IP 범위를 스캔할 것입니다. 이러한 주소 중 일부에는 장치가 연결되어 있지 않으므로 일부 오류가 표시되어야 합니다. sudo
를 사용하는 것을 잊지 마십시오. 또한 192.168.1.15에서 장치에 대해 ping
을 시도합니다.
sudo ./scan-range.sh 15 20
핑 192.168.1.15
모든 네트워크에서와 마찬가지로 성공과 실패가 혼합되어 있습니다. 그러나 192.168.1.15에 있는 장치가 계층 2 ARP 요청에 응답하지만 계층 3 ping
요청에는 응답하지 않습니다.
장치를 ping하고 오류를 확인했다면 장치가 연결되어 있는지, 온라인 상태인지, 장치 192.168.1.15에서 ping
할 수 있는지 여부를 확인하고 싶을 것입니다.
그러나 arping
을 사용하면 연결되어 있고 온라인이며 네트워크에 액세스할 수 있는지 확인할 수 있습니다. 이는 라우팅 및 ARP 테이블 문제를 조사하기 시작하는 문제 해결을 안내합니다.
더 깊은 통찰력
네트워킹 양파에는 많은 계층이 있습니다. ping
이 아무데도 표시되지 않으면 레이어를 드롭다운하고 arping
이 알려줄 수 있는 내용을 확인합니다.
관련: Nmtui로 Linux Wi-Fi 네트워크를 관리하는 방법