CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
    • 1.네트워크 기초: OSI 7계층과 IP 주소·서브넷 계산
    • 2.네트워크 설정: 인터페이스·게이트웨이·DNS를 손으로 잡기
    • 3.네트워크 진단: ping부터 tcpdump까지 문제를 좁히는 명령들
    • 4.네트워크 장비·프로토콜·이중화: 계층으로 꿰는 인프라
    • 5.Week 8 종합 복습: 네트워크를 계층 한 장으로 꿰기
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 1급/Week 8/Day 3

기준: 리눅스마스터 1급 출제 기준·오류 제보

리눅스마스터 1급· AssociateWeek 8 · Day 3읽기 약 9분
핵심 정리
  • 네트워크 트러블슈팅은 추측이 아니라 측정이다. 도구를 계층에 매핑하면 한 번의 실행으로 문제 위치가 절반으로 좁혀진다.
  • arp(2계층) → ping·traceroute(3계층) → ss·netstat(4계층) → dig·nslookup(DNS) → tcpdump(전 계층 패킷).
  • IP ping은 되는데 도메인 ping이 안 되면 DNS 문제. 반대로 IP로도 안 되면 IP·경로·방화벽 문제다.
  • ss -tlnp = tcp listen numeric process. "어떤 포트를 어떤 프로세스가 듣고 있나"를 보는 표준 조합이다.
  • 0~1023은 잘 알려진 포트로 root만 바인딩할 수 있다. ping 실패가 곧 장애는 아니다(ICMP만 차단된 서버가 흔하다).

Day 3 - 네트워크 진단: ping부터 tcpdump까지 문제를 좁히는 명령들

ping — 가장 먼저 쓰는 도달성 검사 (3계층)

  • ping은 ICMP Echo 요청/응답으로 대상 호스트까지 IP 패킷이 오가는지 확인한다.
  • 네트워크 진단에서 가장 먼저 쓰는 도구다.
ping google.com            # Ctrl+C로 중단할 때까지 계속
ping -c 4 8.8.8.8          # 4번만 보내고 종료
ping -i 0.5 8.8.8.8        # 0.5초 간격
ping -s 1000 8.8.8.8       # 패킷 크기 1000바이트
ping -W 2 8.8.8.8          # 응답 대기 2초
  • 출력에서 볼 것은 세 가지 — 응답 시간(time=), TTL(time to live), 패킷 손실(packet loss).

ping 8.8.8.8(IP)은 되는데 ping google.com(도메인)이 안 되면 네트워크는 정상이고 DNS가 문제다. 반대로 IP로도 안 되면 IP/경로/방화벽 문제다. 이 한 줄 비교가 DNS 문제와 연결 문제를 즉시 가른다.

⚠️ 함정: ping이 안 된다고 해서 호스트가 죽은 것은 아니다. 많은 서버·방화벽이 보안상 ICMP를 차단한다. "ping은 막혔지만 80/443 포트는 열려 웹은 정상"인 경우가 흔하다. ping 실패를 곧 장애로 단정하면 안 된다.

traceroute — 경로 추적 (어느 홉에서 막히는가)

  • traceroute는 목적지까지 거치는 라우터(홉)들을 순서대로 보여준다.
  • 원리: TTL을 1씩 늘려가며 각 라우터가 보내는 "시간 초과" 응답으로 경로를 그린다.
traceroute google.com
traceroute -n 8.8.8.8      # 이름 해석 없이 IP로만 (더 빠름)
tracepath google.com       # traceroute 유사, 일반 사용자도 실행 가능

핵심 구분: ping은 "최종 목적지에 닿는가"만 알려주지만, traceroute는 "어느 중간 지점에서 막히는가"를 보여준다. 처음 몇 홉은 정상이다가 특정 홉부터 * * *가 나오면 그 지점 이후가 문제다. ping 실패 시 어디서 끊겼는지 좁힐 때 traceroute를 쓴다.

netstat·ss — 연결·포트 상태 확인 (4계층)

  • 어떤 포트가 열려 있고 어떤 연결이 맺어져 있는지 보는 도구다.
  • netstat은 구식(net-tools), ss는 현대식(iproute2)으로 더 빠르다.
옵션netstatss의미
듣는 포트netstat -lss -lLISTEN 상태
TCPnetstat -tss -tTCP만
UDPnetstat -uss -uUDP만
숫자로 표시netstat -nss -n이름 해석 생략(빠름)
프로세스netstat -pss -p포트 점유 프로세스/PID
모두netstat -ass -a모든 소켓
# 가장 많이 쓰는 조합: 듣는 TCP 포트와 점유 프로세스
ss -tlnp           # TCP, LISTEN, 숫자, 프로세스
netstat -tlnp      # 동일 (구식)
 
# 듣는 UDP 포트
ss -ulnp
 
# 라우팅 테이블 (netstat의 경우)
netstat -rn        # = ip route

