이것저것

[SK shieldus Rookies 29기] 14일차 본문

SK Shieldus Rookies 29

[SK shieldus Rookies 29기] 14일차

atfield1988 2025. 12. 4. 13:10

네트워크 패킷 분석의 필수 스킬
Capture Filter, Display Filter, Conversation Filter, Stream Follow, TShark


Capture Filter vs Display Filter

개념 비교

구분 Capture Filter Display Filter
적용 시기 패킷 캡처 시 캡처 후 표시 시
목적 필요한 패킷만 수집 원하는 패킷 찾기
구문 BPF (Berkeley Packet Filter) Wireshark 전용 문법
성능 🟢 네트워크 자원 절약 🔴 전체 캡처 필요
사용 위치 Capture Options 창 Display Filter 입력칸
저장 대상 필터된 패킷만 저장 모든 패킷 캡처 후 필터

선택 기준

Capture Filter를 사용해야 할 때:

  • 대역폭이 제한적일 때
  • 특정 트래픽만 필요할 때
  • 필터 조건이 명확할 때

Display Filter를 사용해야 할 때:

  • 모든 패킷을 분석해야 할 때
  • 여러 조건을 동시에 확인해야 할 때
  • 패킷 내용을 상세히 분석해야 할 때

주소 기반 필터링

Capture Filter - 특정 IP 주소

Capture Filter 문법:

· host 10.3.1.1                    (양방향)
· src host 10.3.1.1                (송신자만)
· dst host 10.3.1.1                (수신자만)
· not host 10.3.1.1                (제외)
· host 10.3.1.1 or host 10.3.1.2  (여러 IP)
· host www.naver.com                (도메인명 사용)
· host 2406:da00:ff00::6b16:f02d   (IPv6 주소)

예시:

호스트 10.3.1.1과의 모든 통신 캡처:
→ host 10.3.1.1

10.3.1.1이 송신한 패킷만 캡처:
→ src host 10.3.1.1

10.3.1.1로 수신된 패킷만 캡처:
→ dst host 10.3.1.1

Capture Filter - IP 주소 범위

Capture Filter 문법:

· net 10.3.0.0/16                          (CIDR 표기)
· net 10.3.0.0 mask 255.255.0.0           (Subnet mask)
· src net 10.3.0.0/16                     (송신 범위)
· dst net 10.3.0.0/16                     (수신 범위)
· not dst net 10.3.0.0/16                 (범위 제외)
· ipv6 net 2406:da00:ff00::/64            (IPv6 범위)

예시:

10.3.0.0/16 대역과의 모든 통신:
→ net 10.3.0.0/16

10.3.0.0/16에서 발신한 패킷:
→ src net 10.3.0.0/16

Capture Filter - 브로드캐스트/멀티캐스트

Capture Filter 문법:

· ip broadcast                 (IPv4 브로드캐스트)
· ip multicast                 (IPv4 멀티캐스트)
· dst host ff02::1            (IPv6 멀티캐스트)
· dst host ff02::2            (IPv6 특정 멀티캐스트)

예시:

브로드캐스트 패킷만 캡처:
→ ip broadcast

멀티캐스트 패킷만 캡처:
→ ip multicast

Capture Filter - MAC 주소

Capture Filter 문법:

· ether host 00:08:15:00:08:15      (양방향 MAC)
· ether src 00:08:15:00:08:15       (송신 MAC)
· ether dst 00:08:15:00:08:15       (수신 MAC)
· not ether host 00:08:15:00:08:15  (MAC 제외)

예시:

MAC 주소 00:08:15:00:08:15의 모든 트래픽:
→ ether host 00:08:15:00:08:15

특정 MAC에서 발신한 패킷:
→ ether src 68-ec-c5-51-0b-53



캡처 필터를 활용하기


디스플레이 필터를 활용하기


Display Filter - 특정 IP 주소

Display Filter 문법:

· ip.addr == 10.3.1.1                      (양방향)
· ip.src == 10.3.1.1                       (송신자)
· ip.dst == 10.3.1.1                       (수신자)
· !ip.addr == 10.3.1.1                     (제외)
· ipv6.addr == 2406:da00:ff00::6b16:f02d  (IPv6)
· ip.host == www.wireshark.org             (도메인명)

