๐Ÿ”€ NAT ์™„์ „ ์ •๋ณต โ€” ๊ณต์œ ๊ธฐ ์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€

@leekh8 ยท March 30, 2026 ยท 9 min read

์ด์ „ ๊ธ€์—์„œ OSI 7๊ณ„์ธต์„ ๋‹ค๋ค˜๋‹ค. 3๊ณ„์ธต(๋„คํŠธ์›Œํฌ)์€ IP ์ฃผ์†Œ๋กœ ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ณ„์ธต์ด๋ผ๊ณ  ์„ค๋ช…ํ–ˆ๋Š”๋ฐ, ์˜ค๋Š˜ ๋‹ค๋ฃฐ NAT๋Š” ๋ฐ”๋กœ ๊ทธ IP ์ฃผ์†Œ๋ฅผ ์ค‘๊ฐ„์— ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

์ง‘์—์„œ ๊ณต์œ ๊ธฐ ๋’ค์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ, ๊ฐ€์ƒ๋จธ์‹  ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐ€์ƒ๋จธ์‹ , ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” API ํ˜ธ์ถœ โ€” ์ด ๋ชจ๋“  ์ƒํ™ฉ์— NAT๊ฐ€ ์ˆจ์–ด ์žˆ๋‹ค.

NAT๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด "์™œ ๋‚ด VM์—์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€๋Š” ๊ฑด ๋˜๋Š”๋ฐ, ์™ธ๋ถ€์—์„œ VM์œผ๋กœ ์ ‘์†์ด ์•ˆ ๋˜์ง€?", "ํฌํŠธํฌ์›Œ๋”ฉ์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•˜์ง€?" ๊ฐ™์€ ์งˆ๋ฌธ์— ์Šค์Šค๋กœ ๋‹ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


NAT๊ฐ€ ์ƒ๊ฒจ๋‚œ ์ด์œ  โ€” IPv4 ๊ณ ๊ฐˆ ๋ฌธ์ œ

์ธํ„ฐ๋„ท์€ 32๋น„ํŠธ IPv4 ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 2ยณยฒ = ์•ฝ 43์–ต ๊ฐœ. 1980๋…„๋Œ€์— ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ธํ„ฐ๋„ท์ด ํญ๋ฐœ์ ์œผ๋กœ ์„ฑ์žฅํ•˜๋ฉด์„œ ์ฃผ์†Œ๊ฐ€ ๋ชจ์ž๋ผ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. 2011๋…„ IANA(๊ตญ์ œ์ธํ„ฐ๋„ท์ฃผ์†Œ๊ด€๋ฆฌ๊ธฐ๊ตฌ)๋Š” ๋งˆ์ง€๋ง‰ IPv4 ์ฃผ์†Œ ๋ธ”๋ก์„ ๋ฐฐ๋ถ„ํ–ˆ๋‹ค.

์‚ฌ์„ค IP ๋Œ€์—ญ์ด ์ƒ๊ธด ์ด์œ 

IPv4 ๊ณ ๊ฐˆ ๋ฌธ์ œ๋ฅผ ๋‹จ๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด RFC 1918์ด ๋“ฑ์žฅํ–ˆ๋‹ค. ์ธํ„ฐ๋„ท์—์„œ๋Š” ๋ผ์šฐํŒ…ํ•˜์ง€ ์•Š๋Š” "์‚ฌ์„ค ์ „์šฉ ๋Œ€์—ญ"์„ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค.

๋Œ€์—ญ ๋ฒ”์œ„ ์ฃผ๋กœ ์“ฐ์ด๋Š” ๊ณณ
10.0.0.0/8 10.0.0.0 ~ 10.255.255.255 ๊ธฐ์—… ๋‚ด๋ถ€๋ง
172.16.0.0/12 172.16.0.0 ~ 172.31.255.255 ์ค‘๊ฐ„ ๊ทœ๋ชจ ๋‚ด๋ถ€๋ง
192.168.0.0/16 192.168.0.0 ~ 192.168.255.255 ๊ฐ€์ •์šฉ ๊ณต์œ ๊ธฐ

