์ด์ ๊ธ์์ 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)**์ ์ ์ฅํด๋๋ค.
- ๋ด๋ถ ํธ์คํธ๊ฐ
192.168.1.10:54321 โ 8.8.8.8:443ํจํท ์ ์ก - NAT ๋ผ์ฐํฐ๊ฐ ์ถ๋ฐ์ง IPยทํฌํธ๋ฅผ
203.0.113.1:40001๋ก ๊ต์ฒด (SNAT) - ์ธ๋ถ ์๋ฒ๋
203.0.113.1:40001์์ ์จ ๊ฒ์ผ๋ก ์ธ์ํ๊ณ ์๋ต - ์๋ต ํจํท์ด ๋ผ์ฐํฐ์ ๋์ฐฉํ๋ฉด, 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 -ESNAT vs DNAT โ ๋ฐฉํฅ์ด ๋ค๋ฅธ ๋ ๊ฐ์ง NAT
NAT์๋ ํฌ๊ฒ ๋ ์ข ๋ฅ๊ฐ ์๋ค. ์ด๋ ์ฃผ์๋ฅผ ๋ฐ๊พธ๋๋์ ์ฐจ์ด๋ค.
SNAT (Source NAT) โ ์ถ๋ฐ์ง ์ฃผ์๋ฅผ ๋ฐ๊พผ๋ค
๋ด๋ถ โ ์ธ๋ถ ๋ฐฉํฅ์ ํธ๋ํฝ์ ์ ์ฉ๋๋ค. ๊ฐ์ฅ ํํ NAT๋ค. ๊ณต์ ๊ธฐ์์ ์ธํฐ๋ท์ผ๋ก ๋๊ฐ ๋ ์ผ์ด๋๋ ๋ฐ๋ก ๊ทธ๊ฒ์ด๋ค.
์ฌ๋ฌ ๋ด๋ถ ํธ์คํธ๊ฐ ํ๋์ ๊ณต์ธ 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.1DNAT (Destination NAT) โ ๋ชฉ์ ์ง ์ฃผ์๋ฅผ ๋ฐ๊พผ๋ค
์ธ๋ถ โ ๋ด๋ถ ๋ฐฉํฅ์ ํธ๋ํฝ์ ์ ์ฉ๋๋ค. ํฌํธํฌ์๋ฉ์ด ๋ฐ๋ก DNAT๋ค. ์ธ๋ถ์์ ๋ค์ด์ค๋ ํจํท์ ๋ชฉ์ ์ง IPยทํฌํธ๋ฅผ ๋ด๋ถ ์๋ฒ๋ก ๋ฐ๊ฟ์ค๋ค.
๋ฆฌ๋ ์ค 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๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ ์ ์ ์ฉ๋๋ค.
- 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 -p2. 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 ACCEPT3. ํค์ดํ 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๋ก ๊ฐ์๋จธ์ ์ด ์ฌ๋ผ๊ฐ ์๋ ๊ฒฝ์ฐ๋ค.
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:80VMware์์ ํฌํธํฌ์๋ฉ ์ค์ ์์น:
- 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๊ฐ ๋ณด์์์ ์ผ๋ง๋ ์ค์ํ์ง๊น์ง ๋ค๋ฃฌ๋ค.