Display Filter - 주소 범위

Display Filter 문법:

· ip.addr > 10.3.0.1 && ip.addr < 10.3.0.5
  → 10.3.0.1과 10.3.0.5 사이의 IP

· (ip.addr >= 10.3.0.1 && ip.addr <= 10.3.0.6) && !ip.addr == 10.3.0.3
  → 10.3.0.1~10.3.0.6 범위 (10.3.0.3 제외)

· ipv6.addr == fe80:: && ipv6.addr < fec0::
  → IPv6 범위 필터링

Display Filter - IP 서브넷

Display Filter 문법:

· ip.addr == 10.3.0.0/16                      (CIDR 표기)
· ip.addr == 10.3.0.0/16 && !ip.addr == 10.3.0.3
  → 범위에서 특정 IP 제외

· !ip.addr == 10.3.0.0/16 && !ip.addr == 10.2.0.0/16
  → 여러 서브넷 제외

포트 기반 필터링

Capture Filter - 포트

Capture Filter 문법:

· port 53                      (DNS - 양방향)
· not port 53                  (DNS 제외)
· port 80                      (HTTP)
· tcp port 21                  (TCP FTP)
· udp port 67                  (UDP DHCP)
· portrange 1-80               (포트 범위)
· tcp portrange 1-80           (TCP 범위)
· port 20 or port 21           (여러 포트)
· host 10.3.1.1 and port 80    (특정 호스트 특정 포트)
· host 10.3.1.1 and not port 80 (특정 호스트 제외)

예시:

DNS 트래픽만 캡처:
→ port 53

HTTP와 HTTPS만 캡처:
→ port 80 or port 443

특정 호스트의 SSH만 캡처:
→ host 10.3.1.1 and tcp port 22

Capture Filter - 특정 프로토콜 포트

Capture Filter 문법:

· tcp port http      (HTTP TCP port)
· udp port domain    (DNS UDP port)
· tcp port 1:80      (TCP 1~80번 포트)

Display Filter - 포트

Display Filter 문법:

· tcp.port == 80                    (TCP 80번 포트)
· tcp.srcport == 443                (TCP 송신 포트 443)
· tcp.dstport != 80                 (TCP 수신 포트 제외 80)
· tcp.window_size < 1460            (Window size 비교)
· udp.srcport == 68 and udp.dstport == 67
  → UDP 송신 68, 수신 67

프로토콜 기반 필터링

Capture Filter - 프로토콜

Capture Filter 문법:

· tcp                  (TCP만)
· udp                  (UDP만)
· arp                  (ARP만)
· ip                   (IPv4만)
· ipv6                 (IPv6만)
· not arp              (ARP 제외)
· not broadcast and not multicast
  → 브로드캐스트/멀티캐스트 제외

예시:

TCP 트래픽만:
→ tcp

ARP와 DNS 제외:
→ not arp and not port 53

HTTP와 HTTPS만:
→ tcp port http or tcp port 443

Display Filter - 프로토콜

Display Filter 문법:

· tcp                          (TCP)
· udp                          (UDP)
· arp                          (ARP)
· ip.proto == 6                (TCP - Protocol field)
· ip.proto == 17               (UDP - Protocol field)
· ip.proto == 1                (ICMP - Protocol field)
· icmp                         (ICMP)
· dns                          (DNS)
· http                         (HTTP)

예시:

ICMP 패킷만:
→ icmp

DNS 쿼리:
→ dns

ICMP와 DNS:
→ icmp or dns

복합 필터링 (AND, OR, NOT)

Capture Filter - 논리 연산

Capture Filter 문법:

· and       (그리고) : 모두 만족
· or        (또는)   : 하나 이상 만족
· not       (아님)   : 조건 반대

예시:

· host 10.3.1.1 and port 80
  → 호스트 10.3.1.1의 포트 80 트래픽

· (tcp port 80 or tcp port 443) and host 10.3.1.1
  → 호스트 10.3.1.1의 HTTP/HTTPS