์ด ๋Œ€์—ญ์˜ IP๋Š” ์ธํ„ฐ๋„ท ์ƒ์—์„œ ๋ผ์šฐํŒ…๋˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, 192.168.0.100์งœ๋ฆฌ ํŒจํ‚ท์ด ์ธํ„ฐ๋„ท ๋ฐฑ๋ณธ์— ๋“ค์–ด์˜ค๋ฉด ๊ทธ๋ƒฅ ๋ฒ„๋ ค์ง„๋‹ค.

๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด NAT๋‹ค. ์‚ฌ์„ค IP๋ฅผ ๊ณต์ธ IP๋กœ **๋ฒˆ์—ญ(Translation)**ํ•ด์„œ ์ธํ„ฐ๋„ท์— ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.


NAT์˜ ๊ธฐ๋ณธ ๋™์ž‘ ์›๋ฆฌ

NAT๋Š” IP ์ฃผ์†Œ(๊ทธ๋ฆฌ๊ณ  ํฌํŠธ ๋ฒˆํ˜ธ)๋ฅผ ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ๋ผ์šฐํ„ฐ(๋˜๋Š” ๋ฐฉํ™”๋ฒฝ)๊ฐ€ ํŒจํ‚ท์˜ ํ—ค๋”๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ๊ทธ ๋ณ€ํ™˜ ๊ธฐ๋ก์„ **NAT ํ…Œ์ด๋ธ”(Connection Tracking Table)**์— ์ €์žฅํ•ด๋‘”๋‹ค.

Src: 192.168.1.10:54321

Dst: 8.8.8.8:443
Src: 203.0.113.1:40001

Dst: 8.8.8.8:443
Src: 8.8.8.8:443

Dst: 203.0.113.1:40001
Src: 8.8.8.8:443

Dst: 192.168.1.10:54321
๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ

192.168.1.10:54321
NAT ๋ผ์šฐํ„ฐ

๊ณต์ธ IP: 203.0.113.1
์™ธ๋ถ€ ์„œ๋ฒ„

8.8.8.8:443

  1. ๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ๊ฐ€ 192.168.1.10:54321 โ†’ 8.8.8.8:443 ํŒจํ‚ท ์ „์†ก
  2. NAT ๋ผ์šฐํ„ฐ๊ฐ€ ์ถœ๋ฐœ์ง€ IPยทํฌํŠธ๋ฅผ 203.0.113.1:40001๋กœ ๊ต์ฒด (SNAT)
  3. ์™ธ๋ถ€ ์„œ๋ฒ„๋Š” 203.0.113.1:40001์—์„œ ์˜จ ๊ฒƒ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ์‘๋‹ต
  4. ์‘๋‹ต ํŒจํ‚ท์ด ๋ผ์šฐํ„ฐ์— ๋„์ฐฉํ•˜๋ฉด, NAT ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด ๋‹ค์‹œ 192.168.1.10:54321๋กœ ๋Œ๋ ค์คŒ

์ด ํ๋ฆ„์ด NAT์˜ ์ „๋ถ€๋‹ค. ํ•ต์‹ฌ์€ ๋ผ์šฐํ„ฐ๊ฐ€ ๋ณ€ํ™˜ ๊ธฐ๋ก์„ ๊ธฐ์–ตํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


NAT ํ…Œ์ด๋ธ” โ€” ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํ…Œ์ด๋ธ”

NAT๋Š” Statefulํ•˜๋‹ค. ์ฆ‰, ์–ด๋–ค ๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ๊ฐ€ ์–ด๋–ค ์™ธ๋ถ€ ์„œ๋ฒ„์™€ ํ†ต์‹  ์ค‘์ธ์ง€ ๊ธฐ๋ก์„ ์œ ์ง€ํ•œ๋‹ค.