옵션은 글자마다 뜻이 있다. ss -tlnp = tcp listen numeric process = "어떤 TCP 포트를 어떤 프로세스가 듣고 있나". 서비스가 안 뜰 때 ss -tlnp | grep :80으로 80포트를 누가 듣는지(또는 아무도 안 듣는지) 즉시 확인한다.

핵심 구분: TCP 연결 상태값은 다음과 같다. LISTEN(대기 중), ESTABLISHED(연결됨), TIME_WAIT(종료 후 잔류), SYN_SENT(연결 시도 중). TIME_WAIT가 과도하게 쌓이면 포트 고갈의 신호이고, SYN_SENT가 멈춰 있으면 상대가 응답을 안 하는 것이다.

nslookup·dig·host — DNS 질의 도구

  • 도메인이 어떤 IP로 풀리는지, DNS가 정상 동작하는지 검사하는 도구들이다.
# nslookup (대화형/단순)
nslookup google.com
nslookup google.com 8.8.8.8     # 특정 DNS 서버에 질의
 
# dig (상세 — 실무 표준)
dig google.com                  # A 레코드
dig google.com MX               # 메일 서버 레코드
dig google.com +short           # IP만 간결하게
dig -x 8.8.8.8                  # 역방향 조회(IP→도메인)
 
# host (간결)
host google.com
host -t MX google.com           # MX 레코드만
레코드의미
A도메인 → IPv4 주소
AAAA도메인 → IPv6 주소
MX메일 서버
CNAME별칭(다른 도메인을 가리킴)
NS해당 도메인의 네임서버
PTRIP → 도메인(역방향)

dig는 출력이 풍부해(질의 시간, 응답 서버, TTL, 권한 여부) 실무 디버깅의 표준이다. +short로 답만 뽑을 수 있다. nslookup은 더 단순하지만 deprecated 취급을 받기도 한다. "특정 DNS 서버로 질의"는 dig @서버 도메인 또는 nslookup 도메인 서버 형식이다.

⚠️ 함정: dig는 /etc/hosts를 보지 않고 DNS 서버에 직접 질의한다. 그래서 hosts에 등록한 항목은 ping으로는 풀려도 dig로는 안 나올 수 있다. "ping은 되는데 dig는 NXDOMAIN" = hosts 매핑이지 DNS 항목이 아니라는 뜻이다.

arp — 2계층 주소 매핑 확인

  • 같은 네트워크에서 IP를 MAC 주소로 바꾸는 ARP 테이블(IP↔MAC 캐시)을 보는 도구다.
arp -n             # ARP 테이블 (숫자 표시)
arp -a             # 다른 형식
ip neigh show      # 현대식 (= arp -n)
 
# 항목 삭제
arp -d 192.168.1.50

핵심 구분: ARP는 같은 네트워크(L2 도메인) 안에서만 동작한다. 다른 네트워크의 호스트는 ARP 테이블에 나오지 않고, 대신 게이트웨이의 MAC이 그 역할을 한다. "같은 서브넷인데 통신이 안 된다" 문제에서 ARP 테이블에 상대 MAC이 (incomplete)면 L2 도달 자체가 안 되는 것이다.

tcpdump — 실제 패킷 캡처

  • 가장 강력한 진단 도구로, 인터페이스를 오가는 실제 패킷을 잡아 보여준다. root 권한이 필요하다.
tcpdump -i eth0                      # eth0의 모든 패킷
tcpdump -i eth0 -n                   # 이름 해석 없이(빠름)
tcpdump -i eth0 port 80              # 80포트만
tcpdump -i eth0 host 192.168.1.50    # 특정 호스트만
tcpdump -i eth0 tcp                  # TCP만
tcpdump -i eth0 -c 10                # 10개만 잡고 종료
tcpdump -i eth0 -w capture.pcap      # 파일로 저장(Wireshark 분석용)

tcpdump는 필터(port, host, tcp/udp, src/dst)를 조합해 원하는 트래픽만 본다. 예: tcpdump -i eth0 -n 'tcp port 443 and host 1.1.1.1'. "방화벽이 패킷을 정말 막는지", "SYN은 가는데 응답이 오는지"를 눈으로 확인하는 최후의 도구다. root 권한이 필요하다.

포트 상태와 점검 — 무엇이 열려 있나

  • 서비스 장애의 핵심 질문은 하나 — "포트가 열려 있고, 그 포트를 프로세스가 듣고 있는가."
# 1. 로컬에서 어떤 포트가 LISTEN인가
ss -tlnp
 
# 2. 원격 호스트의 특정 포트가 열려 있나 (telnet/nc)
nc -zv 192.168.1.50 80          # 80포트 연결 테스트
telnet 192.168.1.50 80          # 구식이지만 통용
 
# 3. 잘 알려진 포트 번호
# 22=SSH, 23=Telnet, 25=SMTP, 53=DNS, 80=HTTP, 443=HTTPS
# 110=POP3, 143=IMAP, 21=FTP, 3306=MySQL, 8080=대체 HTTP

