๊ด€๋ฆฌ ๋ฉ”๋‰ด

ReasonJun

Docker ํŠน์ • ํฌํŠธ๋งŒ ์™ธ๋ถ€ ์ ‘์†์ด ์•ˆ ๋  ๋•Œ: iptables NAT ๋ฌดํ•œ ๋ฃจํ”„ ํ•ด๊ฒฐ๊ธฐ ๋ณธ๋ฌธ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

Docker ํŠน์ • ํฌํŠธ๋งŒ ์™ธ๋ถ€ ์ ‘์†์ด ์•ˆ ๋  ๋•Œ: iptables NAT ๋ฌดํ•œ ๋ฃจํ”„ ํ•ด๊ฒฐ๊ธฐ

ReasonJun 2025. 7. 5. 21:19
728x90

๐Ÿšจ ๋ฌธ์ œ ์ƒํ™ฉ

Docker๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋˜ ์ค‘ ๊ธฐ๋ฌ˜ํ•œ ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค:

  • 43001, 43030 ํฌํŠธ: ์™ธ๋ถ€ ์ ‘์† โœ… ์ •์ƒ
  • 43000 ํฌํŠธ: ์™ธ๋ถ€ ์ ‘์† โŒ ๋ถˆ๊ฐ€๋Šฅ
  • localhost:43000: ๋‚ด๋ถ€ ์ ‘์† โœ… ์ •์ƒ

๋” ์ด์ƒํ•œ ๊ฑด, Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ์ •์ƒ ์‹คํ–‰ ์ค‘์ด๊ณ , ํฌํŠธ๋„ ์ œ๋Œ€๋กœ ๋ฆฌ์Šค๋‹ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ์ ์ด๋‹ค.

๐Ÿ” ์ง„๋‹จ ๊ณผ์ •

1. ๊ธฐ๋ณธ ์ƒํƒœ ํ™•์ธ

# ํฌํŠธ ๋ฆฌ์Šค๋‹ ์ƒํƒœ ํ™•์ธ
$ netstat -tuln | grep 43000
tcp6       0      0 :::43000                :::*                    LISTEN

# Docker ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธ  
$ docker ps | grep 43000
8a5bce7ee59f   aimfuse-web   "docker-entrypoint.s…"   Up 5 days (unhealthy)   0.0.0.0:43000->3000/tcp

# ๋‚ด๋ถ€ ์ ‘์† ํ…Œ์ŠคํŠธ
$ curl -v http://localhost:43000/api/public/health
< HTTP/1.1 200 OK
{"status":"ok"}

์ปจํ…Œ์ด๋„ˆ๋Š” unhealthy ์ƒํƒœ์˜€์ง€๋งŒ, API๋Š” ์ •์ƒ ์‘๋‹ตํ–ˆ๋‹ค. ๐Ÿค”

2. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ํ™•์ธ

# UFW ์ƒํƒœ ํ™•์ธ
$ sudo ufw status verbose
Status: active
Default: allow (incoming), allow (outgoing), allow (routed)

# iptables ํ™•์ธ
$ sudo iptables -L -n -v | grep 43000
# ํŠน๋ณ„ํ•œ ์ฐจ๋‹จ ๊ทœ์น™ ์—†์Œ

UFW๋Š” ๊ธฐ๋ณธ ์ •์ฑ…์ด allow๋ผ์„œ ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์˜€๋‹ค.

3. NAT ํ…Œ์ด๋ธ” ํ™•์ธ - ๋ฌธ์ œ ๋ฐœ๊ฒฌ! ๐ŸŽฏ

$ sudo iptables -t nat -L -n -v --line-numbers | grep -A 10 -B 10 "43000\|3000"

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source    destination
2    REDIRECT   tcp  --  0.0.0.0/0  0.0.0.0/0    tcp dpt:3000 redir ports 43000
3    REDIRECT   tcp  --  0.0.0.0/0  0.0.0.0/0    tcp dpt:43000 redir ports 3000

๐Ÿ’ก ๋ฌธ์ œ ์›์ธ

NAT ํ…Œ์ด๋ธ”์—์„œ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค!

3000 ํฌํŠธ → 43000 ํฌํŠธ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
43000 ํฌํŠธ → 3000 ํฌํŠธ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

์ด ๋‘ ๊ทœ์น™์ด ์„œ๋กœ๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•˜๋ฉด์„œ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ ธ, ๊ฒฐ๊ตญ 43000 ํฌํŠธ๋กœ์˜ ์™ธ๋ถ€ ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

๐Ÿ”ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฌธ์ œ๊ฐ€ ๋˜๋Š” NAT ๊ทœ์น™๋“ค์„ ์ œ๊ฑฐํ–ˆ๋‹ค:

# ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ทœ์น™ ์ œ๊ฑฐ (๋ผ์ธ ๋ฒˆํ˜ธ ํ™•์ธ ํ›„)
$ sudo iptables -t nat -D PREROUTING 3
$ sudo iptables -t nat -D PREROUTING 2

# ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ
$ sudo iptables -t nat -L -n -v | grep -A 5 -B 5 "43000\|3000"
# ์ด์ œ Docker์˜ ์ •์ƒ์ ์ธ DNAT ๊ทœ์น™๋งŒ ๋‚จ์Œ

โœ… ๊ฒฐ๊ณผ

  • ์ œ๊ฑฐ๋œ ๊ทœ์น™: ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋งŒ๋“œ๋Š” REDIRECT ๊ทœ์น™๋“ค
  • ์œ ์ง€๋œ ๊ทœ์น™: Docker์˜ ์ •์ƒ์ ์ธ ํฌํŠธ ํฌ์›Œ๋”ฉ (43000 → 172.20.0.6:3000)
  • ์™ธ๋ถ€ ์ ‘์†: ์ •์ƒํ™”! ๐ŸŽ‰

๐Ÿ“ ๊ตํ›ˆ๊ณผ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์„๊นŒ?

์•„๋งˆ๋„ ๊ณผ๊ฑฐ์— ํฌํŠธ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ…Œ์ŠคํŠธํ•˜๋‹ค๊ฐ€ ์ž˜๋ชป๋œ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , ์ด๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

ํ–ฅํ›„ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  1. ํฌํŠธ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ ๊ฒ€ ์ˆœ์„œ:
    # 1. ํฌํŠธ ๋ฆฌ์Šค๋‹ ํ™•์ธ netstat -tuln | grep [ํฌํŠธ๋ฒˆํ˜ธ]
    # 2. Docker ์ƒํƒœ ํ™•์ธ docker ps | grep [ํฌํŠธ๋ฒˆํ˜ธ]
    # 3. ๋‚ด๋ถ€ ์ ‘์† ํ…Œ์ŠคํŠธ curl -v http://localhost:[ํฌํŠธ๋ฒˆํ˜ธ]
    # 4. iptables ์ผ๋ฐ˜ ๊ทœ์น™ ํ™•์ธ sudo iptables -L -n -v | grep [ํฌํŠธ๋ฒˆํ˜ธ]
    # 5. NAT ํ…Œ์ด๋ธ” ํ™•์ธ โš ๏ธ ์ค‘์š”! sudo iptables -t nat -L -n -v | grep [ํฌํŠธ๋ฒˆํ˜ธ]
  2. iptables ๊ทœ์น™ ์ถ”๊ฐ€ ์‹œ ์ฃผ์˜์‚ฌํ•ญ:
    • NAT ๊ทœ์น™ ์ถ”๊ฐ€ ์ „ ๊ธฐ์กด ๊ทœ์น™ ํ™•์ธ
    • ํ…Œ์ŠคํŠธ ํ›„ ๋ถˆํ•„์š”ํ•œ ๊ทœ์น™์€ ์ฆ‰์‹œ ์ œ๊ฑฐ
    • ๊ทœ์น™ ์ถ”๊ฐ€ ์‹œ ๋ฌธ์„œํ™” ๋˜๋Š” ์ฃผ์„ ๋‚จ๊ธฐ๊ธฐ
  3. ์ •๊ธฐ์ ์ธ ์ ๊ฒ€:
  4. # NAT ํ…Œ์ด๋ธ” ์ „์ฒด ํ™•์ธ sudo iptables -t nat -L -n -v --line-numbers

๐ŸŽฏ ํ•ต์‹ฌ ์ •๋ฆฌ

"ํŠน์ • ํฌํŠธ๋งŒ ์™ธ๋ถ€ ์ ‘์†์ด ์•ˆ ๋œ๋‹ค๋ฉด, iptables NAT ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜์ž!"

์ผ๋ฐ˜์ ์ธ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™๋ฟ๋งŒ ์•„๋‹ˆ๋ผ NAT ํ…Œ์ด๋ธ”์˜ REDIRECT ๊ทœ์น™๋„ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ํŠนํžˆ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ƒํ˜ธ ์ฐธ์กฐ ๊ทœ์น™์ด ์žˆ๋Š”์ง€ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด์ž.

์ด๋ฒˆ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ ํ•ด๊ฒฐ ์‹œ NAT ํ…Œ์ด๋ธ” ํ™•์ธ์˜ ์ค‘์š”์„ฑ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ด ๊ธ€์„ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธด๋‹ค. ๐Ÿš€

728x90
Comments