네트워크 장애 진단에 사용하는 기본 명령어: ping부터 curl까지
네트워크 장애 진단에 사용하는 기본 명령어: ping부터 curl까지#
디스크립션: 네트워크 장애가 발생했을 때 사용하는 ping, ipconfig·ip, arp·ip neigh, route, tracert·traceroute, netstat·ss, nc, curl 명령의 역할과 올바른 사용 순서를 알아봅니다. IP 설정부터 Gateway·Routing·TCP Port·Application까지 단계적으로 확인하며 각 명령의 결과가 무엇을 의미하고 어디까지 장애 범위를 좁힐 수 있는지 실무 중심으로 정리합니다.
1장 네트워크 장애에서는 명령어보다 순서가 중요하다#
1.1 현장에서 어떤 명령부터 실행해야 할까#
현장 단말이 중앙 Server와 통신되지 않는다고 가정해보겠습니다.
처음 Network를 배울 때는 다음 명령을 하나씩 외우기 쉽습니다.
ping
ipconfig
tracert
arp
netstat
curl하지만 실제 장애 현장에서 중요한 것은 명령어 개수가 아닙니다.
무엇을 확인하기 위해 어떤 명령을 사용하는가가 중요합니다.
예를 들어 Server 연결이 안 된다고 무조건:
ping 192.168.10.100부터 실행하고 Ping이 성공하면:
Network 정상이라고 판단해서는 안 됩니다.
실제 통신은 다음 여러 단계를 거칠 수 있습니다.
Network Interface
↓
IP Address
↓
Subnet
↓
ARP / NDP
↓
Default Gateway
↓
Routing
↓
TCP / UDP
↓
Port
↓
TLS
↓
Application따라서 장애 분석도 이 순서에 맞춰 범위를 좁혀가는 것이 좋습니다.
1.2 기본 진단 흐름#
네트워크 장애를 처음 확인할 때는 다음 흐름을 사용할 수 있습니다.
1. Interface가 정상인가?
↓
2. IP 설정이 맞는가?
↓
3. 같은 Network의 장비와 통신되는가?
↓
4. Gateway까지 통신되는가?
↓
5. 목적지까지 IP 경로가 존재하는가?
↓
6. 실제 TCP/UDP Port가 동작하는가?
↓
7. Application이 정상 응답하는가?각 단계마다 사용하는 도구가 다릅니다.
| 확인 단계 | 대표 도구 |
|---|---|
| Interface·IP | ipconfig, ip |
| 기본 연결성 | ping |
| 같은 Network의 이웃 | arp, ip neigh |
| Routing | route, ip route |
| 경로 확인 | tracert, traceroute |
| Socket·Port | ss, netstat, nc |
| HTTP·API | curl |
2장 첫 번째 확인 — Network Interface와 IP 설정#
2.1 가장 먼저 자신의 Network 상태를 확인한다#
Server부터 Ping하기 전에 현재 PC나 장비가 어떤 Network 설정을 가지고 있는지 확인해야 합니다.
Windows에서는:
ipconfig /all을 사용할 수 있습니다.
Linux에서는:
ip addr또는 특정 Interface를 지정해:
ip addr show dev eth0처럼 확인할 수 있습니다.
2.2 무엇을 확인해야 할까#
단순히 IP Address만 보면 안 됩니다.
다음 항목을 같이 봅니다.
Interface 상태
IPv4 / IPv6 Address
Subnet Mask / Prefix
Default Gateway
DNS Server
DHCP 사용 여부예:
IPv4 Address
192.168.10.45
Subnet Mask
255.255.255.0
Default Gateway
192.168.10.1
DNS
192.168.10.2라면 이 장비가 192.168.10.0/24 Network에 속해 있다고 볼 수 있습니다.
3장 IP 주소부터 잘못되어 있을 수 있다#
3.1 같은 Network를 사용해야 하는 장비인데 주소가 다르다면#
Server:
192.168.10.100/24Client:
192.168.20.50/24이라면 같은 Layer 2 Network에서 직접 통신하는 구조가 아닙니다.
두 Network를 연결하는 Router나 L3 Switch가 필요합니다.
3.2 Subnet Mask도 중요하다#
다음 두 장비가 있습니다.
Device A
192.168.10.20/24
Device B
192.168.10.100/24둘은 같은 192.168.10.0/24 Network입니다.
하지만 한 장비가 잘못해서:
192.168.10.20/28처럼 설정돼 있다면 같은 192.168.10.x처럼 보여도 상대 주소를 다른 Network라고 판단할 수 있습니다.
따라서:
IP만 맞으면 된다.가 아니라:
IP
+
Subnet Mask를 함께 확인해야 합니다.
4장 169.254.x.x 주소가 보이면 무엇을 의미할까#
Windows 환경 등에서는 DHCP로 정상 주소를 받지 못했을 때 169.254.0.0/16 범위의 IPv4 Link-Local 주소가 자동으로 설정되는 경우가 있습니다.
예:
169.254.32.18이 주소가 보인다면 먼저:
DHCP 응답을 받지 못했는가?
원래 DHCP를 사용하도록 설계된 장비인가?
정적 IP가 필요한 환경인가?를 확인합니다.
가능한 원인은:
DHCP Server 장애
잘못된 VLAN
Network 연결 문제
DHCP Relay 문제
잘못된 Client 설정등 다양합니다.
따라서:
169.254 주소
=
Cable 불량으로 단정해서는 안 됩니다.
5장 두 번째 확인 — Ping#
5.1 가장 가까운 대상부터 확인한다#
처음부터 원격 Server를 Ping하기보다 Network 구조를 따라 확인하는 편이 좋습니다.
예:
내 IP
192.168.10.45
Gateway
192.168.10.1
Server
10.20.30.100이라면:
Local Interface
↓
같은 Network 장비
↓
Gateway
↓
Server순으로 확인할 수 있습니다.
5.2 Gateway Ping#
ping 192.168.10.1Gateway에 응답이 없다면 원격 Server를 보기 전에 Local Network를 확인해야 할 가능성이 큽니다.
예:
IP 설정
Subnet Mask
VLAN
ARP
Switch Port
Gateway Interface등입니다.
5.3 목적지 Ping#
ping 10.20.30.100응답이 돌아오면 적어도 해당 시점에 ICMP Echo Request와 Reply가 왕복할 수 있었다는 중요한 증거가 됩니다.
하지만:
Ping 성공
=
Application 정상은 아닙니다.
6장 Ping 결과를 어떻게 읽어야 할까#
6.1 정상 응답#
예:
Reply from 192.168.10.100:
bytes=32 time=2ms TTL=63확인할 수 있는 것은:
대상 IP까지 ICMP Request가 도달하고
ICMP Reply가 돌아왔음입니다.
6.2 Request Timed Out#
응답이 오지 않았습니다.
가능한 원인은:
대상 장비 Down
Routing 문제
ICMP 차단
Firewall
Packet Loss
Return Path 문제등입니다.
따라서 Timeout만 보고:
장비가 죽었다.라고 단정하면 안 됩니다.
6.3 Destination Unreachable#
중간 Router나 Local System에서 목적지에 도달할 수 없다는 오류가 반환될 수도 있습니다.
어디에서 Unreachable이 발생했는지를 같이 확인하면 Routing 문제를 좁히는 데 도움이 됩니다.
7장 Ping은 속도 측정 도구가 아니다#
Ping 결과에서는 RTT를 확인할 수 있습니다.
예:
time=3ms하지만 이 값 하나만으로:
Network 속도를 평가해서는 안 됩니다.
Ping은 작은 ICMP Packet의 왕복시간을 측정하는 도구입니다.
실제 Application 성능은:
Bandwidth
Packet Loss
Jitter
Server 처리시간
TCP 상태
Application 처리등의 영향을 받습니다.
8장 세 번째 확인 — ARP와 Neighbor Table#
8.1 같은 IPv4 Network에서는 MAC Address가 필요하다#
같은 Subnet의 장비와 통신하려면 상대 IP에 대응하는 MAC Address를 알아야 합니다.
IPv4에서는 ARP가 이 역할을 합니다.
Windows:
arp -aLinux에서는:
ip neigh를 주로 사용할 수 있습니다.
8.2 Neighbor Table 예#
192.168.10.1
lladdr 00:11:22:33:44:55
REACHABLE이는 해당 IP와 MAC의 Neighbor Mapping이 존재한다는 의미입니다.
8.3 ARP Entry가 없다고 바로 장애는 아니다#
여기서 주의해야 합니다.
ARP Table은 Cache입니다.
아직 해당 장비와 통신을 시도하지 않았다면 Entry가 없을 수도 있습니다.
또한 목적지가 다른 Subnet이면 목적지 Server의 MAC이 아니라 Default Gateway의 MAC을 찾게 됩니다.
따라서:
Server ARP Entry 없음
=
L2 장애라고 판단하면 안 됩니다.
9장 ARP가 특히 유용한 상황 — IP 충돌#
예를 들어:
192.168.10.50이라는 IP를 사용 중인데 Neighbor Mapping이 계속 바뀐다고 생각해보겠습니다.
10:00
192.168.10.50
→ MAC-A
10:01
192.168.10.50
→ MAC-BIP Conflict 가능성을 확인해야 합니다.
현장에서:
Ping은 되는데
Service가 됐다 안 됐다.같은 이상한 증상으로 나타날 수도 있습니다.
10장 네 번째 확인 — Routing Table#
10.1 목적지가 다른 Network라면 Route가 필요하다#
Linux:
ip routeWindows:
route print등으로 Routing Table을 확인할 수 있습니다.
10.2 Linux 예#
default via 192.168.10.1 dev eth0
192.168.10.0/24 dev eth0의미는:
192.168.10.0/24
→ 직접 eth0으로
그 밖의 목적지
→ 192.168.10.1 Gateway로입니다.
10.3 Default Gateway가 잘못되면#
같은 Subnet의 장비와는 통신됩니다.
192.168.10.45
↔
192.168.10.100하지만 다른 Network:
10.20.30.100으로는 통신되지 않을 수 있습니다.
이 증상은 Default Gateway 문제의 중요한 단서가 됩니다.
11장 같은 Subnet과 다른 Subnet을 먼저 구분하자#
문제 발생 시 다음 질문을 해보는 것이 좋습니다.
내 IP는?
목적지 IP는?
Subnet Mask는?
두 IP의 Network Address는 같은가?같은 Network라면:
ARP
↓
Ethernet
↓
직접 전달입니다.
다른 Network라면:
Gateway ARP
↓
Router
↓
Routing
↓
목적지 Network과정을 거칩니다.
장애 진단 방법이 달라집니다.
12장 다섯 번째 확인 — tracert와 traceroute#
12.1 목적지까지 가는 Layer 3 경로를 본다#
Windows:
tracert 203.0.113.10Linux:
traceroute 203.0.113.10를 사용할 수 있습니다.
이 도구는 IP Packet의 TTL 또는 Hop Limit 동작을 이용해 경로상의 Router들을 확인하는 데 도움을 줍니다.
12.2 예#
1 192.168.10.1
2 10.1.0.1
3 10.10.0.5
4 203.0.113.10단순화하면:
Client
↓
Gateway
↓
Router
↓
Router
↓
Server경로를 볼 수 있습니다.
13장 traceroute에서 Switch는 일반적으로 보이지 않는다#
중요한 부분입니다.
일반적인 Layer 2 Switch는 IP Packet의 TTL을 감소시키는 Router 역할을 하지 않습니다.
따라서:
traceroute가 특정 Switch에서 멈췄다.라고 표현하는 것은 일반적으로 정확하지 않습니다.
Traceroute에서 주로 확인하는 것은 Layer 3 Hop, 즉 Router나 Routing 기능을 수행하는 장비입니다.
Switch 장애는:
Switch Port 상태
MAC Table
VLAN
STP
Error Counter등 별도의 정보로 확인합니다.
14장 traceroute의 별표를 장애로 단정하지 않는다#
다음처럼 보일 수 있습니다.
1 192.168.10.1
2 *
3 *
4 203.0.113.10중간 장비가 TTL 초과 응답을 보내지 않거나 Firewall에서 제한하기 때문일 수도 있습니다.
최종 목적지까지 정상적으로 도달한다면 중간의 *가 반드시 장애라는 의미는 아닙니다.
따라서 traceroute는 경로 분석의 단서로 사용합니다.
15장 여섯 번째 확인 — 실제 TCP Port#
Ping과 Route가 정상이라면 실제 Service Port를 확인합니다.
예를 들어 Server가:
192.168.10.100:8000을 사용한다고 가정합니다.
시험 또는 허가된 환경에서:
nc -vz 192.168.10.100 8000처럼 TCP 연결을 시험할 수 있습니다.
15.1 Ping과 Port Test의 차이#
ping
→ ICMP 확인
nc
→ 실제 TCP Port 연결 확인입니다.
따라서:
Ping O
nc X가 충분히 가능합니다.
16장 TCP Port Test의 결과를 구분한다#
16.1 연결 성공#
예:
Connection to 192.168.10.100 8000 succeededTCP 3-Way Handshake가 성공했다는 중요한 증거입니다.
하지만 Application이 정상이라는 의미는 아닙니다.
16.2 Connection Refused#
흔히:
Connection refused가 나타날 수 있습니다.
대표적으로:
Server까지 도달했지만 해당 Port에 LISTEN Service가 없음
또는 중간 장비가 명시적으로 Reject같은 상황을 확인합니다.
16.3 Timeout#
오랫동안 응답이 없다면:
Firewall Drop
Routing
Return Path
Server 미응답등을 확인해야 합니다.
17장 UDP Port는 TCP처럼 확인하면 안 된다#
장비가:
UDP 4000을 사용한다고 가정합니다.
TCP Port Scan과 같은 방식으로 UDP Service 상태를 동일하게 판단하기는 어렵습니다.
UDP에는 TCP의:
SYN
SYN/ACK
ACK이 없기 때문입니다.
UDP 통신은:
Datagram 송신
Receiver Capture
Application Log
Application ACK등을 함께 확인해야 할 수 있습니다.
18장 일곱 번째 확인 — ss와 netstat#
18.1 Local Socket 상태를 확인한다#
Linux에서는 ss가 널리 사용됩니다.
예:
ss -tuln옵션을 단순화하면:
-t
TCP
-u
UDP
-l
Listening
-n
주소와 Port를 숫자로 표시입니다.
18.2 TCP Listen만 확인#
ss -lnt특정 Port:
ss -lnt | grep ':8000'예:
LISTEN
0.0.0.0:8000이면 해당 Local Address 조건에서 TCP 8000 Service가 Connection을 기다리고 있다는 단서가 됩니다.
19장 Process가 살아 있다고 Port가 열려 있다는 뜻은 아니다#
Application Process가 실행 중이라고 가정합니다.
하지만:
TCP 8000
LISTEN 없음일 수 있습니다.
가능한 원인은:
Application 초기화 실패
잘못된 Port 설정
Bind 실패
다른 Process가 Port 사용
잘못된 Interface Bind등입니다.
따라서:
Process 실행 여부와:
Socket Listening 여부를 따로 확인합니다.
20장 Bind Address도 확인한다#
예:
127.0.0.1:8000만 Listen하고 있다면 Server Local에서는 접속할 수 있지만 외부 장비에서는 접근하지 못합니다.
반면:
0.0.0.0:8000이면 모든 적절한 IPv4 Local Interface에서 Connection을 받을 수 있도록 Bind된 구성일 수 있습니다.
따라서 ss 결과의 Local Address까지 봐야 합니다.
21장 netstat는 언제 사용할까#
Windows에서는:
netstat -ano등으로 Socket과 Connection을 확인할 수 있습니다.
Linux에서도 netstat를 사용할 수 있는 환경이 있지만 최신 Linux 환경에서는 ss를 사용하는 경우가 많습니다.
중요한 것은 도구 이름보다 다음 정보를 확인하는 것입니다.
LISTEN 중인가?
어떤 Local Address인가?
어떤 Port인가?
Connection 상태는 무엇인가?22장 여덟 번째 확인 — curl#
22.1 Port 연결보다 한 단계 위를 확인한다#
Server가 HTTP API를 제공한다고 가정합니다.
curl http://192.168.10.200:8080/health을 사용하면 단순 TCP Port뿐 아니라 실제 HTTP 응답까지 확인할 수 있습니다.
22.2 출력까지 자세히 보고 싶다면#
curl -v http://192.168.10.200:8080/health처럼 사용할 수 있습니다.
이를 통해 상황에 따라:
TCP Connection
HTTP Request
HTTP Response Header
Status Code등을 확인할 수 있습니다.
23장 curl 결과는 장애 영역을 크게 좁혀준다#
예를 들어:
HTTP/1.1 200 OK가 돌아왔다면 Network뿐 아니라 HTTP Application이 해당 요청을 처리했다는 강력한 증거가 됩니다.
반대로:
HTTP/1.1 401 Unauthorized라면:
Network X보다는:
인증문제를 먼저 확인할 수 있습니다.
23.1 대표적인 HTTP 결과#
200
정상 처리
401
인증 필요 또는 인증 실패
403
권한 또는 정책 문제
404
요청한 Resource 없음
500
Server Application 내부 오류
503
Service를 현재 처리하기 어려움HTTP 응답 자체가 있다는 것은 요청이 적어도 Application 계층 상당 부분까지 도달했다는 중요한 단서입니다.
24장 HTTPS에서는 TLS까지 확인한다#
HTTPS Service는:
TCP
↓
TLS
↓
HTTP순서입니다.
따라서:
Ping O
TCP 443 O
HTTPS X상황이 가능합니다.
확인 대상:
Certificate
Hostname
CA
TLS Version
SNI등입니다.
시험 목적으로 TLS 문제를 확인할 수 있지만 운영 환경에서는 인증서 검증을 무시하는 설정을 정상 설정처럼 사용해서는 안 됩니다.
25장 telnet은 어디에 사용할까#
telnet Client를 TCP Port 연결 확인 용도로 사용하는 경우가 있습니다.
예:
telnet 192.168.10.100 8000하지만 Telnet Protocol 자체는 평문 통신을 사용하므로 실제 Remote Administration 용도로 사용하는 것은 보안상 적절하지 않은 경우가 많습니다.
단순 TCP 연결 시험이라면 nc 같은 도구가 더 편리할 수 있습니다.
26장 nc는 Network의 범용 시험 도구다#
Netcat은 TCP나 UDP 통신 시험에 사용할 수 있습니다.
예:
nc -vz 192.168.10.100 8000TCP Port 연결 시험.
시험망에서 Listener를 만들려면 구현에 따라:
nc -l 9000등을 사용할 수 있습니다.
단 nc는 구현체별로 Option이 다를 수 있습니다.
따라서 실제 환경에서는:
nc -h또는 해당 배포판 문서를 확인하는 것이 좋습니다.
27장 명령 결과 하나만으로 결론 내리지 않는다#
예를 들어:
Ping 실패가 나왔다고 하겠습니다.
이것은:
ICMP Reply를 받지 못했다.는 의미입니다.
바로:
Server Down이라고 할 수 없습니다.
반대로:
Ping 성공도:
Service 정상을 의미하지 않습니다.
각 도구는 특정 경계를 확인하는 증거입니다.
28장 장애 진단은 증거를 연결하는 과정이다#
예:
ipconfig
IP 정상
ping Gateway
정상
ping Server
정상
nc Server 8000
Timeout이라면 문제 범위가:
기본 IP 연결
O
TCP 8000
X로 줄어듭니다.
다음에는:
Firewall
Server Port
TCP Packet Capture를 확인합니다.
29장 사례 1 — IP 설정 자체가 잘못됐다#
현장 PC:
IP
192.168.20.45
Mask
255.255.255.0
Gateway
192.168.10.1이라면 Gateway가 Client와 동일한 Local Subnet에 있지 않는 비정상적인 구성일 수 있습니다.
우선 Network 설계표와 비교해 주소 구성을 확인해야 합니다.
30장 사례 2 — Gateway가 잘못됐다#
Client:
192.168.10.45/24같은 Network의 Server:
192.168.10.100은 통신됩니다.
하지만 중앙 Server:
10.20.30.100에는 연결되지 않습니다.
Route 확인:
default via 192.168.10.254실제 Gateway:
192.168.10.1이었다면 Default Route 문제로 범위를 좁힐 수 있습니다.
31장 사례 3 — Ping은 되지만 TCP Port가 안 된다#
검사:
ping Server
O
nc Server 8000
TimeoutPacket Capture:
SYN
SYN Retransmission
SYN RetransmissionServer에서는 SYN을 볼 수 없습니다.
가능한 확인 영역:
Firewall
ACL
Route
NAT
중간 Network입니다.
32장 사례 4 — Connection Refused#
검사:
ping Server
O
nc Server 8000
Connection RefusedServer:
ss -lnt확인 결과:
TCP 8000
LISTEN 없음이라면 Server Application 또는 Port 설정을 확인해야 합니다.
33장 사례 5 — Port는 정상인데 API가 실패한다#
ping
O
TCP 443
O
curl
HTTP 401이라면 기본 Network Connection보다:
Token
ID
Password
Device Registration등 Authentication 영역을 확인할 수 있습니다.
34장 사례 6 — API까지 오지만 Server 내부에서 실패한다#
ping
O
TCP
O
TLS
O
HTTP
500Server Log:
Database Connection Timeout이라면 문제 영역은:
Network보다:
Application
↓
Database로 좁혀집니다.
35장 traceroute가 정상이어도 Application은 실패할 수 있다#
Traceroute는 Layer 3 Path를 이해하는 데 유용합니다.
하지만:
Traceroute 성공이:
TCP 8000 허용을 의미하지는 않습니다.
경로를 따라갈 수 있어도 Firewall에서 특정 TCP Port만 Drop할 수 있기 때문입니다.
36장 ARP가 정상이어도 Server 통신은 실패할 수 있다#
ARP는 Local Network의 Neighbor Resolution을 확인하는 데 유용합니다.
예:
Gateway MAC
정상이어도 그 이후:
Routing
Firewall
Server
Application에서 장애가 발생할 수 있습니다.
따라서 ARP 정상 역시 전체 Network 정상과 같은 의미가 아닙니다.
37장 명령어를 계층과 연결해서 이해하자#
Interface / IP
│
├─ ipconfig
└─ ip addr
Layer 2 Neighbor
│
├─ arp
└─ ip neigh
Layer 3
│
├─ ping
├─ route
├─ ip route
├─ tracert
└─ traceroute
Transport
│
├─ nc
├─ ss
└─ netstat
Application
│
└─ curl이 구조를 기억하면 명령어를 단순 암기하지 않아도 됩니다.
38장 장애 진단에서 가장 효과적인 기본 순서#
38.1 Interface#
Link는 올라와 있는가?38.2 주소#
IP는 맞는가?
Mask는 맞는가?
Gateway는 맞는가?38.3 Local Network#
같은 Network 장비와 통신되는가?38.4 Gateway#
Gateway까지 통신되는가?38.5 Route#
목적지로 가는 Route가 있는가?38.6 Service#
TCP/UDP와 Port가 맞는가?38.7 Application#
실제 Protocol이 정상 응답하는가?이 순서가 중요합니다.
39장 Windows에서의 기본 진단 흐름#
예:
ipconfig /all↓
arp -a↓
ping 192.168.10.1↓
ping 10.20.30.100↓
route print↓
tracert 10.20.30.100↓
실제 TCP/UDP Port 검사↓
Application 확인입니다.
40장 Linux에서의 기본 진단 흐름#
Interface#
ip addrNeighbor#
ip neighRoute#
ip routePing#
ping -c 4 192.168.10.1Path#
traceroute 10.20.30.100TCP Port#
nc -vz 10.20.30.100 8000Local Socket#
ss -tulnHTTP#
curl -v http://10.20.30.100:8080/health이런 순서로 볼 수 있습니다.
41장 현장에서 명령 결과를 기록하는 방법#
단순히:
Ping 됩니다.라고 기록하는 것보다 다음처럼 남기는 것이 좋습니다.
시간
10:31:20
Client
192.168.10.45
Server
10.20.30.100
Gateway Ping
정상 / 1ms
Server Ping
정상 / 5ms
TCP 8000
Timeout
Traceroute
10.20.30.1까지 확인
Application
Connection Timeout이렇게 기록하면 다른 담당자와 협업하기 쉽습니다.
42장 정상 장비와 비교하면 더 빨리 찾을 수 있다#
장애 장비:
DEVICE-01정상 장비:
DEVICE-02가 같은 Network에 있다면 두 장비를 비교합니다.
| 항목 | 정상 장비 | 장애 장비 |
|---|---|---|
| IP | 정상 | 정상 |
| Mask | /24 | /24 |
| Gateway | 192.168.10.1 | 192.168.10.254 |
| DNS | 동일 | 동일 |
| VLAN | 20 | 20 |
| Server Ping | O | X |
이런 비교만으로도 Gateway 설정 문제를 빠르게 찾을 수 있습니다.
43장 재부팅과 설정 변경은 마지막에 고려한다#
장애가 발생하면:
장비 재부팅
Switch 재부팅
Server 재시작부터 하고 싶어질 수 있습니다.
하지만 먼저:
IP 상태
Route
Socket
Log
Error 상태를 확보하는 것이 좋습니다.
재부팅하면 장애 당시 증거가 사라질 수 있기 때문입니다.
44장 현장에서 피해야 할 테스트#
임의의 IP 변경#
운영 중인 Network에서 IP Conflict를 만들 수 있습니다.
임의의 Gateway 변경#
원격 관리가 끊길 수 있습니다.
임의의 Firewall 해제#
보안 노출이 발생할 수 있습니다.
운영 장비에 임의 명령 전송#
물리 장비 오동작으로 이어질 수 있습니다.
따라서 진단은 가능한 한 읽기 전용 확인부터 시작하는 것이 좋습니다.
45장 네트워크 진단에서 보안도 고려한다#
명령 자체보다 수집한 결과에 민감한 정보가 있을 수 있습니다.
예:
내부 IP
Hostname
Network 구조
Server Port
Token
URL
관리 Interface따라서 장애 자료를 외부에 공유할 때 불필요한 정보는 Masking하거나 제거해야 합니다.
46장 각 도구가 알려주는 것과 알려주지 않는 것#
| 도구 | 알 수 있는 것 | 이것만으로 알 수 없는 것 |
|---|---|---|
ipconfig / ip |
Local IP 설정 | Remote Service 정상 여부 |
ping |
ICMP 왕복 여부 | TCP·UDP Service 정상 |
arp / ip neigh |
Local Neighbor 정보 | Remote Routing 전체 |
route / ip route |
Local Routing 결정 | 중간 장비 실제 전달 여부 |
tracert / traceroute |
일부 Layer 3 Path | 모든 Switch·Firewall 상태 |
nc |
TCP 연결 가능 여부 등 | Application 업무 정상 |
ss / netstat |
Local Socket 상태 | Remote Application 업무 결과 |
curl |
HTTP·HTTPS 계층의 실제 응답 | 모든 Backend 내부 상태 |
이 표를 기억하는 것이 중요합니다.
모든 것을 보여주는 명령어는 없습니다.
47장 증상별로 어떤 도구를 먼저 사용할까#
| 증상 | 우선 확인 |
|---|---|
| IP가 없어 보임 | ipconfig, ip addr |
| 같은 Network 장비 통신 불가 | ping, ip neigh, arp |
| 외부 Network만 실패 | ip route, route print |
| 어느 Layer 3 구간인지 확인 | tracert, traceroute |
| Ping은 되지만 Service 안 됨 | nc |
| Server Port 상태 확인 | ss, netstat |
| Web/API가 실제 동작하는지 확인 | curl |
| TCP 장애가 더 복잡함 | Packet Capture |
| 간헐 장애 | Log·Metric·Packet Capture |
48장 네트워크 장애의 기본 진단 흐름#
전체를 하나로 연결하면 다음과 같습니다.
Power / Link
↓
Interface
↓
IP Address
↓
Subnet Mask
↓
ARP / NDP
↓
Default Gateway
↓
Routing Table
↓
Layer 3 Path
↓
TCP / UDP
↓
Port
↓
TLS
↓
Application
↓
Backend그리고 도구를 연결하면:
Power / Link
↓
ipconfig / ip
↓
arp / ip neigh
↓
ping
↓
route / ip route
↓
tracert / traceroute
↓
nc
↓
ss / netstat
↓
curl
↓
Packet Capture / Log입니다.
49장 자주 발생하는 오해#
49.1 Ping이 되면 Network는 전부 정상이다?#
아닙니다.
ICMP 왕복이 정상이라는 중요한 증거일 뿐입니다.
49.2 Ping이 안 되면 장비가 꺼져 있다?#
반드시 그렇지 않습니다.
ICMP가 차단됐을 수도 있습니다.
49.3 traceroute에서 *가 나오면 그 Router가 고장났다?#
반드시 그렇지 않습니다.
TTL 관련 응답을 보내지 않거나 Firewall에서 차단할 수도 있습니다.
49.4 traceroute로 어느 Switch가 문제인지 알 수 있다?#
일반적인 Layer 2 Switch는 traceroute Hop으로 나타나지 않습니다.
Switch는 별도 Port·VLAN·MAC·Error 정보를 확인해야 합니다.
49.5 ARP Table에 대상이 없으면 Cable 장애다?#
아닙니다.
아직 통신하지 않았거나, Cache가 만료됐거나, 목적지가 다른 Subnet일 수도 있습니다.
49.6 Port 연결이 되면 Application은 정상이다?#
아닙니다.
TCP 이후에도:
TLS
Authentication
Application
Database에서 실패할 수 있습니다.
50장 자기 점검#
50.1 통신 장애가 발생하면 가장 먼저 어떤 명령을 사용하는 것이 좋은가#
무조건 ping부터 시작하기보다 자신의 Interface와 IP 설정을 먼저 확인하는 것이 좋습니다.
Windows에서는:
ipconfig /allLinux에서는:
ip addr등을 사용할 수 있습니다.
50.2 Ping은 되는데 Application 연결이 되지 않는다면 무엇을 확인할까#
실제 Protocol과 Destination Port를 확인하고 TCP라면 Port 연결과 Handshake를 확인합니다.
이후 Firewall, Service 상태, TLS, Application 순으로 범위를 좁힙니다.
50.3 Default Gateway가 잘못되면 어떤 증상이 나타날 수 있는가#
같은 Local Subnet의 장비와는 통신되지만 다른 Network의 Server와 통신되지 않을 수 있습니다.
50.4 traceroute에서 중간 Hop이 *이면 장애인가#
반드시 아닙니다.
해당 장비가 TTL 초과 응답을 제한하고 있을 수 있습니다.
최종 목적지와 실제 Service 상태를 함께 확인해야 합니다.
50.5 ss에서 Port가 LISTEN하지 않는다면 무엇을 확인해야 할까#
Application Process, Port 설정, Bind Address, Application Log 등을 확인합니다.
51장 이 글을 마치며#
네트워크 장애 진단에서 중요한 것은 명령어를 많이 알고 있는 것이 아닙니다.
다음과 같이 질문을 순서대로 던질 수 있어야 합니다.
내 Network Interface는 정상인가?
↓
IP 설정은 맞는가?
↓
같은 Network와 통신되는가?
↓
Gateway는 통신되는가?
↓
목적지 Route가 있는가?
↓
실제 Service Port가 열려 있는가?
↓
Application이 응답하는가?각 질문에는 알맞은 도구가 있습니다.
IP 설정
→ ipconfig / ip
기본 연결성
→ ping
Neighbor
→ arp / ip neigh
Routing
→ route / ip route
Layer 3 경로
→ tracert / traceroute
TCP Port
→ nc
Socket
→ ss / netstat
HTTP / API
→ curl그리고 가장 중요한 것은 각 도구가 어디까지 확인해주는지를 정확하게 아는 것입니다.
ping 성공
≠
TCP 정상
TCP 연결 성공
≠
Application 정상
HTTP 응답
≠
업무 처리 정상네트워크 장애를 만났을 때 한 번에 원인을 맞히려고 하지 말고:
확인
↓
정상 구간 분리
↓
최초 실패 지점 확인
↓
다음 도구 선택과정을 반복해야 합니다.
특히 다음 네 가지를 기억하면 됩니다.
ipconfig와 ip는 내가 Network에서 어떤 주소와 경로를 사용하고 있는지 확인하는 출발점입니다.
ping과 traceroute는 Network 상태를 판단하는 증거이지 서비스 전체의 정상 여부를 증명하는 도구가 아닙니다.
nc, ss, curl로 올라갈수록 실제 Service와 Application에 더 가까운 상태를 확인할 수 있습니다.
좋은 장애 진단은 명령어를 무작정 실행하는 것이 아니라, 직전 결과에 따라 다음 명령을 선택하는 과정입니다.
결국 현장에서 필요한 것은 명령어 암기가 아니라:
지금 어느 계층까지 정상인가?를 계속 확인하면서 장애가 처음 발생하는 경계를 찾아가는 사고방식입니다.