핵심 구분: 0~1023은 잘 알려진 포트(well-known)로 root만 바인딩할 수 있다. 1024~49151은 등록 포트, 그 이상은 동적 포트다. "일반 사용자 권한 서비스가 80포트를 못 연다"는 80이 1024 미만이라 root 권한이 필요하기 때문이다.

직접 쳐보기 — 증상별 진단 흐름

# 흐름: 가까운 곳에서 먼 곳으로, 낮은 계층에서 높은 계층으로
ping -c 2 127.0.0.1        # 1. 자기 자신(TCP/IP 스택 정상?)
ping -c 2 192.168.1.1      # 2. 게이트웨이(L2/L3 정상?)
ping -c 2 8.8.8.8          # 3. 외부 IP(라우팅/방화벽 정상?)
ping -c 2 google.com       # 4. 도메인(DNS 정상?)
ss -tlnp                   # 5. 로컬 서비스 포트 확인
  • 이 다섯 단계는 계층을 따라 올라간다. 어느 단계에서 처음 실패하느냐가 곧 문제의 위치다.
    • 3번까지 되는데 4번이 안 됨 → DNS
    • 2번까지 되는데 3번이 안 됨 → 게이트웨이 밖 라우팅·방화벽

내일(Day 4)은 이 패킷들이 실제로 지나는 장비와 프로토콜을 계층별로 정리한다.

📖 용어

  • ICMP : ping·traceroute가 쓰는 제어·오류 통보용 프로토콜. 보안상 차단하는 서버가 많다.
  • TTL(Time To Live) : 패킷이 거칠 수 있는 최대 홉 수. 라우터를 지날 때마다 1씩 줄고 0이 되면 버려진다.
  • 홉(hop) : 패킷이 거쳐 가는 라우터 한 대. traceroute가 세는 단위다.
  • ss / netstat : 소켓·포트·연결 상태를 보는 현대식 도구와 구식 도구.
  • LISTEN : 서버가 연결 요청을 기다리는 대기 상태. 서비스가 떠 있으면 그 포트가 이 상태여야 한다.
  • ESTABLISHED / TIME_WAIT / SYN_SENT : 연결이 맺어진 상태 / 종료 후 잠시 남는 상태 / 연결을 시도하며 응답을 기다리는 상태.
  • A / MX / CNAME / PTR 레코드 : 도메인→IPv4 / 메일 서버 / 별칭 / IP→도메인(역방향)을 담는 DNS 레코드.
  • dig : DNS 서버에 직접 질의하는 표준 도구. /etc/hosts를 보지 않는다는 점이 함정이다.
  • ARP : 같은 네트워크 안에서 IP를 MAC 주소로 바꾸는 프로토콜. 다른 네트워크 호스트는 여기 안 나온다.
  • (incomplete) : ARP 테이블에서 상대 MAC 응답을 못 받았다는 표시. L2 도달 자체가 실패한 것이다.
  • tcpdump 필터 : port·host·tcp/udp·src/dst를 조합해 원하는 트래픽만 잡는 조건식.
  • 잘 알려진 포트(0~1023) : 22 SSH, 25 SMTP, 53 DNS, 80 HTTP, 443 HTTPS 등 표준 서비스 포트. root만 바인딩할 수 있다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

ping 8.8.8.8은 성공하지만 ping google.com은 실패한다. 가장 가능성 높은 원인은?

문제 2

현재 시스템에서 LISTEN 중인 TCP 포트와 이를 점유한 프로세스를 함께 확인하는 명령으로 옳은 것은?

문제 3

ping은 목적지에 닿지 못하는데, 경로상 어느 라우터(홉)에서 트래픽이 끊기는지 확인하려면 사용하는 명령은?

문제 4

TCP 연결 상태 중 "서버가 클라이언트의 연결 요청을 기다리며 대기하는" 상태는?

문제 5

dig에 대한 설명으로 옳은 것은?

문제 6

0~1023 범위의 "잘 알려진 포트(well-known port)"에 대한 설명으로 옳은 것은?

문제 7

같은 서브넷의 호스트 192.168.1.50과 통신이 안 되어 arp -n을 확인했더니 해당 IP의 MAC이 (incomplete)로 표시되었다. 의미로 가장 정확한 것은?

이전네트워크 설정: 인터페이스·게이트웨이·DNS를 손으로 잡기Week 8 · Day 2다음 네트워크 장비·프로토콜·이중화: 계층으로 꿰는 인프라Week 8 · Day 4

참고 공식 자료

  • 리눅스마스터 1급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • ping — 가장 먼저 쓰는 도달성 검사 (3계층)
  • traceroute — 경로 추적 (어느 홉에서 막히는가)
  • netstat·ss — 연결·포트 상태 확인 (4계층)
  • nslookup·dig·host — DNS 질의 도구
  • arp — 2계층 주소 매핑 확인
  • tcpdump — 실제 패킷 캡처
  • 포트 상태와 점검 — 무엇이 열려 있나
  • 직접 쳐보기 — 증상별 진단 흐름
  • 용어
  • 연습 문제