Ethernet과 MAC Address 완벽 이해 — Switch, ARP, Broadcast, VLAN까지
시스템 엔지니어를 위한 네트워크 3편
Ethernet과 MAC Address 완벽 이해 — Switch, ARP, Broadcast, VLAN까지
시스템 엔지니어가 서버 장애를 분석할 때 가장 먼저 확인하는 것은 보통 IP 주소와 Routing이다.
ip addr ip route ping
하지만 실제 현장에서는 IP 설정이 정상인데도 서버 간 통신이 되지 않는 경우가 상당히 많다.
예를 들어 다음과 같은 상황이다.
Server A IP : 192.168.10.10 Subnet : 255.255.255.0 Server B IP : 192.168.10.20 Subnet : 255.255.255.0
두 서버는 같은 네트워크에 있다.
그런데 A에서 B로 ping을 실행했을 때 응답이 없다.
ping 192.168.10.20
IP 주소만 보면 문제가 없어 보인다.
이때 시스템 엔지니어는 다음과 같은 질문을 해야 한다.
"192.168.10.10이 192.168.10.20으로 패킷을 보내기 위해 실제로 어떤 장치를 찾아가는가?"
여기서 등장하는 것이 바로 Ethernet, MAC Address, Switch, ARP이다.
이번 글에서는 네트워크의 가장 기본적인 2계층 동작을 실제 서버 장애 분석 관점에서 이해해보자.
1. Ethernet이란 무엇인가?
Ethernet은 현재 서버와 PC, 스위치 등 대부분의 유선 네트워크에서 사용하는 대표적인 LAN 기술이다.
쉽게 표현하면 Ethernet은 다음과 같은 역할을 한다.
같은 네트워크 구간에서 데이터를 실제로 전달하기 위한 통신 규칙
IP가 "어디로 보낼 것인가"를 결정하는 주소 체계라면 Ethernet은 실제 네트워크에서 어떤 장치로 Frame을 전달할 것인가를 처리한다.
네트워크 계층을 단순화하면 다음과 같다.
Application
│
▼
TCP / UDP
│
▼
IP
│
▼
Ethernet
│
▼
Network Interface Card
│
▼
Cable / Switch
여기서 중요한 것은 IP와 Ethernet이 서로 다른 역할을 한다는 것이다.
IP
└── 논리적인 주소
예: 192.168.10.10
MAC
└── 네트워크 인터페이스의 주소
예: 00:1c:42:2e:60:4a
2. Ethernet Frame이란?
Ethernet에서 실제로 전달되는 데이터 단위를 Frame이라고 한다.
기본적인 Ethernet Frame 구조는 다음과 같이 이해하면 된다.
┌──────────────┬──────────────┬───────┬──────────────┬──────┐ │ Destination │ Source │ Type │ Payload │ FCS │ │ MAC Address │ MAC Address │ │ Data │ │ └──────────────┴──────────────┴───────┴──────────────┴──────┘
가장 중요한 부분은 다음 두 개다.
Destination MAC Source MAC
즉 Ethernet은 기본적으로 MAC Address를 기준으로 Frame을 전달한다.
예를 들어 다음과 같은 서버가 있다고 하자.
Server A IP : 192.168.10.10 MAC : 00:11:22:33:44:55 Server B IP : 192.168.10.20 MAC : 00:aa:bb:cc:dd:ee
A가 B에게 데이터를 전송하면 Ethernet Frame은 대략 다음과 같이 만들어진다.
Source MAC 00:11:22:33:44:55 Destination MAC 00:aa:bb:cc:dd:ee
여기서 중요한 점이 있다.
IP 주소만 알고 있다고 Ethernet Frame을 만들 수 있는 것은 아니다.
A는 먼저 다음 질문에 답을 찾아야 한다.
"192.168.10.20의 MAC Address가 무엇인가?"
이 문제를 해결하는 것이 바로 ARP이다.
3. MAC Address란 무엇인가?
MAC Address는 네트워크 인터페이스를 식별하기 위한 주소이다.
일반적으로 다음과 같은 형태로 표시된다.
00:11:22:33:44:55
또는
00-11-22-33-44-55
Linux에서는 다음과 같이 확인할 수 있다.
ip link
예:
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>
link/ether 00:50:56:aa:bb:cc
여기서
link/ether 00:50:56:aa:bb:cc
부분이 MAC Address다.
좀 더 자세하게 확인하려면:
ip addr show ens160
또는
cat /sys/class/net/ens160/address
결과:
00:50:56:aa:bb:cc
4. MAC Address와 IP Address의 차이
시스템 엔지니어라면 MAC과 IP의 차이를 정확하게 이해해야 한다.
구분MAC AddressIP Address계층OSI 2계층OSI 3계층목적네트워크 인터페이스 식별네트워크 위치 식별예00:50:56:AA:BB192.168.10.10주요 장비SwitchRouter변경 가능 여부변경 가능변경 가능통신 범위로컬 네트워크 중심네트워크 간 통신
중요한 것은 다음이다.
IP Address = 논리적인 주소 MAC Address = Ethernet 통신에서 사용하는 주소
그리고 실제 네트워크 통신에서는 둘이 함께 사용된다.
IP ↓ ARP ↓ MAC ↓ Ethernet Frame ↓ Switch
5. Switch는 어떻게 동작하는가?
Switch는 Ethernet Frame을 MAC Address를 기준으로 전달하는 장비다.
예를 들어 다음과 같은 네트워크가 있다고 하자.
┌─────────────┐
│ Switch │
└─────────────┘
│ │ │
│ │ │
▼ ▼ ▼
Server A
Server B
Server C
Switch는 연결된 장비의 MAC Address를 학습한다.
예:
MAC Address Port -------------------------------- 00:11:22:33:44:55 Gi1/0/1 00:aa:bb:cc:dd:ee Gi1/0/2 00:12:34:56:78:90 Gi1/0/3
이것을 MAC Address Table 또는 CAM Table이라고 한다.
6. Switch는 MAC Address를 어떻게 학습하는가?
Switch는 Frame의 Source MAC을 보고 MAC Address를 학습한다.
예를 들어 Server A가 Frame을 전송한다.
Source MAC 00:11:22:33:44:55 Destination MAC 00:aa:bb:cc:dd:ee
Switch는 Source MAC을 확인한다.
00:11:22:33:44:55 → Gi1/0/1
그리고 MAC Table에 기록한다.
MAC Table 00:11:22:33:44:55 → Gi1/0/1
다음에 같은 MAC Address를 목적지로 하는 Frame이 들어오면 해당 Port로 전달할 수 있다.
7. Unknown Unicast란?
Switch가 목적지 MAC Address를 아직 모르는 경우가 있다.
예:
Destination MAC 00:aa:bb:cc:dd:ee
그런데 MAC Table에 없다.
그러면 Switch는 해당 Frame을 같은 VLAN의 여러 Port로 전달한다.
이를 일반적으로 Unknown Unicast Flooding이라고 한다.
Switch
│
┌────────┼────────┐
▼ ▼ ▼
Server A Server B Server C
▲
│
Destination?
목적지 장비가 응답하면 Switch는 Source MAC 등을 학습하면서 MAC Table을 구성한다.
8. Broadcast란 무엇인가?
네트워크에서 매우 중요한 개념이 Broadcast다.
Ethernet Broadcast MAC Address는 다음과 같다.
ff:ff:ff:ff:ff:ff
이 주소는 특정 하나의 장비가 아니라 해당 Broadcast Domain의 여러 장비가 받을 수 있다.
대표적인 예가 ARP다.
Server A가 다음 IP의 MAC Address를 알고 싶다고 하자.
192.168.10.20
A는 아직 B의 MAC Address를 모른다.
따라서 다음과 같은 ARP Request를 보낸다.
Who has 192.168.10.20? Tell 192.168.10.10
Ethernet Destination MAC은:
ff:ff:ff:ff:ff:ff
즉 Broadcast다.
9. ARP는 왜 필요한가?
ARP는 Address Resolution Protocol의 약자다.
역할은 간단하다.
IP Address를 MAC Address로 변환한다.
예:
IP
192.168.10.20
│
│ ARP
▼
MAC
00:aa:bb:cc:dd:ee
Linux 서버에서 ARP 정보를 확인할 때는 다음 명령을 사용할 수 있다.
ip neigh
예:
192.168.10.1 dev ens160 lladdr 00:11:22:33:44:01 REACHABLE 192.168.10.20 dev ens160 lladdr 00:aa:bb:cc:dd:ee REACHABLE
여기서:
192.168.10.20
은 IP Address이고,
00:aa:bb:cc:dd:ee
는 MAC Address다.
즉 Linux가 다음 정보를 가지고 있는 것이다.
192.168.10.20
↓
00:aa:bb:cc:dd:ee
10. ip neigh가 중요한 이유
서버 장애 분석에서 ip neigh는 매우 중요하다.
예를 들어:
ip neigh
결과가 다음과 같다고 하자.
192.168.10.20 dev ens160 lladdr 00:aa:bb:cc:dd:ee REACHABLE
정상적으로 Neighbor 정보를 가지고 있다.
그런데 다음과 같이 나온다면?
192.168.10.20 dev ens160 INCOMPLETE
중요한 장애 단서가 된다.
INCOMPLETE
는 Linux가 해당 IP의 MAC Address를 확인하려고 했지만 아직 해결하지 못했다는 의미다.
즉 다음 단계에서 확인해야 한다.
IP 설정 ↓ ARP Request ↓ ARP Reply ↓ MAC Address 학습
이 중 ARP 단계에서 문제가 발생했을 가능성이 있다.
11. 실제 ARP 통신 과정
다음과 같은 서버가 있다고 하자.
Server A IP : 192.168.10.10 MAC : 00:11:22:33:44:55 Server B IP : 192.168.10.20 MAC : 00:aa:bb:cc:dd:ee
A가 B에게 Ping을 처음 보내면 다음과 같은 과정이 발생할 수 있다.
Step 1. ARP Request
A:
Who has 192.168.10.20? Tell 192.168.10.10
Ethernet:
Destination MAC ff:ff:ff:ff:ff:ff
Step 2. ARP Reply
B:
192.168.10.20 is at 00:aa:bb:cc:dd:ee
Step 3. A의 ARP Cache 생성
192.168.10.20
↓
00:aa:bb:cc:dd:ee
Step 4. ICMP Packet 전송
이제 실제 Ping Packet을 보낼 수 있다.
Ethernet Destination MAC 00:aa:bb:cc:dd:ee IP Destination 192.168.10.20 ICMP Echo Request
12. Linux에서 ARP 패킷 확인하기
이제 이론을 실제 패킷으로 확인해보자.
가장 먼저 다음 명령을 실행한다.
tcpdump -i ens160 arp
또는 조금 더 자세하게:
tcpdump -e -nn -i ens160 arp
예상되는 출력은 다음과 비슷하다.
ARP, Request who-has 192.168.10.20 tell 192.168.10.10 ARP, Reply 192.168.10.20 is-at 00:aa:bb:cc:dd:ee
이것을 해석하면:
Request
192.168.10.10
│
│ Who has 192.168.10.20?
▼
Broadcast
Reply
192.168.10.20
│
│ I am 00:aa:bb:cc:dd:ee
▼
192.168.10.10
이렇게 보면 ARP가 단순한 이론이 아니라 실제 서버 통신 과정이라는 것을 알 수 있다.
13. tcpdump로 ARP와 ICMP를 동시에 확인하기
Ping 장애를 분석할 때는 다음 명령도 매우 유용하다.
tcpdump -nn -i ens160 'arp or icmp'
예:
ARP, Request who-has 192.168.10.20 tell 192.168.10.10 ARP, Reply 192.168.10.20 is-at 00:aa:bb:cc:dd:ee IP 192.168.10.10 > 192.168.10.20: ICMP echo request IP 192.168.10.20 > 192.168.10.10: ICMP echo reply
이것을 단계별로 보면:
1. ARP Request
↓
2. ARP Reply
↓
3. ICMP Echo Request
↓
4. ICMP Echo Reply
즉 정상적인 통신 흐름을 패킷 단위로 확인할 수 있다.
14. 같은 네트워크와 다른 네트워크의 차이
이 부분은 시스템 엔지니어가 반드시 이해해야 한다.
다음과 같은 서버가 있다고 하자.
Server A 192.168.10.10/24 Server B 192.168.10.20/24
같은 Subnet이다.
A는 B의 MAC Address를 찾는다.
192.168.10.20
↓
ARP
↓
B의 MAC
하지만 다른 네트워크라면 다르다.
Server A 192.168.10.10/24 Gateway 192.168.10.1 Server B 192.168.20.20/24
A가 B에게 통신할 때 A는 B의 MAC Address를 직접 찾지 않는다.
대신 Gateway의 MAC Address를 찾는다.
192.168.20.20
│
│ 다른 네트워크
▼
192.168.10.1
Gateway
│
▼
Router
│
▼
192.168.20.20
즉:
같은 Subnet
A ── ARP ──> B
다른 Subnet
A ── ARP ──> Gateway
│
▼
Router
│
▼
B
이 차이를 모르면 Routing과 ARP 문제를 구분하기 어렵다.
15. MAC Address는 목적지까지 계속 유지되는가?
매우 중요한 개념이다.
예를 들어:
Server A 192.168.10.10 Router Server B 192.168.20.20
A에서 B로 Packet을 보낸다고 하자.
IP Header의 Destination은 기본적으로:
192.168.20.20
이다.
하지만 Ethernet MAC Address는 Router를 통과하면서 변경된다.
[Server A]
Src MAC = A
Dst MAC = Router
↓
[Router]
Src MAC = Router
Dst MAC = B
↓
[Server B]
즉:
IP Address → 목적지까지 전달되는 논리적 주소 MAC Address → 각 Ethernet 구간에서 다음 장비까지 전달하는 주소
이 개념은 나중에 Routing을 이해할 때 매우 중요하다.
16. VLAN이란 무엇인가?
실제 기업 네트워크에서는 하나의 Switch를 여러 네트워크로 논리적으로 분리하는 경우가 많다.
이를 위해 사용하는 대표적인 기술이 VLAN이다.
예를 들어 하나의 물리적인 Switch가 있다고 하자.
Switch
┌────────┼────────┐
│ │ │
Server A Server B Server C
VLAN을 사용하면 논리적으로 분리할 수 있다.
Switch
┌──────────────┐
│ │
VLAN 10 VLAN 20
│ │
Server A Server C
Server B
예를 들어:
VLAN 10 192.168.10.0/24 VLAN 20 192.168.20.0/24
이 경우 물리적으로 같은 Switch에 연결되어 있어도 서로 다른 Broadcast Domain이 된다.
17. Broadcast Domain과 VLAN
ARP가 Broadcast라는 것을 앞에서 배웠다.
따라서 VLAN과 ARP는 밀접한 관계가 있다.
예를 들어:
VLAN 10 192.168.10.0/24
에서 다음 ARP Request가 발생한다고 하자.
Who has 192.168.10.20?
이 Broadcast는 일반적으로 같은 VLAN의 Broadcast Domain 안에서 전달된다.
VLAN 10
┌───────────────┐
│ Switch │
└───────────────┘
│ │ │
▼ ▼ ▼
A B C
다른 VLAN으로는 단순 Ethernet Broadcast 형태로 전달되지 않는다.
즉 VLAN은 Broadcast 영역을 분리하는 중요한 역할을 한다.
18. Access Port와 Trunk Port
VLAN을 이해하려면 Access와 Trunk도 알아야 한다.
Access Port
일반적인 서버나 PC가 연결되는 Port다.
Server │ │ Access Port │ ▼ Switch
하나의 VLAN에 속하도록 구성하는 경우가 일반적이다.
예:
Gi1/0/1 VLAN 10
Trunk Port
Switch와 Switch, 또는 Switch와 Router/Hypervisor 등의 장비 사이에서 여러 VLAN의 트래픽을 전달할 때 사용한다.
Switch A
│
│ Trunk
│ VLAN 10
│ VLAN 20
│ VLAN 30
▼
Switch B
따라서 실제 장애 현장에서 VLAN 문제가 발생하면 단순히 서버 IP만 확인해서는 해결되지 않는다.
다음도 확인해야 한다.
Server NIC
↓
Switch Port
↓
Access VLAN
↓
Trunk
↓
다음 Switch
↓
Gateway
19. 실제 장애 상황 1 — IP는 정상인데 Ping이 안 된다
다음과 같은 상황을 가정해보자.
Server A 192.168.10.10/24 Server B 192.168.10.20/24
A에서:
ping 192.168.10.20
결과:
Destination Host Unreachable
먼저 IP를 확인한다.
ip addr
정상이다.
Routing도 확인한다.
ip route
정상이다.
이제 ARP를 확인한다.
ip neigh
결과:
192.168.10.20 dev ens160 INCOMPLETE
여기서 중요한 단서를 찾았다.
B의 MAC Address를 얻지 못하고 있다.
다음으로:
tcpdump -nn -i ens160 arp
결과:
ARP, Request who-has 192.168.10.20 tell 192.168.10.10 ARP, Request who-has 192.168.10.20 tell 192.168.10.10 ARP, Request who-has 192.168.10.20 tell 192.168.10.10
그런데 ARP Reply가 없다.
Request Request Request Request ...
이 경우 확인할 대상은 다음과 같다.
1. Server B가 살아 있는가? 2. Server B NIC가 UP인가? 3. Server B IP가 정확한가? 4. Server B의 VLAN이 올바른가? 5. Switch Port가 정상인가? 6. VLAN 설정이 올바른가? 7. 중간 Switch/Trunk 문제가 있는가?
여기서 바로 "Server B가 죽었다"고 결론 내리면 안 된다.
패킷이 실제로 어디까지 전달되는지 확인해야 한다.
20. 실제 장애 상황 2 — ARP가 INCOMPLETE
서버에서:
ip neigh
결과:
192.168.10.20 dev ens160 INCOMPLETE
이 상황을 그림으로 보면:
Server A
192.168.10.10
│
│ ARP Request
▼
Switch
│
X
│
Server B
192.168.10.20
가능한 원인은 다양하다.
NIC Down VLAN 오류 Switch Port 오류 케이블 오류 IP 오류 중복 IP 서버 Down 방화벽/보안장비 네트워크 구성 오류
따라서 INCOMPLETE 자체가 원인은 아니다.
정확하게 표현하면:
"해당 IP의 MAC Address를 ARP를 통해 해결하지 못하고 있다."
이것이 현재 관찰된 사실이다.
21. 실제 장애 상황 3 — VLAN이 잘못 설정된 경우
서버 IP는 다음과 같다.
Server A 192.168.10.10/24
서버 설정만 보면 정상이다.
하지만 Switch Port가 잘못된 VLAN에 들어가 있다고 가정하자.
정상 Server │ ▼ Switch Port VLAN 10
잘못된 구성:
Server │ ▼ Switch Port VLAN 20
서버는 다음과 같은 IP를 가지고 있다.
192.168.10.10/24
하지만 실제 Ethernet Broadcast Domain은 VLAN 20이다.
결과적으로 다음과 같은 문제가 발생할 수 있다.
IP 설정 정상 Routing 정상처럼 보임 NIC UP 하지만 ARP 실패 통신 실패
이것이 현장에서 매우 까다로운 장애 중 하나다.
22. Linux에서 VLAN 확인하기
Linux 서버가 VLAN을 직접 사용하는 환경이라면:
ip -d link
또는:
ip link show
VLAN 인터페이스가 있다면 다음과 같이 표시될 수 있다.
ens160.10
또는:
vlan10
예:
ip -d link show ens160.10
VLAN ID를 확인할 수 있다.
vlan protocol 802.1Q id 10
즉:
ens160 │ └── VLAN 10
구조다.
23. Ethernet 장애 분석에 사용하는 Linux 명령어
실무에서는 다음 명령어를 자주 사용한다.
NIC 상태
ip link
MAC Address
ip link show ens160
IP Address
ip addr show ens160
ARP / Neighbor
ip neigh
NIC 상세 정보
ethtool ens160
링크 속도 확인
ethtool ens160
예:
Speed: 1000Mb/s Duplex: Full Link detected: yes
Ethernet 통계
ip -s link show ens160
또는:
ethtool -S ens160
Bridge 환경
Docker나 Linux Bridge 환경에서는:
bridge link
또는:
bridge fdb show
도 확인할 수 있다.
24. tcpdump로 Ethernet Header까지 확인하기
일반적인 tcpdump:
tcpdump -nn -i ens160
Ethernet Header까지 보고 싶다면:
tcpdump -e -nn -i ens160
-e 옵션은 Ethernet Header 정보를 보여준다.
예:
00:11:22:33:44:55 > 00:aa:bb:cc:dd:ee, ethertype IPv4
여기서:
00:11:22:33:44:55
는 Source MAC.
00:aa:bb:cc:dd:ee
는 Destination MAC이다.
즉 서버에서 실제 Ethernet Frame이 어떤 MAC Address를 사용해서 전달되는지 확인할 수 있다.
25. ARP 장애를 tcpdump로 분석하는 방법
다음 명령을 실행한다.
tcpdump -e -nn -i ens160 arp
정상:
Broadcast ARP Request
↓
ARP Reply
비정상:
Broadcast ARP Request
↓
응답 없음
↓
Request 반복
이 차이가 매우 중요하다.
예를 들어:
ARP Request Who has 192.168.10.20? ARP Reply 192.168.10.20 is-at 00:aa:bb:cc:dd:ee
가 보이면 ARP 자체는 정상적으로 동작하고 있을 가능성이 높다.
반대로:
ARP Request ARP Request ARP Request
만 보인다면 ARP Reply가 돌아오지 않는 원인을 찾아야 한다.
26. 중복 IP 장애
현장에서 또 하나 주의해야 하는 것이 Duplicate IP다.
예를 들어:
Server A 192.168.10.10 MAC A Server B 192.168.10.10 MAC B
두 장비가 동일한 IP를 사용하고 있다.
이 경우 ARP 정보가 예상하지 못한 형태로 변경될 수 있다.
예:
192.168.10.10
↓
MAC A
였다가:
192.168.10.10
↓
MAC B
로 바뀔 수 있다.
그러면 통신이 간헐적으로 실패하거나 특정 서버로 잘못 전달되는 현상이 발생할 수 있다.
ARP 패킷을 보면 다음과 같은 이상 현상을 확인할 수도 있다.
192.168.10.10 is-at MAC A 192.168.10.10 is-at MAC B
따라서 특정 IP에 대해 MAC Address가 계속 변경되는지 확인하는 것도 중요하다.
27. MAC Address가 계속 바뀌는 문제
Switch에서 다음과 같은 현상이 발생할 수도 있다.
MAC A → Port 1 잠시 후 MAC A → Port 5
다시:
MAC A → Port 1
이런 현상을 일반적으로 MAC Flapping이라고 한다.
가능한 원인은 환경에 따라 다양하다.
Switch Loop 잘못된 이중 연결 네트워크 구성 오류 가상화 환경의 문제 NIC Teaming/Bonding 구성 문제 스위치 구성 문제
이런 문제는 서버 한 대의 ping만 보고 판단하기 어렵다.
Switch의 MAC Address Table과 함께 분석해야 한다.
28. 시스템 엔지니어의 실제 Layer 2 장애 분석 순서
실제 현장에서는 다음과 같은 순서로 접근하면 좋다.
① NIC 상태
↓
② MAC Address
↓
③ IP Address
↓
④ ARP / Neighbor
↓
⑤ VLAN
↓
⑥ Switch Port
↓
⑦ MAC Address Table
↓
⑧ tcpdump
↓
⑨ 상대 서버 확인
각 단계에서 사용하는 명령어를 정리하면 다음과 같다.
확인 대상명령어NIC 상태ip linkMACip linkIPip addrLinkethtoolNeighbor/ARPip neighVLANip -d linkEthernet 통계ip -s linkPackettcpdumpBridgebridge linkFDBbridge fdb show
Switch에서는 별도의 명령어로 다음을 확인한다.
MAC Address Table VLAN Port Status Port Error CRC Error Speed Duplex Trunk Access VLAN
29. 장애 분석 예제
실제 장애 상황을 하나 만들어보자.
Client
192.168.10.50
│
▼
Switch
│
▼
Server
192.168.10.100
Client에서:
ping 192.168.10.100
실패했다.
Server에서 먼저:
ip link
확인.
ens160: UP
정상.
다음:
ip addr 192.168.10.100/24
정상.
다음:
ip neigh
Client에 대한 Neighbor 정보가 없다.
그리고:
tcpdump -e -nn -i ens160 arp
실행한다.
그런데 아무것도 보이지 않는다.
이 경우 중요한 질문은:
"Server가 ARP Request를 받고 있는가?"
이다.
Server에서 아무 ARP Packet도 보이지 않는다면 Server 내부보다 앞단을 확인해야 한다.
Client │ ▼ Switch │ X │ Server
확인 대상:
Switch Port VLAN Trunk Cable NIC
반대로 Server에서:
ARP Request
가 보이는데:
ARP Reply
가 나가지 않는다면 Server 쪽 설정을 더 자세히 확인해야 한다.
이렇게 tcpdump를 기준으로 패킷이 어디까지 도달하는지 확인하는 것이 실전 장애 분석의 핵심이다.
30. Ethernet 장애 분석의 핵심
이번 편에서 가장 중요한 흐름은 다음과 같다.
IP Address
│
▼
"어디로 보내야 하는가?"
│
▼
Routing
│
▼
같은 네트워크인가?
│
├── Yes ──> 목적지 IP의 MAC을 ARP로 확인
│
└── No ───> Gateway의 MAC을 ARP로 확인
│
▼
Router
그리고 실제 Ethernet 통신은:
IP ↓ ARP ↓ MAC ↓ Ethernet Frame ↓ Switch ↓ NIC
순서로 연결된다.
31. 반드시 기억해야 할 핵심 개념
첫 번째
IP와 MAC은 같은 것이 아니다.
IP = Layer 3 논리 주소 MAC = Layer 2 주소
두 번째
Switch는 기본적으로 MAC Address를 보고 Frame을 전달한다.
Destination MAC
↓
MAC Table
↓
Switch Port
세 번째
ARP는 IP와 MAC을 연결한다.
192.168.10.20
↓
ARP
↓
00:aa:bb:cc:dd:ee
네 번째
같은 네트워크에서는 목적지 서버의 MAC을 알아야 한다.
Server A │ │ ARP ▼ Server B MAC
다섯 번째
다른 네트워크에서는 Gateway의 MAC을 알아야 한다.
Server A │ │ ARP ▼ Gateway MAC │ ▼ Router
여섯 번째
VLAN은 Broadcast Domain을 분리한다.
VLAN 10 ────────────── Broadcast Domain VLAN 20 ────────────── Broadcast Domain
일곱 번째
ping이 안 된다는 사실만으로 원인을 결정하면 안 된다.
ping 실패 │ ├── NIC? ├── VLAN? ├── ARP? ├── Switch? ├── Routing? ├── Firewall? └── Application?
반드시 단계별로 증거를 확보해야 한다.
32. 시스템 엔지니어에게 Ethernet이 중요한 이유
서버 장애는 항상 "IP 문제"로 시작하지 않는다.
실제 장애에서는 다음과 같은 문제가 발생할 수 있다.
NIC Down 케이블 문제 Switch Port Down 잘못된 VLAN ARP 실패 Duplicate IP MAC Flapping CRC Error Duplex 문제 Broadcast 문제 Switch Loop
그리고 이런 문제들은 대부분 OSI 2계층과 직접적으로 연결된다.
따라서 시스템 엔지니어가 네트워크를 제대로 이해하려면 단순히 다음 명령어만 외우는 것으로는 부족하다.
ping ip addr ip route
다음 흐름까지 이해해야 한다.
Ethernet Frame
↓
MAC Address
↓
Switch
↓
Broadcast
↓
ARP
↓
VLAN
↓
IP
↓
Routing
이 흐름을 이해하면 ping이 실패했을 때 단순히 "네트워크가 안 됩니다"라고 말하는 것이 아니라,
ARP Request는 발생한다. 하지만 ARP Reply가 없다. 따라서 IP Routing 이전의 Layer 2 구간을 확인해야 한다.
처럼 구체적인 장애 분석을 할 수 있다.
33. 실전에서 사용하는 Layer 2 점검 명령어 모음
마지막으로 이번 편에서 배운 명령어를 정리해보자.
# NIC 상태 ip link # 특정 NIC ip link show ens160 # IP 확인 ip addr show ens160 # MAC Address cat /sys/class/net/ens160/address # NIC 상세 정보 ethtool ens160 # NIC 통계 ip -s link show ens160 # Neighbor / ARP ip neigh # VLAN 확인 ip -d link # Bridge bridge link # Bridge FDB bridge fdb show # ARP Packet 확인 tcpdump -nn -i ens160 arp # Ethernet Header까지 확인 tcpdump -e -nn -i ens160 arp # ARP + ICMP tcpdump -nn -i ens160 'arp or icmp' # 모든 Packet 확인 tcpdump -nn -i ens160
마무리
이번 편에서는 네트워크 통신의 가장 중요한 기반인 Ethernet과 MAC Address를 살펴봤다.
핵심 흐름은 다음과 같다.
Application
│
▼
TCP/UDP
│
▼
IP
│
▼
ARP
│
▼
MAC
│
▼
Ethernet Frame
│
▼
Switch
│
▼
NIC
그리고 실제 장애 분석에서는 다음과 같이 접근한다.
통신 장애 │ ▼ NIC 상태 확인 │ ▼ MAC Address 확인 │ ▼ IP 확인 │ ▼ ARP / ip neigh 확인 │ ▼ VLAN 확인 │ ▼ Switch Port 확인 │ ▼ tcpdump로 실제 Packet 확인 │ ▼ 장애 구간 특정
이제 네트워크가 단순히 "IP 주소를 이용해서 통신하는 것"이 아니라는 것을 알 수 있다.
실제 서버 통신은 IP, ARP, MAC, Ethernet, Switch, VLAN이 서로 연결되어 동작하는 과정이다.
다음 편에서는 여기서 한 단계 더 들어가서 IPv4 Address와 Subnet을 다룬다.
다음과 같은 질문에 답할 수 있도록 구성할 수 있다.
192.168.10.10/24는 무엇인가? 192.168.10.10과 192.168.20.10은 왜 같은 네트워크가 아닌가? 255.255.255.0은 무엇인가? /24, /16, /8은 무엇인가? 192.168.10.0/24에서 사용 가능한 IP는 몇 개인가? 서버가 자신의 Gateway를 어떻게 판단하는가? 왜 같은 Subnet이면 ARP를 하고, 다른 Subnet이면 Gateway로 보내는가?
다음 편에서는 IPv4 Address → Subnet Mask → CIDR → Network Address → Broadcast Address → Host Address → Gateway → 실제 장애 분석 → tcpdump 순서로 연결하면, 네트워크 교육이 본격적인 서버 엔지니어 실전 과정으로 이어진다.
다음 편은 **「시스템 엔지니어를 위한 네트워크 4편 — IPv4와 Subnet 완벽 이해」**로 이어서, 단순히 CIDR 계산법만 설명하지 않고 실제 서버에서 잘못된 Subnet Mask 때문에 통신이 실패하는 장애 상황까지 연결하는 방식이 좋습니다.
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.