๋‚ด๋ถ€ IP:ํฌํŠธ ๋ณ€ํ™˜๋œ IP:ํฌํŠธ ์™ธ๋ถ€ IP:ํฌํŠธ ์ƒํƒœ
192.168.1.10:54321 203.0.113.1:40001 8.8.8.8:443 ESTABLISHED
192.168.1.20:61000 203.0.113.1:40002 1.1.1.1:53 TIME_WAIT
192.168.1.10:55000 203.0.113.1:40003 142.250.0.1:80 SYN_SENT

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” conntrack ๋ช…๋ น์œผ๋กœ ์ด ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

# conntrack ํ…Œ์ด๋ธ” ์กฐํšŒ
sudo conntrack -L

# ํŠน์ • IP์˜ ์—ฐ๊ฒฐ๋งŒ ํ•„ํ„ฐ๋ง
sudo conntrack -L | grep 192.168.1.10

# ์‹ค์‹œ๊ฐ„ ์—ฐ๊ฒฐ ์ถ”์ 
sudo conntrack -E

SNAT vs DNAT โ€” ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ NAT

NAT์—๋Š” ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์–ด๋А ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พธ๋А๋ƒ์˜ ์ฐจ์ด๋‹ค.

SNAT (Source NAT) โ€” ์ถœ๋ฐœ์ง€ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พผ๋‹ค

๋‚ด๋ถ€ โ†’ ์™ธ๋ถ€ ๋ฐฉํ–ฅ์˜ ํŠธ๋ž˜ํ”ฝ์— ์ ์šฉ๋œ๋‹ค. ๊ฐ€์žฅ ํ”ํ•œ NAT๋‹ค. ๊ณต์œ ๊ธฐ์—์„œ ์ธํ„ฐ๋„ท์œผ๋กœ ๋‚˜๊ฐˆ ๋•Œ ์ผ์–ด๋‚˜๋Š” ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ด๋‹ค.

์ธํ„ฐ๋„ท
๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ (192.168.1.0/24)
Src: 192.168.1.10
Src: 192.168.1.20
Src: 203.0.113.1
์™ธ๋ถ€ ์„œ๋ฒ„

8.8.8.8
ํ˜ธ์ŠคํŠธ A

192.168.1.10
ํ˜ธ์ŠคํŠธ B

192.168.1.20
๋ผ์šฐํ„ฐ/๋ฐฉํ™”๋ฒฝ

SNAT ์ ์šฉ

๊ณต์ธIP: 203.0.113.1

์—ฌ๋Ÿฌ ๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต์ธ IP๋กœ ํ•ฉ์ณ์ ธ ๋‚˜๊ฐ„๋‹ค. ์ด๋•Œ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ๊ฐ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด๊ฒƒ์„ ํŠน๋ณ„ํžˆ PAT (Port Address Translation) ๋˜๋Š” IP Masquerade๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค iptables ์˜ˆ์‹œ:

# eth0๊ฐ€ ๊ณต์ธ IP๋ฅผ ๊ฐ€์ง„ ์ธํ„ฐํŽ˜์ด์Šค์ผ ๋•Œ
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# ๋˜๋Š” ๊ณ ์ • IP๋ผ๋ฉด
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1

DNAT (Destination NAT) โ€” ๋ชฉ์ ์ง€ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พผ๋‹ค

์™ธ๋ถ€ โ†’ ๋‚ด๋ถ€ ๋ฐฉํ–ฅ์˜ ํŠธ๋ž˜ํ”ฝ์— ์ ์šฉ๋œ๋‹ค. ํฌํŠธํฌ์›Œ๋”ฉ์ด ๋ฐ”๋กœ DNAT๋‹ค. ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์˜ ๋ชฉ์ ์ง€ IPยทํฌํŠธ๋ฅผ ๋‚ด๋ถ€ ์„œ๋ฒ„๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ
์ธํ„ฐ๋„ท
Dst: 203.0.113.1:80
Dst: 192.168.1.100:8080
์›น ์„œ๋ฒ„