· udp src port 68 and udp dst port 67
  → UDP 송신 68, 수신 67 (DHCP)

· not (host 10.3.1.1 and port 80)
  → 호스트 10.3.1.1의 포트 80 제외

Display Filter - 논리 연산

Display Filter 문법:

· &&        (그리고) : 모두 만족
· ||        (또는)   : 하나 이상 만족
· !         (아님)   : 조건 반대

예시:

· tcp.port == 80 && ip.src == 10.3.1.1
  → TCP 포트 80 그리고 송신 IP 10.3.1.1

· tcp.port == 80 || tcp.port == 443
  → TCP 포트 80 또는 443

· !(tcp.port == 80)
  → TCP 포트 80 제외

· (tcp.port == 80 || tcp.port == 443) && ip.src == 10.3.1.1
  → HTTP/HTTPS 그리고 송신 10.3.1.1

Display Filter 연산자

비교 연산자

연산자 영어표기 예제 의미
== eq ip.src == 10.2.2.2 같다
!= ne tcp.srcport != 80 다르다
> gt frame.time_relative > 1 크다
< lt tcp.window_size < 1460 작다
>= ge dns.count.answers >= 10 크거나 같다
<= le ip.ttl <= 10 작거나 같다
contains contains http contains "GET" 포함

실제 예시

Window Size가 1460보다 작은 패킷:
→ tcp.window_size < 1460

TTL이 10 이하:
→ ip.ttl <= 10

DNS 응답 개수가 10개 이상:
→ dns.count.answers >= 10

HTTP에 "GET" 포함:
→ http contains "GET"

HTTP에 "POST" 포함:
→ http contains "POST"

프레임 시간이 1초 이상:
→ frame.time_relative > 1

Display Filter 에러 탐지

필터 배경색 의미

적색 배경 (빨강):
- 문법 검사 실패
- 필터가 동작하지 않음
- 예시: http && udp (논리적 모순)

녹색 배경 (초록):
- 문법이 정상
- '논리 검사'는 수행하지 않음
- 예시: ip.src == 192.168.1.1

황색 배경 (노랑):
- 필터가 원하는 대로 동작하지 않음
- 경고 표시
- 예시: ip.addr != 10.1.1.1

🎨 에러 탐지 예시

[적색] http && udp
→ HTTP는 TCP 기반이므로 UDP와 동시 불가능

[녹색] tcp.srcport == 443
→ 문법 정상

[황색] ip.addr != 10.1.1.1
→ 모든 IP 주소는 10.1.1.1이 아니므로 
  원하는 결과를 얻지 못할 수 있음

Capture Filter vs Display Filter 비교

문법 비교표

기능 Capture Filter Display Filter
단일 호스트 host 172.16.1.1 ip.host == 172.16.1.1
송신 호스트 src host 172.16.1.1 ip.src == 172.16.1.1
수신 호스트 dst host 172.16.1.1 ip.dst == 172.16.1.1
단일 포트 port 8080 tcp.port == 8080
포트 제외 !port 8080 !tcp.port == 8080
TCP/UDP tcp / udp tcp / udp
ARP arp arp

실제 변환 예시

Capture Filter           →  Display Filter
─────────────────────────────────────────
host 10.0.0.1           →  ip.addr == 10.0.0.1
src host 10.0.0.1       →  ip.src == 10.0.0.1
dst host 10.0.0.1       →  ip.dst == 10.0.0.1
port 22                 →  tcp.port == 22
tcp port 80             →  tcp.port == 80
not port 53             →  !tcp.port == 53
arp                     →  arp
tcp and host 10.0.0.1   →  tcp && ip.addr == 10.0.0.1

표현식을 사용한 필터링

Display Filter Expression Builder

사용 방법:

  1. Analyze 메뉴 → Display Filter Expression
  2. 원하는 프로토콜 선택
  3. 필드 선택
  4. 비교 연산자 선택
  5. 값 입력
  6. 필터 자동 생성

예시:

Analyze → Display Filter Expression

Protocol: TCP
Field: Source Port
Operator: ==
Value: 443

결과: tcp.srcport == 443

Context Menu를 이용한 필터링

