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 IP와 ARP 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 문제 점검 순서
실무에서는 다음 순서대로 확인하는 것이 좋습니다.
- ARP Table 확인
- ARP Cache 삭제
- Ping 실행
- tcpdump 확인
- Duplicate IP 확인
- NIC 상태 확인
- Switch/VLAN 확인
- Docker/Kubernetes 확인
- ARP 커널 설정 확인
- 로그 확인
ARP 문제 사용 시 주의사항
다음 사항을 고려해야 합니다.
- Duplicate IP를 먼저 확인한다.
- ARP Cache를 무조건 삭제하기 전에 현재 상태를 확인한다.
- VLAN 설정도 함께 확인한다.
- Docker Bridge 환경도 점검한다.
- Kubernetes CNI도 확인한다.
- Static ARP를 사용하는 환경에서는 설정을 다시 확인한다.
ARP는 Layer 2에서 동작하기 때문에 라우팅보다 먼저 확인해야 하는 경우가 많습니다.
ARP와 Routing의 차이
| 항목 | ARP | Routing |
|---|---|---|
| 역할 | IP → MAC 변환 | 목적지 네트워크 선택 |
| 동작 계층 | Layer 2 | Layer 3 |
| 사용 범위 | 동일 네트워크 | 다른 네트워크 |
| 주요 문제 | ARP Cache, Duplicate IP | Gateway, 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 문제를 해결할 수 있습니다.