우분투 arpd 완벽 가이드: ARP 데몬으로 네트워크 캐시 최적화하기

개요

대규모 네트워크 환경에서 ARP 테이블 오버헤드를 줄이고 효율적인 주소 변환 캐시를 관리하기 위해 arpd 데몬을 활용할 수 있습니다. 이 글에서는 Ubuntu 환경에서 arpd의 개념과 동작 방식을 이해하고, 실제 터미널 실습을 통해 캐시 데몬 설정 및 상태 모니터링 방법을 단계별로 학습합니다.

arpd 도구 설치 및 실행 환경 준비

arpd 데몬 실행과 네트워크 상태 확인 및 프로세스 관리에 필요한 도구를 준비하기 위해 apt-get update -qq && apt-get install -y iproute2 net-tools psmisc 명령어를 실행합니다.

apt-get update -qq && apt-get install -y iproute2 net-tools psmisc

설치된 arpd 바이너리가 시스템 실행 경로에 정상적으로 존재하는지 확인하기 위해 which arpd 명령어를 실행합니다.
출력된 /usr/sbin/arpd 경로를 통해 명령어 실행 준비가 완료되었음을 확인할 수 있습니다.

which arpd

arpd 명령어는 사용자 공간에서 ARP 요청을 수신 및 응답하고 내부 캐시 데이터베이스를 관리하는 데몬입니다.
도움말을 확인하여 데몬 실행 시 사용할 수 있는 기본 문법과 지원 옵션을 점검합니다.
⚙️ [주요 옵션]

-l : 수신한 ARP 쿼리와 활동 내역을 표준 출력에 기록합니다.
-k : 현재 실행 중인 커널 arpd 데몬 프로세스를 종료합니다.
-b <dbase> : ARP 캐시 항목을 저장할 데이터베이스 파일 경로를 지정합니다.
(기본값: /var/lib/arpd/arpd.db) -B <number> : 단일 트랜잭션으로 브로드캐스트할 수 있는 ARP 브로드캐스트 쿼리 버퍼 크기를 지정합니다.
-a <N> : 부정적인 응답(응답 없음)을 확인하기 전 재전송할 프로브 횟수를 설정합니다.
-n <time> : 캐시된 주소 항목의 유효 시간(유휴 타임아웃)을 초 단위로 지정합니다.
-R <rate> : 초당 전송할 ARP 요청의 최대 전송 속도를 제한합니다.

arpd -h 2>&1 | head -n 15

현재 네트워크 인터페이스 및 커널 ARP 테이블 확인

arpd를 바인딩할 네트워크 인터페이스 목록과 활성화 상태를 확인하기 위해 ip link show 명령어를 실행합니다.
출력 결과를 통해 루프백 인터페이스 lo와 함께 현재 활성화되어 UP 상태인 eth0 인터페이스를 확인할 수 있습니다.

ip link show

리눅스 커널의 이웃(Neighbor) 캐시 테이블을 점검하여 현재 학습된 IP 및 MAC 주소 매핑을 확인하기 위해 ip neigh show 명령어를 실행합니다.
결과에서 게이트웨이 주소 172.18.0.1이 eth0 인터페이스를 통해 정상적으로 REACHABLE 상태로 연결되어 있음을 알 수 있습니다.

ip neigh show

전통적인 네트워크 관리 도구를 사용해 커널의 ARP 캐시 목록을 숫자 형태의 IP 주소로 확인하기 위해 arp -n 명령어를 실행합니다.
출력 결과의 Flags 항목에 완전한(Complete) 캐시 항목을 의미하는 C 플래그가 표시되어 네트워크 주소 변환 정보가 정상 등록되어 있음을 확인할 수 있습니다.

arp -n

arpd 데몬 실행 및 백그라운드 캐시 수집 설정

arpd 데몬이 캐시 항목을 파일로 영구 저장할 기본 디렉터리를 생성하기 위해 mkdir -p /var/lib/arpd 명령어를 실행합니다.

mkdir -p /var/lib/arpd

새로운 데몬을 시작하기 전 시스템에 기존에 실행 중이던 이전 프로세스를 정리하고 충돌을 방지하기 위해 killall arpd 2>/dev/null || true 명령어를 실행합니다.

killall arpd 2>/dev/null || true

활성 네트워크 인터페이스를 자동으로 탐색하여 IFACE 변수에 할당한 뒤, 지정된 데이터베이스 경로와 미응답 재시도 횟수 옵션을 적용해 데몬을 구동하도록 IFACE=$(ip -o link show | awk -F': ' '{print $2}' | grep -v 'lo' | head -n1); arpd -b /var/lib/arpd/arpd.db -a 3 $IFACE 명령어를 실행합니다.

IFACE=$(ip -o link show | awk -F’: ’ ‘{print $2}’ | grep -v ’lo’ | head -n1); arpd -b /var/lib/arpd/arpd.db -a 3 $IFACE

arpd 데몬이 백그라운드 프로세스로 정상 구동되어 동작하고 있는지 확인하기 위해 ps aux | grep [a]rpd 명령어를 실행합니다.
출력 결과를 통해 데몬이 지정한 옵션과 인터페이스를 기반으로 문제없이 상주하고 있음을 확인할 수 있습니다.

ps aux | grep [a]rpd

ARP 캐시 갱신 테스트 및 arpd 프로세스 종료

외부 네트워크와의 통신을 발생시켜 게이트웨이 및 인접 호스트와의 ARP 패킷 교환을 유도하기 위해 ping -c 2 8.8.8.8 > /dev/null 2>&1 || true 명령어를 실행합니다.

ping -c 2 8.8.8.8 > /dev/null 2>&1 || true

arpd 데몬이 파일 데이터베이스에 기록하고 수집한 ARP 주소 변환 캐시 내역을 확인하기 위해 arpd -l -b /var/lib/arpd/arpd.db 2>&1 | head -n 10 || true 명령어를 실행합니다.
출력 헤더를 통해 인터페이스 인덱스, IP 주소, MAC 주소 매핑 정보가 관리되는 형식을 점검할 수 있습니다.

arpd -l -b /var/lib/arpd/arpd.db 2>&1 | head -n 10 || true

실습 테스트를 모두 마친 후 시스템 백그라운드에 남아있는 데몬 프로세스를 안전하게 종료하고 리소스를 정리하기 위해 killall arpd 2>/dev/null || true 명령어를 실행합니다.

killall arpd 2>/dev/null || true

데몬 종료 후에도 리눅스 커널의 이웃(Neighbor) 캐시 테이블이 정상적으로 유지되고 있는지 점검하기 위해 ip neigh show 명령어를 실행합니다.
출력 결과를 통해 게이트웨이 IP 주소 172.18.0.1에 대한 MAC 주소 매핑이 eth0 인터페이스에서 여전히 정상적인 REACHABLE 상태로 유지되고 있음을 확인할 수 있습니다.

ip neigh show

지금까지 우분투 환경에서 arpd 데몬을 활용해 네트워크 ARP 캐시를 최적화하고 관리하는 방법을 살펴보았습니다.
대규모 트래픽 환경에서 발생하기 쉬운 ARP 테이블 병목을 사전에 방지하고 네트워크 안정성을 높이는 데 도움이 되기를 바랍니다.