패킷 리스트에서:
1. 원하는 필드 우클릭
2. 옵션 선택:
   - Apply as Filter
   - Prepare a Filter
   - Apply as Column

우클릭 옵션:

Apply as Filter:
  · Selected         (선택한 값으로 필터)
  · Not Selected     (선택한 값 제외)
  · ...and Selected  (기존 필터 AND)
  · ...or Selected   (기존 필터 OR)
  · ...and not       (기존 필터 AND NOT)
  · ...or not        (기존 필터 OR NOT)

Conversation Filter (대화 필터)

Conversation Filter란?

정의: 두 호스트 간의 통신(대화)만 분석

용도:

  • 특정 호스트 간 통신만 추출
  • 트래픽 분석 간소화
  • 통신 패턴 파악

Conversation Filter 사용 방법

방법 1: 패킷 리스트 선택

1. 패킷 리스트에서 패킷 선택
2. 우클릭
3. Conversation Filter → TCP (또는 UDP)
4. 해당 대화만 필터됨

방법 2: Statistics 메뉴

1. Statistics → Conversations
2. 대화 목록 표시
3. Packets 기준 내림차순 정렬
4. 첫 번째 대화 선택
5. Apply as Filter → A→B 선택

대화 필터 예시

필터 결과:
tcp.stream eq 0

의미:
TCP Stream 0에 해당하는 모든 패킷

실제 변환되는 필터:
ip.src == 24.6.173.220 && ip.dst == 199.181.132.250

Stream Follow (스트림 추적)

Stream Follow란?

정의: 여러 패킷의 데이터를 통합하여 읽기 쉬운 형식으로 재구성

4가지 유형:

  1. TCP Stream
  2. UDP Stream
  3. SSL Stream
  4. HTTP Stream

Stream Follow 사용 방법

1. TCP 또는 HTTP 패킷 선택
2. 우클릭
3. Follow → HTTP Stream (또는 TCP/UDP/SSL)
4. Follow Stream 대화창 표시

Follow Stream 정보

표시되는 정보:
- 요청 데이터 (Client → Server)
- 응답 데이터 (Server → Client)
- 바이너리 또는 ASCII 형식
- 전체 대화 바이트 수

저장 옵션:
- ASCII로 저장
- 필터 적용
- 스트림 제외

Endpoints 분석

Endpoints란?

정의: 네트워크 통신의 양 끝점(호스트)를 분석

제공 정보:

  • 주소 (IP 또는 MAC)
  • 송수신 패킷 수
  • 송수신 바이트 수
  • 송수신 속도 (Bits/s)
  • 지역 정보 (GeoIP)
  • AS 번호 및 조직명

Endpoints 사용 방법

Statistics → Endpoints

표시되는 탭:
- Ethernet (L2)
- IPv4 (L3)
- IPv6 (L3)
- TCP (L4)
- UDP (L4)

Expert Information (전문가 정보)

Expert Information란?

정의: 프로토콜 패킷의 상태나 이상 정보 자동 분석

4가지 심각도:

심각도 아이콘 설명
Chat 🔵 통신에 대한 기본 정보
Note 🟡 정상일 수도, 비정상일 수도 있는 패킷
Warning 🟠 대부분 비정상 통신
Error 🔴 패킷 오류 또는 분석 오류

Expert Information 사용 방법

Analyze → Expert Information

분류:
- Sequence (TCP 시퀀스 관련)
- Reassembly (재조립 관련)
- Protocol (프로토콜 관련)

정렬:
- 심각도별
- 빈도별
- 프로토콜별

일반적인 Expert Information

Warning:
- TCP Zero Window Segment
- TCP window specified by receiver is complete...
- Connection reset (RST)

Note:
- Duplicate ACK
- This frame is a (suspected) retransmission

Chat:
- TCP window update
- Connection finish (FIN)
- Connection establish request (SYN)

Traffic Statistics (트래픽 통계)

Packet Lengths 분석

용도:

  • 대용량 캡처 파일 구성 이해
  • 패킷 길이별 분포 확인

사용 방법:

Statistics → Packet Lengths

표시 정보:

  • 총 패킷 수
  • 평균 길이
  • 최소/최대 길이
  • 길이별 개수 및 비율
  • 길이별 통계 그래프

