Linux ARP 문제(ARP Cache/ARP Table)의 원인과 해결 방법

Linux 서버를 운영하다 보면 같은 네트워크에 있는 서버끼리 통신이 되지 않거나, Ping이 실패하고 SSH 연결이 끊기는 등의 문제가 발생할 수 있습니다. 이러한 문제의 원인 중 하나가 바로 ARP(Address Resolution Protocol) 입니다.

ARP는 IP 주소를 실제 MAC 주소로 변환하는 프로토콜입니다. ARP 테이블이 잘못되거나 ARP 캐시가 손상되면 목적지 서버를 찾지 못해 통신 장애가 발생할 수 있습니다.

이번 글에서는 Linux에서 ARP 문제의 원인과 확인 방법, 해결 방법을 실무 중심으로 알아보겠습니다.

ARP란?

같은 네트워크에 있는 장비끼리는 MAC 주소를 이용하여 통신합니다.

하지만 애플리케이션은 IP 주소만 알고 있기 때문에 먼저 ARP를 수행합니다.

Client

↓

192.168.10.100의 MAC 주소는?

↓

ARP Request

↓

ARP Reply

↓

MAC 주소 획득

↓

통신 시작

ARP 응답을 받지 못하면 목적지 서버와 통신할 수 없습니다.

ARP 문제가 발생하는 주요 원인

대표적인 원인은 다음과 같습니다.

  • ARP Cache 손상
  • 잘못된 Static ARP
  • Duplicate IP
  • Duplicate MAC
  • VLAN 설정 오류
  • Switch 장애
  • NIC 장애
  • Proxy ARP 문제
  • Docker Bridge 문제
  • Kubernetes Overlay Network 문제

실무에서는 Duplicate IPARP Cache 오류가 가장 많이 발생합니다.

1. ARP 테이블 확인하기

현재 ARP 정보를 확인합니다.

ip neigh

또는

arp -a

예시

192.168.10.100 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE

다음과 같은 상태도 자주 확인됩니다.

  • REACHABLE
  • STALE
  • DELAY
  • PROBE
  • FAILED
  • INCOMPLETE

FAILED나 INCOMPLETE가 계속된다면 ARP 문제를 의심해야 합니다.

2. ARP 캐시 삭제하기

잘못된 캐시를 삭제합니다.

ip neigh flush all

특정 IP만 삭제하려면

ip neigh del 192.168.10.100 dev eth0

삭제 후 다시 ARP를 학습합니다.

3. Ping으로 ARP 생성하기

ARP 캐시를 다시 생성합니다.

ping 192.168.10.100

Ping을 보내면 ARP Request가 자동으로 발생합니다.

4. tcpdump로 ARP 확인하기

ARP 패킷을 분석합니다.

tcpdump -i eth0 arp

정상적인 흐름입니다.

ARP Request

↓

ARP Reply

↓

ICMP Ping

Reply가 오지 않는다면 목적지 서버나 스위치를 확인해야 합니다.

5. Duplicate IP 확인하기

동일한 IP를 사용하는 장비가 있는지 확인합니다.

arping -D -I eth0 192.168.10.100

Duplicate IP가 발생하면 ARP 충돌이 발생할 수 있습니다.

6. 인터페이스 상태 확인하기

NIC 상태를 확인합니다.

ip link

또는

ethtool eth0

다음 항목을 확인합니다.

  • Link detected
  • Speed
  • Duplex
  • RX/TX Errors

NIC 장애도 ARP 실패의 원인이 됩니다.

7. Switch 및 VLAN 확인하기

물리 서버에서는 다음 항목도 확인합니다.

  • VLAN 설정
  • Access Port
  • Trunk Port
  • Switch Port 상태

잘못된 VLAN 설정은 ARP 응답을 받지 못하는 원인이 됩니다.

8. Docker 및 Kubernetes 확인하기

Docker Bridge

docker network ls

Kubernetes

kubectl get nodes

Overlay Network와 Bridge 설정도 함께 확인합니다.

9. 커널 ARP 설정 확인하기

현재 ARP 관련 커널 설정을 확인합니다.

sysctl -a | grep arp

대표적인 설정입니다.

net.ipv4.conf.all.arp_ignore

net.ipv4.conf.all.arp_announce

잘못 설정되면 ARP 응답이 비정상적으로 동작할 수 있습니다.

10. 로그 확인하기

커널 로그를 확인합니다.

journalctl -k

또는

dmesg | grep -i arp

ARP 관련 오류가 반복되는지 확인합니다.

ARP 문제 점검 순서

실무에서는 다음 순서대로 확인하는 것이 좋습니다.

  1. ARP Table 확인
  2. ARP Cache 삭제
  3. Ping 실행
  4. tcpdump 확인
  5. Duplicate IP 확인
  6. NIC 상태 확인
  7. Switch/VLAN 확인
  8. Docker/Kubernetes 확인
  9. ARP 커널 설정 확인
  10. 로그 확인

ARP 문제 사용 시 주의사항

다음 사항을 고려해야 합니다.

  • Duplicate IP를 먼저 확인한다.
  • ARP Cache를 무조건 삭제하기 전에 현재 상태를 확인한다.
  • VLAN 설정도 함께 확인한다.
  • Docker Bridge 환경도 점검한다.
  • Kubernetes CNI도 확인한다.
  • Static ARP를 사용하는 환경에서는 설정을 다시 확인한다.

ARP는 Layer 2에서 동작하기 때문에 라우팅보다 먼저 확인해야 하는 경우가 많습니다.

ARP와 Routing의 차이

항목ARPRouting
역할IP → MAC 변환목적지 네트워크 선택
동작 계층Layer 2Layer 3
사용 범위동일 네트워크다른 네트워크
주요 문제ARP Cache, Duplicate IPGateway, Route Table

ARP는 같은 네트워크 내 통신, Routing은 다른 네트워크로 패킷을 전달하는 역할을 수행합니다.

자주 묻는 질문

ARP Cache를 삭제하면 문제가 해결되나요?

잘못된 ARP 정보가 원인이라면 해결될 수 있습니다. 하지만 Duplicate IP나 스위치 문제라면 근본 원인을 먼저 해결해야 합니다.

ARP는 인터넷 통신에도 사용되나요?

직접적으로는 아닙니다. ARP는 동일한 로컬 네트워크에서 MAC 주소를 알아내기 위해 사용되며, 인터넷 통신은 기본 게이트웨이의 MAC 주소를 먼저 ARP로 확인한 후 진행됩니다.

ARP Table에 INCOMPLETE가 계속 표시됩니다.

목적지 장비가 응답하지 않거나 VLAN 설정 오류, 스위치 장애, NIC 문제 등이 원인일 가능성이 높습니다.

마무리

ARP는 Linux 네트워크에서 가장 기본적이면서도 중요한 프로토콜입니다. ip neigh, arp, arping, tcpdump 등을 활용하면 ARP 관련 문제를 빠르게 분석할 수 있으며, Duplicate IP와 VLAN 설정, NIC 상태를 함께 점검하면 대부분의 ARP 문제를 해결할 수 있습니다.

댓글 남기기