๋กœ์ผ“๐Ÿพ
article thumbnail

Iptables ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋จผ์ € Netfilter ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ฃ  !

 

Netfilter ์™€ Iptables


AWS EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Security Group ์ด๋ผ๋Š” ๊ฒƒ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์™ธ๋ถ€๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉํ™”๋ฒฝ ๊ธฐ๋Šฅ์ด์ฃ . EC2 ์ธ์Šคํ„ด์Šค ์•ž๋‹จ์— ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์•„๋งˆ ๋ฌผ๋ฆฌ์ ์ธ ๊ธฐ๊ณ„๊ฐ€ ์žˆ์–ด์„œ ์–ด๋–ค ํŠธ๋ž˜ํ”ฝ์€ ํ—ˆ์šฉํ•˜๊ณ , ์–ด๋–ค ํŠธ๋ž˜ํ”ฝ์€ ๊ฑฐ๋ถ€ํ•˜๊ฒ ์ฃ .

 

Security Group ์ด ํ•˜๋“œ์›จ์–ด ๋ฐฉํ™”๋ฒฝ ์ด๋ผ๋ฉด Netfilter ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉํ™”๋ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

 

Netfilter ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉํ™”๋ฒฝ
  • ํŒจํ‚ท ํ•„ํ„ฐ๋ง
  • ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋‚ด๋ถ€์˜ ํ”„๋ ˆ์ž„์›Œํฌ
  • ํฌํŠธ ์ฃผ์†Œ, ๋ณ€ํ™˜, ํฌํŠธ ํฌ์›Œ๋”ฉ ๋ฐ ํŒจํ‚ท ๋ณ€๊ฒฝ
  • ๋ผ์šฐํŒ… ์ „ํ›„์— ๋ฐ์ดํ„ฐ ๋ฐ IP ํŒจํ‚ท ํ—ค๋” ๋ณ€๊ฒฝ

 

๊ทธ์น˜๋งŒ ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ Netfilter ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Iptables ์ž…๋‹ˆ๋‹ค.

 

์ฆ‰, Iptables ๋Š” Netfilter ๋ฅผ ์ปจํŠธ๋กคํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

ํ—ท๊ฐˆ๋ฆฌ์‹œ๋‹ค๋ฉด, Iptables ๊ณผ Netfilter ๋ฅผ ๋™์ผ์‹œ ์ƒ๊ฐํ•ด๋„ ํฌ๊ฒŒ ์ด ๊ธ€์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์ง€์žฅ์€ ์—†์„ ๊ฒ๋‹ˆ๋‹ค ๐Ÿ˜€

 

Netfilter Chains


Netfilter ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 5 ๊ฐœ์˜ Chains ๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Netfilter Chains

 

Input

  • ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€(Drop)
  • ํ˜ธ์ŠคํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŒจํ‚ท์€ ์˜ˆ์™ธ์—†์ด Input ๊ทœ์น™์„ ๋”ฐ๋ฆ„
  • Input ๊ทœ์น™์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท์€ ์—†์Œ
$ iptables -t filter -A INPUT -p icmp -j DROP

# ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  icmp ๋ฅผ DROP ํ•œ๋‹ค
# ping ์„ iptables ๋ฅผ ์ ์šฉํ•œ ํ˜ธ์ŠคํŠธ๋กœ ๋ณด๋‚ด๋ฉด ์‘๋‹ต์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค

Output

  • ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€(Drop)
  • ํ˜ธ์ŠคํŠธ๊ฐ€ Source ๊ฐ€ ๋จ
$ iptables -t filter -A OUTPUT -d netfilter.org -j DROP

# ํ˜ธ์ŠคํŠธ์—์„œ netfilter.org ๋กœ ๋‚˜๊ฐ€๋Š” ๋ชจ๋“  ํŒจํ‚ท์€ ๋“œ๋กญ๋œ๋‹ค

 

