์˜คํ”ˆ์†Œ์Šค ๋ฐฉํ™”๋ฒฝ pfSense ์„ค์น˜ํ•˜๊ธฐ (2)

์˜คํ”ˆ์†Œ์Šค ๋ฐฉํ™”๋ฒฝ pfSense ์„ค์น˜ํ•˜๊ธฐ (2) - ํฌํŠธํฌ์›Œ๋”ฉ ๋ฐ HAproxy ์„ค์ •

1. ์˜คํ”ˆ์†Œ์Šค ๋ฐฉํ™”๋ฒฝ pfSense ์„ค์น˜ํ•˜๊ธฐ (1) - pfSense ์„ค์น˜

2. ์˜คํ”ˆ์†Œ์Šค ๋ฐฉํ™”๋ฒฝ pfSense ์„ค์น˜ํ•˜๊ธฐ (2) - ํฌํŠธํฌ์›Œ๋”ฉ ๋ฐ HAproxy ์„ค์ •

๋ชฉ์ฐจ

1. ๋ชฉ์ฐจ

2. ํฌํŠธํฌ์›Œ๋”ฉ

3. HAproxy

4. ๋งˆ์น˜๋ฉฐ

ํฌํŠธํฌ์›Œ๋”ฉ

์ง€๋‚œ์‹œ๊ฐ„ pfSense ์„ค์น˜์— ์ด์–ด ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” pfSense ๊ธฐ๋Šฅ์„ ๋ช‡๊ฐ€์ง€ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํฌํŠธํฌ์›Œ๋”ฉ ์„ค์ •๋ถ€ํ„ฐ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

port-forwarding1

ํฌํŠธํฌ์›Œ๋”ฉ ์„ค์ •์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € LAN ์•„์ดํ”ผ ๋Œ€์—ญ๊ณผ ๋™์ผํ•œ ๋Œ€์—ญ์˜ ์›น์„œ๋ฒ„ ํ•œ ๋Œ€๋ฅผ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. ์ด ๋•Œ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” pfSense์˜ LAN ip๋กœ ์„ค์ • ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

port-forwarding2

ํ•ด๋‹น ์›น์„œ๋ฒ„๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด Destination์„ WAN address๋กœ ์„ค์ •ํ•˜๊ณ , port๋Š” ์›ํ•˜๋Š” ํฌํŠธ๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. ์ €๋Š” 8010์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. Redirect target IP๋Š” ์›น์„œ๋ฒ„ ์‚ฌ์„ค ip๋กœ ์„ค์ •ํ•ด์ฃผ์‹œ๊ณ  Redirect target port๋Š” HTTP ํฌํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์›น์„œ๋ฒ„ ํฌํŠธ๋ฅผ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์„ค์ •ํ•˜์‹  ๋ถ„๋“ค์€ Redirect target port๋ฅผ Other๋กœ ์„ค์ •ํ•ด์ฃผ์‹œ๊ณ  ์„ค์ •ํ•˜์‹  ํฌํŠธ๋กœ ๋ณ€๊ฒฝ ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

port-forwarding3

๊ทธ ํ›„ pfSense์˜ WAN address์— ์„ค์ •ํ•œ ํฌํŠธ๋กœ ์ ‘์†ํ•˜์‹œ๋ฉด ํ•ด๋‹น ์›น์„œ๋ฒ„์— ์ ‘์† ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜ํ•˜์‹ค ์ ์€ ํฌํŠธํฌ์›Œ๋”ฉ์„ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ๋ฃฐ์ด ์ถ”๊ฐ€๊ฐ€ ๋˜๋Š”๋ฐ, pfSense์˜ ๋ฃฐ์€ ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ ํฌํŠธํฌ์›Œ๋”ฉ์˜ ์ ‘์† ํ—ˆ์šฉ ๋ฃฐ์ด block rule๋ณด๋‹ค ์•„๋ž˜์— ์žˆ๊ฒŒ ๋˜๋ฉด ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HAproxy

์ด์–ด์„œ ์›ํ™œํ•œ ์›น์„œ๋ฒ„ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด HAproxy ์„ค์ •์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

HAproxy๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋กœ, ๋„คํŠธ์›Œํฌ ์Šค์œ„์น˜์—์„œ ์ œ๊ณตํ•˜๋Š” L4, L7 ๊ธฐ๋Šฅ ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

pfSense์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜๋งŒ์œผ๋กœ๋„ HAproxy๋ฅผ GUI ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

haproxy1

