| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- VMWARE#INSTALL#설치
- 29기
- DVWA#INSTALL#github#security#kali#linux
- 보고서
- #루키즈
- 모듈프로젝트
- Case Study
- sk shieldus
- 클라우드 보안 기술
- 개인정보보호
- 인프라 활용을 위한 파이썬
- Kali#Linux#KALI#LINUX#INSTALL#github#설치
- rocky linux#siem#project#threat detection#soc#onpremise#ids#python#csv#pipeline#kali linux#DVWA#security monitoring
- DVWA#Brute#Force#Attack#Test#Kali#Linux#Medium#Level#sleep
- 클라우드기반 보안 시스템 구축/운영 실무
- 루키즈
- 모듈 프로젝트
- AI #취업
- 모의침투
- Foxyproxy#install#setting#firefox
- sk 쉴더스 루키즈
- 기술 특강 및 OT
- kisa #보안관제
- CERT
- 시스템-네트워크 보안 기술
- 애플리케이션 보안 기술
- 쉴더스
- Kali#Linux#Brute#Force#Attack#Test#DVWA#Hacking#Low#무차별#대입#공격#해킹
- 클라우드 기반
- 클라우드 보안 기반
- Today
- Total
이것저것
[SK shieldus Rookies 29기] 14일차 본문
네트워크 패킷 분석의 필수 스킬
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.1Capture 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/16Capture Filter - 브로드캐스트/멀티캐스트
Capture Filter 문법:
· ip broadcast (IPv4 브로드캐스트)
· ip multicast (IPv4 멀티캐스트)
· dst host ff02::1 (IPv6 멀티캐스트)
· dst host ff02::2 (IPv6 특정 멀티캐스트)예시:
브로드캐스트 패킷만 캡처:
→ ip broadcast
멀티캐스트 패킷만 캡처:
→ ip multicastCapture 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 22Capture 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 443Display 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.1Display 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 > 1Display 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
사용 방법:
- Analyze 메뉴 → Display Filter Expression
- 원하는 프로토콜 선택
- 필드 선택
- 비교 연산자 선택
- 값 입력
- 필터 자동 생성
예시:
Analyze → Display Filter Expression
Protocol: TCP
Field: Source Port
Operator: ==
Value: 443
결과: tcp.srcport == 443Context 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.250Stream Follow (스트림 추적)
Stream Follow란?
정의: 여러 패킷의 데이터를 통합하여 읽기 쉬운 형식으로 재구성
4가지 유형:
- TCP Stream
- UDP Stream
- SSL Stream
- 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.exeTShark 기본 명령어
① 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 필터링
Capture vs Display:
- Capture는 캡처 시, Display는 분석 시
주소 필터:
- host / net / ether host
포트 필터:
- port / tcp port / udp port
논리 연산:
- Capture: and / or / not
- Display: && / || / !
Display Filter 연산자:
- == (같다) / != (다르다) / > < >= <=
Capture vs Display 문법 비교:
- host 10.0.0.1 vs ip.addr == 10.0.0.1
Conversation Filter:
- 특정 호스트 간 통신만 추출
Stream Follow:
- 여러 패킷을 하나의 통신으로 재구성
Expert Information:
- 이상 패킷 자동 감지
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.10SNAT (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.2552️⃣ 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.2553️⃣ 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 정리 사항
공유기 3대 기능:
- Routing (라우팅)
- DHCP (주소 할당)
- NAT (주소 변환)
DHCP: 자동으로 사설 IP 할당
NAT: 사설 IP ↔ 공개 IP 변환
SNAT: 송신지 변환 (내부 → 외부)
DNAT: 수신지 변환 (외부 → 내부)
사설 IP 범위:
- 10.0.0.0/8 (A 클래스)
- 172.16.0.0/12 (B 클래스)
- 192.168.0.0/16 (C 클래스, 가정용 표준)
PAT: IP + 포트 함께 변환
Port Forwarding: 특정 포트를 내부로 연결
NAT 테이블: 모든 변환 규칙 기록
실습을 위한 세팅



나머지 다음 이 시간에~~
'SK Shieldus Rookies 29' 카테고리의 다른 글
| [SK shieldus Rookies 29기] 16일차 (0) | 2025.12.05 |
|---|---|
| [SK shieldus Rookies 29기] 15일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 13일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 12일차 (0) | 2025.12.04 |
| [SK shieldus Rookies 29기] 11일차 (0) | 2025.12.04 |