์ด์™ธ Prerouting, Forward, PostRouting ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋Š” ์ข€ ๋” ๋’ค์—์„œ ๋‹ค๋ฃจ๋„๋ก ํ•˜์ฃ  ๐Ÿง

 

 

Netfilter Tables


Netfilter ์—์„  Chain ๋ง๊ณ  Table ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Iptables ์—์„œ ์ƒ์„ฑํ•œ ๋ฃฐ์„ ์ •์˜ํ•˜๋Š” Table ์ด์ฃ .

 

Chain ๊ณผ Table

 

filter

  • iptables ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ…Œ์ด๋ธ” 
  • ๋ชจ๋“  ์ž‘์—…์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฉํ™”๋ฒฝ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๊ณณ
  • ์—ฌ๊ธฐ์„œ ํŒจํ‚ท์„ ํ—ˆ์šฉํ• ์ง€ ๊ฑฐ๋ถ€ํ• ์ง€ ์ •ํ•จ
$ iptables -A INPUT -p tcp --dport 22 -s 5.3.6.6 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 22 -j DROP

# ์ฒด์ธ์€ ๋“ฑ๋ก๋œ ์ˆœ์„œ๋กœ ์ž‘๋™ํ•œ๋‹ค
# 5.3.6.6:22 ์˜ ํŒจํ‚ท๋งŒ ํ—ˆ์šฉ๋œ๋‹ค
# ํ•˜์ง€๋งŒ ๋‘๋ฒˆ์งธ ์ฒด์ธ์—์„œ 22 ํฌํŠธ๋กœ ์˜ค๋Š” ํŒจํ‚ท์€ ์–ด๋–ค IP ๋“  ๋“œ๋กญ๋œ๋‹ค

 

nat

  • DNAT, SNAT ๊ด€๋ จ ๋ฃฐ์„ ์ •์˜ํ•จ

 

๋‚˜๋จธ์ง€ mangle ๊ณผ raw ํ…Œ์ด๋ธ”์€ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.. ์‚ฌ์šฉํ–ˆ๋˜ ์ ์ด ์—†์–ด์š”.. ๐Ÿ˜…

 

 

๊ธฐ๋ณธ์ ์ธ Command


Iptables ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  iptables ๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ง์ด์ฃ .

$ iptables -vnL

 

ํ•ต์‹ฌ Command ๋งŒ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ฃ  ! 

 

์ฐธ๊ณ : iptables ๋ช…๋ น์–ด๋Š” root ๊ณ„์ •๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
์ฐธ๊ณ : -t nat ์™€ ๊ฐ™์ด table ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ filter ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

 

L ์˜ต์…˜

iptables ์— ์กด์žฌํ•˜๋Š” Rule ์„ ๋ฆฌ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

$ iptables -L
# ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์คŒ

$ iptables -vnL
# ๋” ์ž์„ธํ•˜๊ฒŒ ๋ณด์—ฌ์คŒ
# -v : verbose
# -n : numberic

iptables -L
iptables -vnL

 

 

A ์˜ต์…˜

iptables ์— Rule ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

$ iptables -A INPUT -p tcp --dport 80 -j DROP
# 80 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์„ ๋“œ๋กญํ•จ

$ iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
# 8080 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์€ ํ—ˆ์šฉํ•จ

$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# ๊ทœ์น™์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ๊ทœ์น™์— ์˜ํ•ด DROP ๋˜์–ด
# ์ด ๊ทœ์น™์€ ์‚ฌ์‹ค์ƒ ๋ฌด์˜๋ฏธํ•จ

 

I ์˜ต์…˜

A ์˜ต์…˜๊ณผ ๋˜‘๊ฐ™์ด ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ A ์˜ต์…˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋’ค์—์„œ ์ถ”๊ฐ€ํ•˜๊ณ , I ์˜ต์…˜ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ฒซ๋ฒˆ์งธ์—์„œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

 