Protocol Hierarchy 분석

용도:

  • 캡처 파일의 프로토콜 구성 파악
  • 각 계층별 패킷 비율

표시 정보:

  • 프로토콜 이름
  • 패킷 수
  • 바이트 수
  • 비트/초
  • 종료 패킷 정보

Conversation 통계

용도:

  • 호스트 간 통신 통계
  • 데이터 전송량 비교

표시 정보:

  • 주소 A, B
  • 총 패킷 수
  • 방향별 패킷 수
  • 방향별 바이트 수
  • 전송 속도

비고: 수업에서 진행 안 한 부분이 포함 되어 있으나 장표에 있기 때문에 간단하게 정리만 진행은 했다!(궁금하면 Wireshark official docu를 확인하자)


TShark 커맨드라인 필터링

TShark란?

정의: Wireshark의 커맨드라인 버전

위치:

C:\Program Files\Wireshark\tshark.exe

TShark 기본 명령어

① tshark -h
   TShark 도움말 표시

② tshark -D
   사용 가능한 인터페이스 목록

③ tshark -i 7
   인터페이스 7에서 패킷 캡처
   (실시간 출력) //본인 WIFI든 이더넷이든 찾으면 됨.

④ tshark -i 7 -w TST.pcapng
   인터페이스 7에서 패킷 캡처
   (파일로 저장)

⑤ tshark -r TST.pcapng
   저장된 파일 읽기



Capture Filter를 사용한 수집

① tshark -i 7 -f "tcp port 443" -w mysecport443.pcapng
   인터페이스 3에서 TCP 443만 캡처

② tshark -i 7 -f "tcp port 443 and host 192.168.1.1" \
           -w my443.pcapng
   TCP 443 AND 호스트 192.168.1.1

③ tshark -i 7 -f "not arp and not dns" -w noarp_nodns.pcapng
   ARP와 DNS 제외 캡처


Display Filter를 사용한 분석

① tshark -r "mysecport443.pcapng" -Y "tcp.analysis.flags"
   tcp.analysis.flags 필터 적용 (화면 출력)

② tshark -r "mysecport443.pcapng" -Y "tcp.analysis.flags" -w tcpflag.pcapng
   필터된 결과를 파일로 저장

③ tshark -r "mysecport443.pcapng" -Y "http.request.method == GET"
   HTTP GET 요청만 필터

자동 종료 및 파일 분할

① tshark -i 7 -a "files:3" -b "duration:10" -w myshark.pcapng
   -a files:3     : 3개 파일 수집 후 자동 종료
   -b duration:10 : 10초 후 다음 파일 생성
   -w 파일명      : 캡처 파일명


트래픽 통계 분석

① tshark -i 3 -qz hosts
   접속한 호스트 목록 확인

   출력 예시:
   125.209.222.142 www.naver.com.nheos.com
   125.209.254.155 s1.e.navercdn.com
   43.250.152.43   s2.e.navercdn.com

② tshark -r "http-espn101.pcapng" -qz expert,warns
   Expert Information 경고 출력

③ tshark -r "http-espn101.pcapng" -qz conv,ip
   IP별 Conversation 통계

실제 사용 예시

예1: HTTP 트래픽만 수집

tshark -i 1 -f "tcp port 80" -w http_traffic.pcapng

예2: 특정 IP 제외하고 수집

tshark -i 1 -f "not host 192.168.1.1" -w filtered.pcapng

예3: 수집 후 특정 패킷만 필터

tshark -r captured.pcapng -Y "tcp.flags.syn==1" \
       -w syn_packets.pcapng

예4: 통계만 출력

tshark -r captured.pcapng -qz io,stat,1

핵심 정리 사항