192.168.1.100:8080
์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ

1.2.3.4
๋ผ์šฐํ„ฐ/๋ฐฉํ™”๋ฒฝ

DNAT ์ ์šฉ

๊ณต์ธIP: 203.0.113.1:80

๋ฆฌ๋ˆ…์Šค iptables ์˜ˆ์‹œ:

# ์™ธ๋ถ€์—์„œ 203.0.113.1:80์œผ๋กœ ์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋‚ด๋ถ€ ์›น์„œ๋ฒ„ 192.168.1.100:8080์œผ๋กœ ์ „๋‹ฌ
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
  -j DNAT --to-destination 192.168.1.100:8080

# ํฌํŠธํฌ์›Œ๋”ฉ์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋ ค๋ฉด IP ํฌ์›Œ๋”ฉ๋„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค
echo 1 > /proc/sys/net/ipv4/ip_forward

ํŒจํ‚ท์ด ์ง€๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ โ€” iptables Hooks

๋ฆฌ๋ˆ…์Šค์˜ NAT๋Š” Netfilter ํ”„๋ ˆ์ž„์›Œํฌ ์œ„์—์„œ ๋™์ž‘ํ•œ๋‹ค. ํŒจํ‚ท์ด ์ปค๋„์„ ํ†ต๊ณผํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ํ›…(Hook) ํฌ์ธํŠธ๋ฅผ ์ง€๋‚˜๋Š”๋ฐ, NAT๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์‹œ์ ์— ์ ์šฉ๋œ๋‹ค.

์™ธ๋ถ€๋กœ ํฌ์›Œ๋”ฉ
๋กœ์ปฌ ์ฒ˜๋ฆฌ
ํŒจํ‚ท ์ˆ˜์‹  (NIC)
PREROUTING

(DNAT ์ ์šฉ ์‹œ์ )
๋ผ์šฐํŒ… ๊ฒฐ์ •
FORWARD
POSTROUTING

(SNAT ์ ์šฉ ์‹œ์ )
๋กœ์ปฌ ํ”„๋กœ์„ธ์Šค (INPUT)
ํŒจํ‚ท ์†ก์‹ 

  • PREROUTING: ํŒจํ‚ท์ด ๋ผ์šฐํŒ… ๊ฒฐ์ • ์ „์— ํ†ต๊ณผํ•˜๋Š” ์ง€์  โ†’ DNAT๋Š” ์—ฌ๊ธฐ์„œ ์ ์šฉ๋œ๋‹ค. ๋ชฉ์ ์ง€๋ฅผ ๋ฐ”๊ฟ”์•ผ ๋ผ์šฐํŒ…์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • POSTROUTING: ํŒจํ‚ท์ด ์ตœ์ข… ์†ก์‹  ์ง์ „์— ํ†ต๊ณผํ•˜๋Š” ์ง€์  โ†’ SNAT๋Š” ์—ฌ๊ธฐ์„œ ์ ์šฉ๋œ๋‹ค. ๋ผ์šฐํŒ…์ด ๋๋‚œ ํ›„ ์ถœ๋ฐœ์ง€ ์ฃผ์†Œ๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

ํฌํŠธํฌ์›Œ๋”ฉ ์‹ค์ „ โ€” ์™œ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋‚˜

ํฌํŠธํฌ์›Œ๋”ฉ ์„ค์ •์„ ํ•ด๋„ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋Œ€๋ถ€๋ถ„์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋‹ค.

1. IP ํฌ์›Œ๋”ฉ์ด ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ

๋ฆฌ๋ˆ…์Šค ์ปค๋„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํŒจํ‚ท์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

# ํ˜„์žฌ ์„ค์ • ํ™•์ธ
cat /proc/sys/net/ipv4/ip_forward
# 0์ด๋ฉด ํฌ์›Œ๋”ฉ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ

# ์ฆ‰์‹œ ํ™œ์„ฑํ™” (์žฌ๋ถ€ํŒ… ํ›„ ์ดˆ๊ธฐํ™”๋จ)
echo 1 > /proc/sys/net/ipv4/ip_forward

# ์˜๊ตฌ ์ ์šฉ
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

2. FORWARD ์ฒด์ธ์—์„œ ํŒจํ‚ท์ด ์ฐจ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ

iptables์˜ FORWARD ์ฒด์ธ ๊ธฐ๋ณธ ์ •์ฑ…์ด DROP์ธ ๊ฒฝ์šฐ, DNAT๋กœ ๋ชฉ์ ์ง€๋ฅผ ๋ฐ”๊ฟ”๋„ ์ตœ์ข… ์ „๋‹ฌ์ด ๋ง‰ํžŒ๋‹ค.

# FORWARD ์ฒด์ธ ํ˜„์žฌ ์ •์ฑ… ํ™•์ธ
iptables -L FORWARD --line-numbers

# ํŠน์ • ๊ฒฝ๋กœ์˜ ํฌ์›Œ๋”ฉ์„ ํ—ˆ์šฉ
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

3. ํ—ค์–ดํ•€ NAT (Hairpin NAT) ๋ฌธ์ œ

๊ฐ™์€ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์•ˆ์—์„œ ๊ณต์ธ IP๋กœ ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚ด๋ถ€์˜ 192.168.1.10์ด ๊ณต์ธ IP 203.0.113.1:80์œผ๋กœ ์ ‘๊ทผํ•˜๋ ค๋Š” ์ƒํ™ฉ. ํŒจํ‚ท์ด ๋ผ์šฐํ„ฐ์— ๋„๋‹ฌํ•˜๋”๋ผ๋„, ์‘๋‹ต์ด ๋‚ด๋ถ€ ์„œ๋ฒ„์—์„œ ์ง์ ‘ ๋Œ์•„์˜ค๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— NAT ํ…Œ์ด๋ธ” ๊ธฐ๋ก๊ณผ ๋งž์ง€ ์•Š์•„ ์—ฐ๊ฒฐ์ด ๋Š๊ธด๋‹ค.

ํ•ด๊ฒฐ๋ฒ•: Hairpin NAT (NAT ๋ฃจํ”„๋ฐฑ) ์„ค์ • ๋˜๋Š” ๋‚ด๋ถ€ DNS๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ IP๋กœ ์ง์ ‘ ์ ‘๊ทผํ•˜๋„๋ก ๋ถ„๋ฆฌ.


์ค‘์ฒฉ NAT โ€” VM ์•ˆ์˜ VM ๋ฌธ์ œ

๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์—์„œ ์ž์ฃผ ๊ฒช๋Š” ์ƒํ™ฉ์ด๋‹ค. ํ˜ธ์ŠคํŠธ PC๊ฐ€ ๊ณต์œ ๊ธฐ ๋’ค์— ์žˆ๊ณ , ๊ทธ ํ˜ธ์ŠคํŠธ ์œ„์— VMware๋‚˜ VirtualBox๋กœ ๊ฐ€์ƒ๋จธ์‹ ์ด ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋‹ค.

๊ณต์ธ IP
์‚ฌ์„คIP ๋ณ€ํ™˜
ํ˜ธ์ŠคํŠธIP ๋ณ€ํ™˜
VM IP
์ธํ„ฐ๋„ท

(๊ณต์ธ IP)
๊ณต์œ ๊ธฐ

NATโ‘ 
ํ˜ธ์ŠคํŠธ PC

192.168.1.10
VMware/VirtualBox

NATโ‘ก
๊ฐ€์ƒ๋จธ์‹ 

172.16.0.2

VM์—์„œ ๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ (outbound): 172.16.0.2 โ†’ VMware NAT โ†’ 192.168.1.10 โ†’ ๊ณต์œ ๊ธฐ NAT โ†’ ๊ณต์ธ IP โ†’ ์ธํ„ฐ๋„ท