ํ˜„์žฌ 80 ํฌํŠธ๋ฅผ DROP ํ•˜๋Š” ๊ทœ์น™์ด ํ•œ๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ I ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด DROP ๊ทœ์น™ ์•„๋ž˜๊ฐ€ ์•„๋‹Œ ์œ„์— ์ƒ์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

$ iptables -A INPUT -p tcp --dport 80 -j DROP
$ iptables -I INPUT -p tcp --dport 80 -j ACCEPT

์•„๋ž˜๊ฐ€ ์•„๋‹Œ ์œ„์— ์ƒ๊ธด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์— ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ๊ทœ์น™์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๊ฒฝ์šฐ 80 ํฌํŠธ๋Š” ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ ๋ฌด์กฐ๊ฑด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

F ์˜ต์…˜

๊ทธ๋Ÿผ ์œ„์—์„œ ์ถ”๊ฐ€ํ•œ ๊ทœ์น™์„ ๋‹ค ์‚ญ์ œํ•ด๋ณด์ฃ !

$ iptables -F

๊ทœ์น™์ด ๋‹ค ์‚ญ์ œ(Flush) ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ด์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฑธ ํ™œ์šฉํ•ด๋ณด์ฃ  ๐Ÿ˜Ž

 

๊ธฐ๋ณธ ์˜ˆ์ œ


 

Case 1) 80 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‘ ๊ฑฐ๋ถ€ํ•˜์ž!

 

ํ˜„์žฌ Host ์—์„œ 80 ํฌํŠธ๋Š” Nginx ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. 

Client ์—์„œ curl ๋ฅผ ์ด์šฉํ•ด์„œ Host ์˜ Nginx ์— ์ ‘๊ทผํ•ด๋ณด์ฃ  !

Nginx

๋ฌด๋ฆฌ์—†์ด ์‘๋‹ต์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” Rule ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ฃ !

 

Host ๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ iptables -A INPUT -p tcp --dport 80 -j DROP
# -p : protocol
# ํฌํŠธ๋Š” L4 ์ดํ›„๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ -p tcp ๋ผ๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•จ

80 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ DROP ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— curl ์„ ํ•ด๋„ ์‘๋‹ต์ด ์˜ค์งˆ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์‹œ ์ด๋ฅผ ACCEPT ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ƒˆ๋กœ์šด ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด๋ณด์ฃ ! ์–ด๋–ค ์˜ต์…˜์„ ์“ฐ๋ฉด ๋ ๊นŒ์š”?

 

Case 2) -F ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  80 ํฌํŠธ๋ฅผ ๋‹ค์‹œ ํ—ˆ์šฉํ•ด์ฃผ์ž!

๊ฐ์ด ์˜ค์‹œ๋‚˜์š”? ๋งž์Šต๋‹ˆ๋‹ค. I ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ iptables -I INPUT -p tcp --dport 80 -j ACCEPT

iptables -vnL

๊ทธ๋Ÿผ ๋‹ค์‹œ curl ๋ฅผ ๋ณด๋‚ด๋ณผ๊นŒ์š”?

DROP ๋˜๋Š” ๊ทœ์น™์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ ๊ณ„์† ์ด์•ผ๊ธฐํ•˜๋‹ค์‹œํ”ผ ๊ทœ์น™์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ACCEPT ๊ฐ€ ๋˜๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐ŸคŸ

 

๊ทธ๋Ÿผ ์ข€ ๋” ์‹ฌํ™”๋œ ๊ธฐ๋Šฅ์„ ์•Œ์•„๋ณด์ฃ  !

 

DNAT ๊ณผ SNAT ๊ทธ๋ฆฌ๊ณ  MASQUERADE


iptables ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNAT ๊ณผ SNAT ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ์šฐ์„  NAT ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

NAT ์€ Network Address Translation ์˜ ์•ฝ์ž๋กœ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ Network ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