Wireshark 필터링

  1. Capture vs Display:

    • Capture는 캡처 시, Display는 분석 시
  2. 주소 필터:

    • host / net / ether host
  3. 포트 필터:

    • port / tcp port / udp port
  4. 논리 연산:

    • Capture: and / or / not
    • Display: && / || / !
  5. Display Filter 연산자:

    • == (같다) / != (다르다) / > < >= <=
  6. Capture vs Display 문법 비교:

    • host 10.0.0.1 vs ip.addr == 10.0.0.1
  7. Conversation Filter:

    • 특정 호스트 간 통신만 추출
  8. Stream Follow:

    • 여러 패킷을 하나의 통신으로 재구성
  9. Expert Information:

    • 이상 패킷 자동 감지
  10. TShark:

    • Wireshark의 CLI 버전


공유기의 핵심 기능

공유기가 제공하는 3가지 기능

1️⃣ Routing (라우팅)
   └─ 사설망의 데이터를 인터넷으로 전달
   └─ 다양한 네트워크 연결

2️⃣ DHCP (Dynamic Host Configuration Protocol)
   └─ 자동 IP 주소 할당
   └─ 클라이언트가 부팅 시 IP 자동 수신

3️⃣ NAT (Network Address Translation)
   └─ 사설 IP ↔ 공개 IP 주소 변환
   └─ 외부 인터넷과의 통신 중개

DHCP 기능

DHCP 동작 원리

공유기 DHCP 서버:
사설망 범위: 192.168.1.0/24

클라이언트들에게 할당되는 IP:
├─ 컴퓨터 A: 192.168.1.10
├─ 컴퓨터 B: 192.168.1.20
└─ 컴퓨터 C: 192.168.1.30

외부 인터넷:
Internet (www.test.com)
공개 IP: 200.10.10.10

📊 DHCP 역할

기능 설명
자동 할당 각 클라이언트에게 고유한 사설 IP 주소 할당
임대 (Lease) 일정 시간 동안 IP 주소 임대
갱신 만료 전 자동 갱신
회수 미사용 IP 주소 회수

NAT 개념과 원리

NAT (Network Address Translation) 정의

개념: 송신지 또는 수신지 IP 주소를 다른 주소로 변환

목적:

  • 사설 IP와 공개 IP 간의 변환
  • IP 주소 자동 관리
  • 보안 강화 (내부 네트워크 보호)

NAT의 2가지 종류

1️⃣ SNAT (Source NAT)
   └─ 송신지 IP 주소 변환
   └─ 내부 (사설) → 외부 (공개) 변환

2️⃣ DNAT (Destination NAT)
   └─ 수신지 IP 주소 변환
   └─ 외부 (공개) → 내부 (사설) 변환

📊 NAT 테이블 예시

변환 전                          변환 후
────────────────────────────────────────
송신지: 192.168.1.10    →    송신지: 30.1.120.8
송신지: 192.168.1.20    →    송신지: 30.1.120.8
송신지: 192.168.1.30    →    송신지: 30.1.120.8
수신지: 200.10.10.10    →    수신지: 200.10.10.10

SNAT (Source NAT)

SNAT 개념

정의: 송신지 IP 주소를 변환하여 인터넷으로 전송

흐름:

내부 호스트가 인터넷 서버에 접속
    ↓
NAT 라우터가 사설 IP → 공개 IP로 변환
    ↓
인터넷 서버로 전송

SNAT 예시

내부 호스트 정보:
IP: 192.168.1.10/24
수신 포트: 80
송신 포트: 50030

NAT 변환 테이블:
192.168.1.10 → 11.11.11.11

공개 정보:
IP: 11.11.11.11
수신 포트: 80
송신 포트: 50030

외부 서버 (22.22.22.22)로 전송

DNAT (Destination NAT)

DNAT 개념

정의: 수신지 IP 주소를 변환하여 내부 호스트로 전달

흐름:

외부에서 공개 IP로 접속 요청
    ↓
NAT 라우터가 공개 IP → 사설 IP로 변환
    ↓
내부 호스트로 전달

DNAT 예시

외부 요청:
목적지 IP: 11.11.11.11
목적지 포트: 50030
출발지: 22.22.22.22

NAT 변환 테이블:
22.22.22.22 → 192.168.2.20

내부 호스트로 변환:
목적지 IP: 192.168.2.20
목적지 포트: 80
출발지: 11.11.11.11

내부 호스트 (192.168.2.20)가 수신

사설 IP 주소 범위

