648 words
3 mins
방화벽과 NAT

방화벽 기본#

  • 인바운드/아웃바운드 규칙
  • 기본 정책 (기본 차단 vs 기본 허용)

인바운드/아웃바운드란#

  • 인바운드: 외부 → 내부로 들어오는 트래픽
  • 아웃바운드: 내부 → 외부로 나가는 트래픽

assets/analogy_firewall.png

방화벽 비유

인바운드 예시#

  • 22/SSH 허용
  • 80/HTTP 허용
  • 그 외 차단

assets/firewall_rules.png

방화벽 룰 예시

방화벽 규칙 읽는 방법#

  • 조건: 출발지/목적지/포트/프로토콜
  • 행동: 허용(Allow) 또는 차단(Deny)
  • 보통 규칙은 위에서 아래로 검사한다.

방화벽 룰 읽기 쉬운 방법#

  • “누가(출발지)” → “어디로(목적지)” → “무슨 문(포트)” → “허용/차단”

NAT(Network Address Translation)#

사설 IP를 공인 IP로 변환하는 기술

NAT가 필요한 이유#

  • 내부 IP는 인터넷에서 직접 라우팅되지 않는다.
  • NAT가 공인 IP로 변환해 외부와 통신 가능하게 한다.

assets/nat_flow.png

NAT 변환 개념

SNAT(Source Network Address Translation)#

  • 내부 → 외부 (출발지 주소를 공인 IP로 변경)
[10.0.0.5] --(SNAT)--> [1.2.3.4]

DNAT(Destination Network Address Translation)#

  • 외부 → 내부 (목적지 주소/포트를 내부로 변경 = 포트포워딩)
[1.2.3.4:8080] --(DNAT)--> [10.0.0.5:80]

실습 1: 로컬 방화벽 확인#

macOS#

Terminal window
mac> sudo pfctl -sr | head -n 20

Windows#

Terminal window
win> Get-NetFirewallRule | select -First 5

Linux#

Terminal window
lin> sudo iptables -L | head -n 20

실습 2: 포트 차단 테스트 (Linux VM)#

VM2에서 8080 차단#

Terminal window
vm2> sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

VM1에서 접속#

Terminal window
vm1> curl http://10.0.2.20:8080

예상 결과#

  • 연결 실패 또는 timeout

복구#

Terminal window
vm2> sudo iptables -F

상태 기반 방화벽#

  • 연결 상태를 추적
  • 응답 패킷은 자동 허용 가능

실전 시나리오#

상황: 외부에서 내부 서비스 접속 필요#

  • DNAT 설정

OS별 포트 리스닝 확인#

macOS#

Terminal window
mac> lsof -iTCP -sTCP:LISTEN | head -n 5

Windows#

Terminal window
win> netstat -ano | find "LISTEN"

Linux#

Terminal window
lin> ss -lntp | head -n 5

Stateless vs Stateful#

  • Stateless: 패킷 단위 필터링
  • Stateful: 연결 상태를 추적

차이점#

  • Stateful은 응답 트래픽을 자동 허용 가능
  • Stateless는 룰이 많아지고 관리가 어렵다

실전 사례#

  • 사례 1: 외부 접속 불가 → 포트 포워딩 누락.
  • 사례 2: 내부 서비스 접근 실패 → 인바운드 차단.
  • 사례 3: 특정 포트만 차단 → 룰 순서 문제.

NAT 심화: PAT(포트 주소 변환)#

PAT는 여러 사설 IP를 하나의 공인 IP + 포트로 변환한다.

예시#

  • 내부 10.0.0.10:50000 → 공인 1.2.3.4:40001
  • 내부 10.0.0.11:50001 → 공인 1.2.3.4:40002

실무 포인트#

  • 대부분 가정/기업 NAT는 PAT 방식
  • 포트 충돌 관리가 중요

Comments

방화벽과 NAT
https://cheoran.github.io/posts/network-book/10-firewall-nat/
Author
Cheolhwan Kim
Published
2026-01-07
License
CC BY-NC-SA 4.0