์šฐ์„  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด System - Package Manager - Available Packagesํƒญ์œผ๋กœ ๋“ค์–ด๊ฐ€ haproxy ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ค‘์ธ ๊ฐ€์žฅ ์ตœ์‹ ๋ฒ„์ „์€ ๋’ค์— devel์ด ๋ถ™์Šต๋‹ˆ๋‹ค. ์ทจํ–ฅ์— ๋”ฐ๋ผ ์จ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์•ˆ์ •ํ™” ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด haproxy๋ฅผ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

haproxy2

HAproxy ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ๋˜๋ฉด Services ํƒญ์— HAProxy๋ผ๋Š” ๋ฉ”๋‰ด๊ฐ€ ์ƒ๊ธด ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํƒญ์˜ Setting๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜๋ฉด HAproxy ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งจ ์œ„์— Enable HAProxy ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ HAproxy๋ฅผ ํ™œ์„ฑํ™” ์‹œํ‚ค๊ณ  Maxinum connections ๊ฐ’์„ ์„ค์ • ํ•ด ์ค๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ HAproxy๋ฅผ ์„ค์ • ํ•  ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ž ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ธํŒ…ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ €๋Š” ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉ ํ•  ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

haproxy3

๊ทธ ํ›„ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ผ IP๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Firewall - Virtual IPs ํƒญ์— ๋“ค์–ด๊ฐ€ ์‹ ๊ทœ ๊ฐ€์ƒ ip๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

haproxy4

์‹ค์งˆ์ ์œผ๋กœ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ•˜๊ณ ์‹ถ์€ ์„œ๋ฒ„ 2๋Œ€๋ฅผ HAproxy backend๋กœ ์„ค์ • ํ•ด ์ค๋‹ˆ๋‹ค. ์ €๋Š” ๊ธฐ์กด์— ์ƒ์„ฑํ•œ ์›น์„œ๋ฒ„ 2๋Œ€๋ฅผ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ•  ์˜ˆ์ •์ธ๋ฐ, ๊ฐ€์ค‘์น˜๋ฅผ 9:1๋กœ ๋‘์–ด webserver01๋ฅผ 10๋ฒˆ ์ค‘ 9๋ฒˆ์ •๋„ ์š”์ฒญ์ด ๊ฐ€๋„๋ก ์„ค์ • ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

haproxy5

HAproxy frontend์—๋Š” ์•„๊นŒ ์ƒ์„ฑํ–ˆ๋˜ ๊ฐ€์ƒ ip๋ฅผ ๋„ฃ๊ณ , ๋ฐฉ๊ธˆ ๋งŒ๋“  HAproxy backend์™€ ์—ฐ๊ฒฐ ํ•ด ์ค๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ€์ƒ ip๋กœ ์š”์ฒญ์„ ํ•˜๋ฉด backend์— ์žˆ๋Š” ๋‘ ์›น์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์ด ๋˜์–ด 9:1์˜ ๋น„์œจ๋กœ ํ˜ธ์ถœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

haproxy6

๊ฐ€์ƒ ip ์—ญ์‹œ ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฏ€๋กœ ๊ผญ Port Fowarding ์„ค์ •์„ ํ•˜๊ณ  ๋ฐฉํ™”๋ฒฝ rule์„ ์ถ”๊ฐ€ํ•ด์ค์‹œ๋‹ค.

haproxy7

์‹ค์ œ๋กœ Port Fowarding ip ์ ‘์†ํ•˜์—ฌ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•  ๊ฒฝ์šฐ 9:1์˜ ๋น„์œจ๋กœ webserver01๊ณผ webserver02๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฑธ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ

์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•œ ์„ค์ •์œผ๋กœ pfSense์—์„œ ํฌํŠธํฌ์›Œ๋”ฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋กœ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์„ค์ •๋„ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉด์„œ GUI ํ™˜๊ฒฝ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋ณด์ž๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งŽ์€ ํšŒ์‚ฌ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ๊ณ ์žˆ๋Š” ๋‘ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ™œ์šฉ๋„๋„ ๋†’์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ €๋Š” private cloud ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑ ํ•  ๋•Œ ip๊ฐ€ ํ•œ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์— vm์„ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ์ƒ์„ฑํ•˜๊ณ , ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์™€ ํ†ต์‹  ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•˜๊ธฐ ์œ„ํ•ด pfSense๋ฅผ ์ž์ฃผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์กฐ๊ธˆ ๋” ๋‹ค์–‘ํ•œ pfSense์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ณ  ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.