RFC 1918에 정의된 사설 IP 범위

1️⃣ Class A 사설 IP 범위

범위: 10.0.0.0 ~ 10.255.255.255

특징:
- A 클래스에 해당하는 넓은 범위
- 총 16,777,216개 주소 (2^24)
- 대규모 기업이나 조직에서 사용

표기: 10.0.0.0/8

예시:
10.0.0.1, 10.0.0.2, 10.100.200.50, 10.255.255.255

2️⃣ Class B 사설 IP 범위

범위: 172.16.0.0 ~ 172.31.255.255

특징:
- B 클래스에 해당하는 범위
- 172.16부터 172.31까지 총 16개의 서브넷
- 총 1,048,576개 주소 (2^20)
- 중규모 기업이나 조직에서 사용

표기: 172.16.0.0/12

예시:
172.16.0.1, 172.20.100.50, 172.31.255.255

3️⃣ Class C 사설 IP 범위

범위: 192.168.0.0 ~ 192.168.255.255

특징:
- C 클래스에 해당하는 범위
- 가정용 공유기에서 가장 흔히 사용
- 총 65,536개 주소 (2^16)
- 소규모 사무실이나 가정에서 사용

표기: 192.168.0.0/16

예시:
192.168.0.1, 192.168.1.100, 192.168.100.50, 192.168.255.255

표준 공유기 범위:
- 192.168.0.x 또는 192.168.1.x 가장 일반적

📊 사설 IP 주소 비교표

IP 범위 클래스 개수 특징 사용처
10.0.0.0/8 A 약 1,670만 가장 넓은 범위 대규모 기업
172.16.0.0/12 B 약 104만 중간 규모 범위 중규모 기업
192.168.0.0/16 C 약 6.5만 가장 작은 범위 가정/소규모

💡 사설 IP 사용 시 주의사항

1️⃣ 로컬 네트워크 내에서만 사용
   └─ 인터넷 라우팅 불가

2️⃣ 각 범위는 독립적으로 사용
   └─ 중복 할당 가능 (다른 조직 간)

3️⃣ NAT를 통해 공개 IP로 변환
   └─ 인터넷 통신 가능

4️⃣ 보안상 보호됨
   └─ 외부에서 직접 접근 불가

PAT (Port Address Translation)

PAT 개념

정의: IP 주소와 포트 번호를 함께 변환

특징:

  • 제한된 공개 IP로 많은 사설 호스트 관리
  • Dynamic PAT (동적 PAT) 사용
  • 포트 번호로 각 호스트 구분

PAT 예시

내부 호스트 A:
IP: 10.6.6.61, 포트: 2222
↓ (NAT 변환)
공개 정보:
IP: 32.8.2.66, 포트: 7777

내부 호스트 B:
IP: 10.6.6.62, 포트: 3333
↓ (NAT 변환)
공개 정보:
IP: 32.8.2.66, 포트: 8888

내부 호스트 C:
IP: 10.6.6.63, 포트: 3333
↓ (NAT 변환)
공개 정보:
IP: 32.8.2.66, 포트: 9999

결과:
같은 공개 IP(32.8.2.66)로 여러 호스트를 관리
포트 번호(7777, 8888, 9999)로 구분

PAT 라우터 변환 테이블

Router Translation Table:

내부 (Inside)              ↔  공개 (Outside)
─────────────────────────────────────────
10.6.6.61:2222 ──→ 32.8.2.66:7777
10.6.6.62:3333 ──→ 32.8.2.66:8888
10.6.6.63:3333 ──→ 32.8.2.66:9999

회신 (Return):
82.6.4.2:443 ──→ 10.6.6.61:2222
28.2.4.6:80 ──→ 10.6.6.62:3333
28.2.4.6:80 ──→ 10.6.6.63:3333


Port Forwarding (Port Mapping)

Port Forwarding 개념

정의: 특정 외부 포트의 트래픽을 내부 호스트와 포트로 연결

목적:

  • 외부에서 내부 서비스에 접근 가능하게 함
  • 여러 내부 서비스를 외부에 공개

Port Forwarding 예시

공개 IP: 200.1.1.10
공유기: 10.10.10.10/24