NAT ์— ๊ด€ํ•œ ๊ธ€์€ ์•„๋‹ˆ๋‹ˆ ์ž์„ธํ•œ ๊ฑด ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” !

 

DNAT ์˜ D ๋Š” Destination, SNAT ์˜ S ๋Š” Source ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ DNAT ์€ Destination ์˜ ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ , SNAT ์€ Source ์˜ ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

DNAT
SNAT

 

DNAT ์€ ํ•ญ์ƒ PREROUTING ์ฒด์ธ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฉฐ, SNAT ์€ ํ•ญ์ƒ POSTROUTING ์ฒด์ธ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ด์ œ MASQUERADE ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ฃ !

MASQUERADE ๋Š” SNAT ์˜ ์ผ์ข…์ด๋ฉฐ SNAT ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋™์ ์œผ๋กœ ์†Œ์Šค IP ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

๋•Œ๋ฌธ์— ๋ณดํ†ต SNAT ๋ณด๋‹จ MASQUERADE ๋ฅผ ํ†ตํ•ด์„œ ๊ทœ์น™์„ ์ง€์ •ํ•˜๋Š”๊ฒŒ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

์ด์ œ ์ดํ•ด๊ฐ€ ์ž˜์•ˆ๋˜์‹ ๋‹ค๊ตฌ์š”?

 

๊ทธ๋Ÿผ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ฃ !

 

์‹ฌํ™” ์˜ˆ์ œ - iptables ์„ ์ด์šฉํ•˜์—ฌ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž!


iptables ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ฐ”๋กœ ๊ฐ€๋ณด์ฃ ! ๐ŸคŸ

 

๊ธฐ๋Šฅ์€ ์•„์ฃผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. Load Balancer ์— 3000 ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๋ฉด Server A ๋กœ ๊ฐ€๊ณ , 3010 ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๋ฉด Server B ๋กœ ๊ฐ‘๋‹ˆ๋‹ค.

 

๊ตฌ์กฐ๋„

 

๊ทธ๋Ÿผ ์šฐ์„  Server A ์™€ Server B ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋ฌด์Šจ ์‘๋‹ต์ด ์˜ค๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ฃ .

๋‘˜ ๋‹ค ok ๊ฐ€ ์‘๋‹ต์œผ๋กœ ์˜ค๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ด์ œ ์ง์ ‘ Server A ์™€ Server B ์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ Load Balancer ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด๋ณด์ฃ !

 

๊ทธ ์ „์— ์šฐ์„  Route ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ด์ค๋‹ˆ๋‹ค.

echo "1" > /proc/sys/net/ipv4/ip_forward

 

์ดํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Load Balancer ์šฉ๋„์˜ Host ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

$ iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 54.180.126.167:9090
# 3000 ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ 54.180.126.167:9090 ๋กœ ๋‚˜๊ฐ

$ iptables -t nat -A PREROUTING -p tcp --dport 3010 -j DNAT --to-destination 54.180.126.167:4040
# 3010 ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ 54.180.126.167:4040 ๋กœ ๋‚˜๊ฐ

$ iptables -t nat -A POSTROUTING -j MASQUERADE
# Host ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ Source IP ๋˜ํ•œ MASQUERADE ๋กœ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•จ

 

๋ชจ๋“  ์ค€๋น„๋Š” ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ•œ๋ฒˆ Load Balancer ์— ์ ‘๊ทผํ•ด๋ณด์ฃ  ๐Ÿ˜Ž

์„ฑ๊ณต์ ์ž…๋‹ˆ๋‹ค!

 

์‚ฌ์‹ค Load Balancer ๋ผ๊ณ  ํ•˜๊ธฐ์— ๊ธฐ๋Šฅ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์ง€๋งŒ ์ข€ ์†๋ณด๋ฉด ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 

์ง€๊ธˆ๊นŒ์ง€ ๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜„

profile on loading

Loading...