์ด ๋ฐฉํ–ฅ์€ ์ž˜ ๋œ๋‹ค. NAT๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๋ฉด์„œ ์—ฐ๊ฒฐ์„ ์ถ”์ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์™ธ๋ถ€์—์„œ VM์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ๋กœ (inbound): ๊ณต์œ ๊ธฐ์—์„œ ํฌํŠธํฌ์›Œ๋”ฉ โ†’ ํ˜ธ์ŠคํŠธ PC โ†’ VMware์—์„œ ๋‹ค์‹œ ํฌํŠธํฌ์›Œ๋”ฉ โ†’ VM

๋‘ ๋‹จ๊ณ„ ํฌํŠธํฌ์›Œ๋”ฉ์ด ํ•„์š”ํ•˜๋‹ค. ๊ณต์œ ๊ธฐ์—์„œ ํ˜ธ์ŠคํŠธ PC๋กœ, ๋‹ค์‹œ VMware์—์„œ VM์œผ๋กœ. ํ•œ ๋‹จ๊ณ„๋ผ๋„ ๋น ์ง€๋ฉด ์—ฐ๊ฒฐ์ด ์•ˆ ๋œ๋‹ค.

์ค‘์ฒฉ NAT์—์„œ ํฌํŠธํฌ์›Œ๋”ฉ ์„ค์ •ํ•˜๊ธฐ

๊ณต์ธ IP:8080 โ†’ (๊ณต์œ ๊ธฐ ํฌํŠธํฌ์›Œ๋”ฉ) โ†’ 192.168.1.10:8080
192.168.1.10:8080 โ†’ (VMware ํฌํŠธํฌ์›Œ๋”ฉ) โ†’ 172.16.0.2:80

VMware์—์„œ ํฌํŠธํฌ์›Œ๋”ฉ ์„ค์ • ์œ„์น˜:

  • VMware Workstation: Edit โ†’ Virtual Network Editor โ†’ NAT ํƒญ โ†’ Port Forwarding
  • VirtualBox: ์„ค์ • โ†’ ๋„คํŠธ์›Œํฌ โ†’ ๊ณ ๊ธ‰ โ†’ ํฌํŠธํฌ์›Œ๋”ฉ

NAT์™€ ๋ณด์•ˆ โ€” ๋ฐฉํ™”๋ฒฝ ์—ญํ• ๋„ ํ•œ๋‹ค

NAT๋Š” ์›๋ž˜ ๋ณด์•ˆ ์žฅ์น˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ์—ญํ• ์„ ํ•œ๋‹ค.

์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ NAT ํ…Œ์ด๋ธ”์— ๊ธฐ๋ก์ด ์žˆ์–ด์•ผ๋งŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ก์ด ์—†๋Š” ํŒจํ‚ท์€ ์–ด๋””๋กœ ์ „๋‹ฌํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๋ฒ„๋ ค์ง„๋‹ค. ์ด๊ฒƒ์ด NAT์˜ ์•”๋ฌต์ ์ธ ์ธ๋ฐ”์šด๋“œ ์ฐจ๋‹จ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Š” ์ง„์งœ ๋ฐฉํ™”๋ฒฝ์ด ์•„๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

NAT์˜ ๋ณด์•ˆ ํ•œ๊ณ„

โ‘  ๋‚ด๋ถ€์—์„œ ์‹œ์ž‘๋œ ์—ฐ๊ฒฐ์€ ๋ฌด์กฐ๊ฑด ํ†ต๊ณผํ•œ๋‹ค ๋‚ด๋ถ€ ํ˜ธ์ŠคํŠธ๊ฐ€ ์•…์„ฑ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๋ฉด, ๊ทธ ์ดํ›„ ํŠธ๋ž˜ํ”ฝ์€ NAT๋ฅผ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•œ๋‹ค. C2(Command & Control) ํ†ต์‹  ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์ด ๋ฐฉ์‹์œผ๋กœ ๋ฐฉ์–ด๋ฅผ ์šฐํšŒํ•œ๋‹ค.