Port Forwarding 테이블:

외부 주소                    →  내부 주소
────────────────────────────────────────
200.1.1.10:80 (HTTP)       →  192.168.1.10:5000
200.1.1.10:21 (FTP)        →  192.168.1.20:5001
200.1.1.10:3389 (RDP)      →  192.168.1.30:5002

사용 시나리오:

1️⃣ HTTP 서비스
   외부: http://200.1.1.10:80
   내부: 192.168.1.10:5000 웹서버

2️⃣ FTP 서비스
   외부: ftp://200.1.1.10:21
   내부: 192.168.1.20:5001 FTP 서버

3️⃣ RDP 서비스
   외부: rdp://200.1.1.10:3389
   내부: 192.168.1.30:5002 원격 접속

Port Forwarding 설정

공유기 관리자 페이지에서 설정:

설정 항목:
- 외부 포트 (Public Port): 외부에서 접근하는 포트
- 내부 포트 (Private Port): 내부 호스트의 포트
- 내부 IP (Internal IP): 대상 호스트의 IP 주소
- 프로토콜 (Protocol): TCP/UDP/모두

예시:
외부 포트: 8080
내부 포트: 80
내부 IP: 192.168.1.10
프로토콜: TCP

효과:
외부 PC → 200.1.1.10:8080 접속
→ 공유기가 192.168.1.10:80으로 포워딩

NAT 테이블

NAT 테이블 상세 분석

공개 주소 (Public)          사설 주소 (Private)
────────────────────────────────────────────
200.10.10.10:80   ←→  192.168.1.10:80
30.1.120.8:50030  ←→  192.168.1.10:50030
200.10.10.10:443  ←→  192.168.1.20:443
30.1.120.8:443    ←→  192.168.1.20:443
200.10.10.10:22   ←→  192.168.1.30:22

변환 원리:
1️⃣ 내부 호스트가 외부로 패킷 송신
   (192.168.1.10:50030 → 외부 서버)
2️⃣ NAT가 송신지 IP를 변환
   (30.1.120.8:50030 → 외부 서버)
3️⃣ 응답이 돌아올 때
   (외부 서버 → 30.1.120.8:50030)
4️⃣ NAT가 수신지를 변환
   (외부 서버 → 192.168.1.10:50030)

📊 NAT 변환 프로세스

1️⃣ 내부 호스트 요청
   Source IP: 192.168.1.10
   Source Port: 54321
   Destination: 200.10.10.10:80

2️⃣ NAT가 테이블 조회
   → 192.168.1.10:54321과 일치하는 항목 확인
   → 없으면 새 항목 생성

3️⃣ 변환 규칙 적용
   Source IP: 30.1.120.8 (공개 IP로 변환)
   Source Port: 포트 할당
   Destination: 200.10.10.10:80 (유지)

4️⃣ 외부로 전송
   (30.1.120.8에서 200.10.10.10:80으로 요청)

5️⃣ 응답 수신
   Source: 200.10.10.10:80
   Destination: 30.1.120.8:할당포트

6️⃣ NAT 테이블 역변환
   Destination: 192.168.1.10:54321 (사설 IP로 변환)

7️⃣ 내부 호스트에게 전달
   192.168.1.10이 응답 수신

핵심 요약

NAT 정리 사항

  1. 공유기 3대 기능:

    • Routing (라우팅)
    • DHCP (주소 할당)
    • NAT (주소 변환)
  2. DHCP: 자동으로 사설 IP 할당

  3. NAT: 사설 IP ↔ 공개 IP 변환

  4. SNAT: 송신지 변환 (내부 → 외부)

  5. DNAT: 수신지 변환 (외부 → 내부)

  6. 사설 IP 범위:

    • 10.0.0.0/8 (A 클래스)
    • 172.16.0.0/12 (B 클래스)
    • 192.168.0.0/16 (C 클래스, 가정용 표준)
  7. PAT: IP + 포트 함께 변환

  8. Port Forwarding: 특정 포트를 내부로 연결

  9. NAT 테이블: 모든 변환 규칙 기록


실습을 위한 세팅




나머지 다음 이 시간에~~