โ‘ก ALG (Application Layer Gateway) ๋ฌธ์ œ FTP, SIP ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์€ ํŽ˜์ด๋กœ๋“œ ์•ˆ์— IP ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค. NAT๋Š” IP ํ—ค๋”๋งŒ ๋ฐ”๊พธ๊ธฐ ๋•Œ๋ฌธ์—, ํŽ˜์ด๋กœ๋“œ ์•ˆ์˜ IP ์ฃผ์†Œ๋Š” ๊ทธ๋Œ€๋กœ๋‹ค. ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ALG๊ฐ€ ๋”ฐ๋กœ ํ•„์š”ํ•˜๊ณ , ์ด๊ฒƒ์ด ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

โ‘ข NAT Traversal โ€” ์šฐํšŒ ๊ธฐ์ˆ ๋“ค UDP Hole Punching, STUN, TURN ๊ฐ™์€ ๊ธฐ์ˆ ๋“ค์€ NAT๋ฅผ ์šฐํšŒํ•ด์„œ P2P ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. WebRTC, VoIP, ๊ฒŒ์ž„ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. NAT๊ฐ€ ์žˆ์–ด๋„ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.


IPv6์™€ NAT โ€” NAT๊ฐ€ ์—†์–ด๋„ ๋˜๋Š” ์„ธ์ƒ

IPv6๋Š” 128๋น„ํŠธ ์ฃผ์†Œ ๊ณต๊ฐ„์œผ๋กœ 2ยนยฒโธ โ‰ˆ 340์–ธ๋ฐ์‹ค๋ฆฌ์˜จ ๊ฐœ์˜ ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ง€๊ตฌ์ƒ์˜ ๋ชจ๋“  ๋ชจ๋ž˜์•Œ์— IP๋ฅผ ์ค˜๋„ ๋‚จ๋Š” ์ˆ˜์ค€์ด๋‹ค.

IPv6 ํ™˜๊ฒฝ์—์„œ๋Š” ๋ชจ๋“  ๊ธฐ๊ธฐ๊ฐ€ ๊ณ ์œ ํ•œ ๊ณต์ธ IP๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ NAT๊ฐ€ ํ•„์š” ์—†๋‹ค. ๋ฐฉํ™”๋ฒฝ์€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜์ง€๋งŒ, ์ฃผ์†Œ ๋ณ€ํ™˜ ์ž์ฒด๋Š” ๋ถˆํ•„์š”ํ•ด์ง„๋‹ค.

ํ•˜์ง€๋งŒ ํ˜„์‹ค์—์„œ๋Š” ์•„์ง IPv4/IPv6 ํ˜ผ์šฉ ํ™˜๊ฒฝ์ด ๋Œ€๋ถ€๋ถ„์ด๊ณ , NAT64 ๊ฐ™์€ ๋ณ€ํ™˜ ๊ธฐ์ˆ ์ด ์—ฌ์ „ํžˆ ์“ฐ์ธ๋‹ค. IPv4 ์„ธ๊ณ„์™€ IPv6 ์„ธ๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์ด๋‹ค.


์‹ค์ „ ๋””๋ฒ„๊น… ์น˜ํŠธ์‹œํŠธ

NAT ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ์œ ์šฉํ•œ ๋ช…๋ น์–ด ๋ชจ์Œ์ด๋‹ค.

# conntrack ํ…Œ์ด๋ธ” ๋ณด๊ธฐ (ํ˜„์žฌ NAT ์—ฐ๊ฒฐ ๋ชฉ๋ก)
sudo conntrack -L

# iptables NAT ๊ทœ์น™ ํ™•์ธ
sudo iptables -t nat -L -n -v --line-numbers

# IP ํฌ์›Œ๋”ฉ ์ƒํƒœ ํ™•์ธ
cat /proc/sys/net/ipv4/ip_forward

# ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ํ™•์ธ
ip route show

# ํŠน์ • ํŒจํ‚ท์ด ์–ด๋–ค iptables ์ฒด์ธ์„ ํƒ€๋Š”์ง€ ์ถ”์ 
sudo iptables -t raw -A PREROUTING -s 1.2.3.4 -j TRACE
sudo dmesg | grep TRACE

# tcpdump๋กœ NAT ์ „/ํ›„ ํŒจํ‚ท ์บก์ฒ˜
# ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค (๋ณ€ํ™˜ ํ›„)
sudo tcpdump -i eth0 -n host 8.8.8.8
# ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค (๋ณ€ํ™˜ ์ „)
sudo tcpdump -i eth1 -n host 192.168.1.10

์ •๋ฆฌ

๊ฐœ๋… ํ•œ ์ค„ ์š”์•ฝ
NAT IP ์ฃผ์†Œ(+ ํฌํŠธ)๋ฅผ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์„ค๋ง๊ณผ ๊ณต์ธ๋ง์„ ์—ฐ๊ฒฐ
SNAT ์ถœ๋ฐœ์ง€ IP๋ฅผ ๋ฐ”๊พผ๋‹ค (๋‚ด๋ถ€ โ†’ ์™ธ๋ถ€, POSTROUTING)
DNAT ๋ชฉ์ ์ง€ IP๋ฅผ ๋ฐ”๊พผ๋‹ค (์™ธ๋ถ€ โ†’ ๋‚ด๋ถ€, PREROUTING)
Masquerade SNAT์˜ ๋™์  ๋ฒ„์ „, ๊ณต์ธ IP๊ฐ€ ์œ ๋™์ ์ผ ๋•Œ ์‚ฌ์šฉ
NAT ํ…Œ์ด๋ธ” ๋ณ€ํ™˜ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” Stateful ํ…Œ์ด๋ธ” (conntrack)
ํฌํŠธํฌ์›Œ๋”ฉ DNAT์˜ ํ™œ์šฉ โ€” ์™ธ๋ถ€ ํฌํŠธ๋ฅผ ๋‚ด๋ถ€ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ
์ค‘์ฒฉ NAT VM ์•ˆ์˜ VM์ฒ˜๋Ÿผ NAT๊ฐ€ ์—ฌ๋Ÿฌ ๊ฒน ์Œ“์ด๋Š” ์ƒํ™ฉ

NAT๋Š” "IP ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ธฐ์ˆ "์ด๋ผ๋Š” ๋‹จ์ˆœํ•œ ๊ฐœ๋…์—์„œ ์ถœ๋ฐœํ•˜์ง€๋งŒ, ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™, ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ, ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์ด ๋ชจ๋‘ ๋งž๋ฌผ๋ ค์•ผ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•œ๋‹ค. ๋ญ”๊ฐ€ ์—ฐ๊ฒฐ์ด ์•ˆ ๋œ๋‹ค๋ฉด, ํŒจํ‚ท์ด ์ด ๋ณ€ํ™˜ ๊ณผ์ • ์ค‘ ์–ด๋””์„œ ๋ง‰ํžˆ๋Š”์ง€๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด๋‹ค.


์ด ์‹œ๋ฆฌ์ฆˆ์˜ ๋‹ค์Œ ๊ธ€: DNS โ€” "๋„๋ฉ”์ธ์„ IP๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ „ํ™”๋ฒˆํ˜ธ๋ถ€"๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋‹ค. UDP 53๋ฒˆ ํฌํŠธ, ์žฌ๊ท€ ์ฟผ๋ฆฌ, ์บ์‹ฑ, TTL, ๊ทธ๋ฆฌ๊ณ  DNS๊ฐ€ ๋ณด์•ˆ์—์„œ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๊นŒ์ง€ ๋‹ค๋ฃฌ๋‹ค.

@leekh8
๋ณด์•ˆ, ์›น ๊ฐœ๋ฐœ, Python์„ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