"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ… ์•ˆ๋…•ํ•˜์„ธ์š”, ์นด๋ธŒ๋กœ ์ฃผ๋ฏผ ์—ฌ๋Ÿฌ๋ถ„! ์ฑ…์—์„œ David Clinton์€ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ์‹œ์Šคํ…œ ์ž๋™ํ™”, Dropbox ์Šคํƒ€์ผ ๊ฐœ์ธ ํŒŒ์ผ ํด๋ผ์šฐ๋“œ ์„ค์ •, ์ž์‹ ๋งŒ์˜ MediaWiki ์„œ๋ฒ„ ์ƒ์„ฑ ๋“ฑ 12๊ฐ€์ง€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กœ์šด ์‚ฌ๋ก€ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ๊ฐ€์ƒํ™”, ์žฌํ•ด ๋ณต๊ตฌ, ๋ณด์•ˆ, ๋ฐฑ์—…, DevOps ๋ฐ ์‹œ์Šคํ…œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ ์žฅ์€ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๊ฒ€ํ† , ์ƒˆ๋กœ์šด ์šฉ์–ด์ง‘ ๋ฐ ์—ฐ์Šต ๋ฌธ์ œ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

โ€œ10.1. OpenVPN ํ„ฐ๋„ ์ƒ์„ฑ"

๋‚˜๋Š” ์ด๋ฏธ ์ด ์ฑ…์—์„œ ์•”ํ˜ธํ™”์— ๊ด€ํ•ด ๋งŽ์€ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. SSH ๋ฐ SCP๋Š” ์›๊ฒฉ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(3์žฅ), ํŒŒ์ผ ์•”ํ˜ธํ™”๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(8์žฅ), TLS/SSL ์ธ์ฆ์„œ๋Š” ์‚ฌ์ดํŠธ์™€ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(9์žฅ). . ๊ทธ๋Ÿฌ๋‚˜ ๋•Œ๋กœ๋Š” ๋” ๋„“์€ ๋ฒ”์œ„์˜ ์—ฐ๊ฒฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒ€์› ์ค‘ ์ผ๋ถ€๋Š” ๊ณต์šฉ ํ•ซ์ŠคํŒŸ์„ ํ†ตํ•ด Wi-Fi์— ์—ฐ๊ฒฐํ•˜๋ฉด์„œ ์ด๋™ ์ค‘์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ก์„ธ์Šค ํฌ์ธํŠธ๊ฐ€ ๋ชจ๋‘ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ด์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ ์ง์›๋“ค์—๊ฒŒ๋Š” ํšŒ์‚ฌ ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋ฉฐ VPN์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์ ˆํ•˜๊ฒŒ ์„ค๊ณ„๋œ VPN ํ„ฐ๋„์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ญ? ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋„๊ตฌ๋ฅผ ์ด๋ฏธ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. VPN์˜ ์ง„์ •ํ•œ ๊ฐ€์น˜๋Š” ํ„ฐ๋„์„ ์—ด์–ด ์›๊ฒฉ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ชจ๋‘ ๋กœ์ปฌ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์˜๋ฏธ์—์„œ๋Š” ์šฐํšŒ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ™•์žฅ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ์ž๋Š” ์–ด๋””์„œ๋‚˜ ์„œ๋ฒ„์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์œ„์น˜์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ํšŒ์‚ฌ๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ทธ๋ฃน์ด ์–ด๋””์— ์žˆ๋“  ์ด๋ฅผ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆผ 10.1).

ํ„ฐ๋„ ์ž์ฒด๋Š” ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•”ํ˜ธํ™” ํ‘œ์ค€ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณด์•ˆ ์ˆ˜์ค€์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค OpenVPN ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ํ„ฐ๋„์€ ์ด๋ฏธ ์ฝ์€ ๊ฒƒ๊ณผ ๋™์ผํ•œ TLS/SSL ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. OpenVPN์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ํ„ฐ๋„๋ง ์˜ต์…˜์€ ์•„๋‹ˆ์ง€๋งŒ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ ํ„ฐ๋„๋ง ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. IPsec ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ฒด ๋ ˆ์ด์–ด 2 ํ„ฐ๋„ ํ”„๋กœํ† ์ฝœ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

ํŒ€์› ๋ชจ๋‘๊ฐ€ ์ด๋™ ์ค‘์ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฑด๋ฌผ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์„œ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํ†ต์‹ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณต์œ  ๋ฐ ์„œ๋ฒ„์˜ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” OpenVPN ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ๋‘ ๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹  ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ(ํ•˜๋‚˜๋Š” ์„œ๋ฒ„/ํ˜ธ์ŠคํŠธ ์—ญํ• ์„ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•จ)๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. VPN ๊ตฌ์ถ•์€ ๊ฐ„๋‹จํ•œ ๊ณผ์ •์ด ์•„๋‹ˆ๋ฏ€๋กœ ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…

10.1.1. OpenVPN ์„œ๋ฒ„ ๊ตฌ์„ฑ

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ์กฐ์–ธ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์˜ˆ์ •์ด๋ผ๋ฉด(๊ทธ๋ฆฌ๊ณ  ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค) ๋ฐ์Šคํฌํƒ‘์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ž‘์—…ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ์ฐฝ์— ์ž˜๋ชป๋œ ๋ช…๋ น์„ ์ž…๋ ฅํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์ค„์— ํ‘œ์‹œ๋˜๋Š” ์ปดํ“จํ„ฐ ์ด๋ฆ„์„ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„์—๋Š” ์ƒˆ ์„ค์ •์„ ์ ์šฉํ•˜๋ ค๋ฉด ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ์•„์›ƒํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๊ณ  ์ž‘์—…ํ•˜๋Š” ๊ฐ ์ปดํ“จํ„ฐ์— ์ ์ ˆํ•œ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ฉด ํ˜„์žฌ ์œ„์น˜๋ฅผ ์‰ฝ๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ ํ›„ ํ›„์† ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ Unable to Resolve Host OpenVPN-Server ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ƒˆ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ /etc/hosts ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

OpenVPN์„ ์œ„ํ•œ ์„œ๋ฒ„ ์ค€๋น„

์„œ๋ฒ„์— OpenVPN์„ ์„ค์น˜ํ•˜๋ ค๋ฉด openvpn๊ณผ easy-rsa(์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์šฉ)๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. CentOS ์‚ฌ์šฉ์ž๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ 2์žฅ์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋จผ์ € epel-release ์ €์žฅ์†Œ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด Apache ์›น ์„œ๋ฒ„(Ubuntu์—์„œ๋Š” apache2, CentOS์—์„œ๋Š” httpd)๋ฅผ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋™์•ˆ 22(SSH) ๋ฐ 1194(OpenVPN์˜ ๊ธฐ๋ณธ ํฌํŠธ)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํฌํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ๋Š” Ubuntu์—์„œ ufw๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด์—ฌ ์ฃผ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„์€ 9์žฅ์˜ CentOS Firewalld ํ”„๋กœ๊ทธ๋žจ์„ ์•„์ง๋„ ๊ธฐ์–ตํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

# ufw enable
# ufw allow 22
# ufw allow 1194

์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„ ๋‚ด๋ถ€ ๋ผ์šฐํŒ…์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด /etc/sysctl.conf ํŒŒ์ผ์—์„œ ํ•œ ์ค„(net.ipv4.ip_forward = 1)์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ›„ ํ•„์š”์— ๋”ฐ๋ผ ๋ฆฌ๋””๋ ‰์…˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์˜ต์…˜์„ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด sysctl -p๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค:

# nano /etc/sysctl.conf
# sysctl -p

์ด์ œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ์™„์ „ํžˆ ๊ตฌ์„ฑ๋˜์—ˆ์ง€๋งŒ ์ค€๋น„๋˜๊ธฐ ์ „์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์ด ํ•œ ๊ฐ€์ง€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค).

  1. easy-rsa ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ๊ณต๊ฐœ ํ‚ค ์ธํ”„๋ผ(PKI) ์•”ํ˜ธํ™” ํ‚ค ์„ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ OpenVPN ์„œ๋ฒ„๋Š” ์ž์ฒด ์ธ์ฆ ๊ธฐ๊ด€(CA) ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ์— ์ ํ•ฉํ•œ ํ‚ค๋ฅผ ์ค€๋น„ํ•˜์„ธ์š”.
  3. ์„œ๋ฒ„์— ๋Œ€ํ•œ server.conf ํŒŒ์ผ ๊ตฌ์„ฑ
  4. OpenVPN ํด๋ผ์ด์–ธํŠธ ์„ค์ •
  5. VPN์„ ํ™•์ธํ•˜์„ธ์š”

์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ

์ž‘์—…์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด OpenVPN ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์ฃผ์š” ์ธํ”„๋ผ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ์— ๋ณ„๋„์˜ CA ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. OpenVPN์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์•”ํ˜ธํ™”ํ‚ค ์ž์›์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์€ ๊ทธ๋ฆผ 10.2๊ณผ ๊ฐ™๋‹ค. XNUMX.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
OpenVPN์„ ์„ค์น˜ํ•˜๋ฉด /etc/openvpn/ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. openvpn ๋ฐ easy-rsa ํŒจํ‚ค์ง€์—๋Š” ๊ตฌ์„ฑ์˜ ๊ธฐ์ดˆ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ด ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด easy-rsa ํ…œํ”Œ๋ฆฟ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ /usr/share/์—์„œ /etc/openvpn์œผ๋กœ ๋ณต์‚ฌํ•˜๊ณ  easy-rsa/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

์ด์ œ easy-rsa ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ๊ฝค ๋งŽ์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์— 10.1์—๋Š” ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๋„๊ตฌ๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…

์œ„ ์ž‘์—…์—๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ sudo su๋ฅผ ํ†ตํ•ด ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…ํ•  ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์€ vars๋ผ๊ณ  ํ•˜๋ฉฐ easy-rsa๊ฐ€ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹  ์‚ฌ์šฉ์ž ๊ณ ์œ ์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด ํŒŒ์ผ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค(๋ชฉ๋ก 10.1).

๋ชฉ๋ก 10.1. /etc/openvpn/easy-rsa/vars ํŒŒ์ผ์˜ ์ฃผ์š” ์กฐ๊ฐ

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

vars ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์ด ์…ธ ํ™˜๊ฒฝ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์ƒˆ ํ‚ค์˜ ๋‚ด์šฉ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. sudo ๋ช…๋ น ์ž์ฒด๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ vars๋ผ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŽธ์ง‘ํ•œ ๋‹ค์Œ ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ vars ํŒŒ์ผ์ด ํ•ด๋‹น ๊ฐ’์„ ์…ธ ํ™˜๊ฒฝ์œผ๋กœ ์ „๋‹ฌํ•˜์—ฌ ์ƒˆ ํ‚ค์˜ ๋‚ด์šฉ์— ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ์ƒˆ ์…ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์Šคํฌ๋ฆฝํŠธ๋Š” /etc/openvpn/easy-rsa/keys/ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์ธ clean-all์„ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
๋‹น์—ฐํžˆ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” clean-all ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ pkitool ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” build-ca๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. vars์—์„œ ์ œ๊ณตํ•œ ID ์„ค์ •์„ ํ™•์ธํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

๋‹ค์Œ์€ ๋นŒ๋“œ ํ‚ค ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์ƒˆ ๋ฃจํŠธ ์ธ์ฆ์„œ์™€ ํ•จ๊ป˜ ๋™์ผํ•œ pkitool ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ‚ค ์Œ ์ƒ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๋™์ผํ•œ ์งˆ๋ฌธ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ‚ค ์ด๋ฆ„์€ ์ „๋‹ฌํ•œ ์ธ์ˆ˜์— ๋”ฐ๋ผ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ VPN์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ํ•œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ์˜ˆ์™€ ๊ฐ™์ด ์„œ๋ฒ„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

OpenVPN์€ Diffie-Hellman ์•Œ๊ณ ๋ฆฌ์ฆ˜(build-dh ์‚ฌ์šฉ)์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ธ์ฆ์„ ํ˜‘์ƒํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์€ ๋น„๋ฐ€์ผ ํ•„์š”๋Š” ์—†์ง€๋งŒ ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ RSA ํ‚ค์— ๋Œ€ํ•ด build-dh ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ƒˆ RSA ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ Diffie-Hellman ํŒŒ์ผ๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ./build-dh

์ด์ œ ์„œ๋ฒ„ ์ธก ํ‚ค๋Š” /etc/openvpn/easy-rsa/keys/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์ง€๋งŒ OpenVPN์€ ์ด๋ฅผ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ OpenVPN์€ /etc/openvpn/์—์„œ ํ‚ค๋ฅผ ์ฐพ์œผ๋ฏ€๋กœ ๋ณต์‚ฌํ•˜์„ธ์š”.

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

ํด๋ผ์ด์–ธํŠธ ์•”ํ˜ธํ™” ํ‚ค ์ค€๋น„

์ด๋ฏธ ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ TLS ์•”ํ˜ธํ™”๋Š” ์ผ์น˜ํ•˜๋Š” ํ‚ค ์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์„œ๋ฒ„์— ์„ค์น˜๋˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์˜ค๋žœ ์นœ๊ตฌ์ธ pkitool์ด ๋ฐ”๋กœ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” /etc/openvpn/easy-rsa/ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ client.crt ๋ฐ client.key๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# ./pkitool client

์ด์ œ ๋‘ ํด๋ผ์ด์–ธํŠธ ํŒŒ์ผ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ‚ค/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ์›๋ณธ ca.crt ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ๊ถŒ๊ณผ ์ ‘๊ทผ ๊ถŒํ•œ์œผ๋กœ ์ธํ•ด ์ด๋Š” ์‰ฝ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์†Œ์Šค ํŒŒ์ผ์˜ ๋‚ด์šฉ(ํ•ด๋‹น ๋‚ด์šฉ๋งŒ ์ œ์™ธ)์„ PC ๋ฐ”ํƒ• ํ™”๋ฉด์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ„ฐ๋ฏธ๋„์— ์ˆ˜๋™์œผ๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ…์ŠคํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„ ๋ฉ”๋‰ด์—์„œ ๋ณต์‚ฌ๋ฅผ ์„ ํƒ). ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐ๋œ ๋‘ ๋ฒˆ์งธ ํ„ฐ๋ฏธ๋„์—์„œ ์ƒ์„ฑํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์ƒˆ ํŒŒ์ผ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ˆ„๊ตฌ๋‚˜ ์ž๋ฅด๊ณ  ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ์ž˜๋ผ๋‚ด๊ธฐ/๋ถ™์—ฌ๋„ฃ๊ธฐ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•œ GUI์— ํ•ญ์ƒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ์ž์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌํ•œ ๋‹ค์Œ(์›๊ฒฉ scp ์ž‘์—…์ด ํ•ด๋‹น ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก) chown์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์†Œ์œ ๊ถŒ์„ ๋ฃจํŠธ์—์„œ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์›๊ฒฉ scp ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ์ด ํ˜„์žฌ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ž ์‹œ ํ›„์— ํด๋ผ์ด์–ธํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

์ „์ฒด ์•”ํ˜ธํ™” ํ‚ค ์„ธํŠธ๊ฐ€ ์ค€๋น„๋˜๋ฉด VPN ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์„œ๋ฒ„์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” server.conf ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

ํ‚ค ์ž…๋ ฅ ํšŸ์ˆ˜ ์ค„์ด๊ธฐ

ํƒ€์ดํ•‘์ด ๋„ˆ๋ฌด ๋งŽ๋‚˜์š”? ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์žฅํ•˜๋ฉด ์ด๋Ÿฌํ•œ XNUMX๊ฐœ ๋ช…๋ น์„ XNUMX๊ฐœ๋กœ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ด ๋‘ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ˆ˜์‹ญ ๋˜๋Š” ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ ์ž‘์—…์— ์ด๋Ÿฌํ•œ ์›์น™์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

server.conf ํŒŒ์ผ ์„ค์ •

server.conf ํŒŒ์ผ์˜ ๋ชจ์–‘์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? /usr/share/์—์„œ ๋ณต์‚ฌํ•œ easy-rsa ๋””๋ ‰ํ† ๋ฆฌ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ์–ตํ•˜์‹œ๋‚˜์š”? OpenVPN์„ ์„ค์น˜ํ•˜๋ฉด /etc/openvpn/์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์••์ถ•๋œ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ด ๋‚จ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์ด ๋ณด๊ด€๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ† ๋Œ€๋กœ ์œ ์šฉํ•œ ๋„๊ตฌ์ธ zcat์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

cat ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์˜ ํ…์ŠคํŠธ ๋‚ด์šฉ์„ ํ™”๋ฉด์— ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, gzip์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์–ธ์ œ๋“ ์ง€ ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€๋ฉด cat์ด ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜์ง€๋งŒ ์ด๋Š” ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ํ•œ๋‘ ๋‹จ๊ณ„ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹ , ์ง์ž‘ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด zcat ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์••์ถ•์„ ํ‘ผ ํ…์ŠคํŠธ๋ฅผ ํ•œ ๋‹จ๊ณ„๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ํ…์ŠคํŠธ๋ฅผ ํ™”๋ฉด์— ์ธ์‡„ํ•˜๋Š” ๋Œ€์‹  server.conf๋ผ๋Š” ์ƒˆ ํŒŒ์ผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค.

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ์œ ์šฉํ•œ ๋ฌธ์„œ๋Š” ์ œ์ณ๋‘๊ณ  ํŽธ์ง‘์ด ์™„๋ฃŒ๋˜๋ฉด ์–ด๋–ค ๋ชจ์Šต์ผ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ธ๋ฏธ์ฝœ๋ก (;)์€ OpenVPN์— ๋‹ค์Œ ์ค„์„ ์ฝ๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ์•Š๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค(๋ชฉ๋ก 10.2).

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
์ด๋Ÿฌํ•œ ์„ค์ • ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ OpenVPN์€ ํฌํŠธ 1194์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™œ๋™์„ ๋” ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ™œ์„ฑ ํ„ฐ๋„๊ณผ์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1194๋Š” ํด๋ผ์ด์–ธํŠธ์™€์˜ ์ตœ์†Œํ•œ์˜ ์กฐ์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.
  • OpenVPN์€ TCP(์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ) ๋˜๋Š” UDP(์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. TCP๋Š” ์•ฝ๊ฐ„ ๋Š๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ํ„ฐ๋„์˜ ์–‘์ชฝ ๋์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋” ์•ˆ์ •์ ์ด๊ณ  ์ดํ•ดํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ฝ˜ํ…์ธ ๋งŒ ์ „๋‹ฌํ•˜๋Š” ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ IP ํ„ฐ๋„์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ dev tun์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(๋ฐ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ๋„คํŠธ์›Œํฌ)๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ด๋”๋„ท ๋ธŒ๋ฆฌ์ง€๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ dev ํƒญ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด tun ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ๋‹ค์Œ ๋„ค ์ค„์€ OpenVPN์— ์„œ๋ฒ„์— ์žˆ๋Š” ์„ธ ๊ฐœ์˜ ์ธ์ฆ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์ด์ „์— ์ƒ์„ฑํ•œ dh2048 ์˜ต์…˜ ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ๋ผ์ธ์€ ๋กœ๊ทธ์ธ ์‹œ ํด๋ผ์ด์–ธํŠธ์— IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์œ„์™€ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํƒ์  ํ‘ธ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜ "route 10.0.3.0 255.255.255.0"์„ ์‚ฌ์šฉํ•˜๋ฉด ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ๋’ค์˜ ๊ฐœ์ธ ์„œ๋ธŒ๋„ท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๊ฐœ์ธ ์„œ๋ธŒ๋„ท์ด OpenVPN ์„œ๋ธŒ๋„ท(10.8.0.0)์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„ ์ž์ฒด์— ๋„คํŠธ์›Œํฌ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํฌํŠธ ๊ณต์œ  localhost 80 ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํฌํŠธ 1194์—์„œ ๋“ค์–ด์˜ค๋Š” ํด๋ผ์ด์–ธํŠธ ํŠธ๋ž˜ํ”ฝ์„ ํฌํŠธ 80์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜๋Š” ๋กœ์ปฌ ์›น ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด๋Š” ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPN์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฐ ๋‹ค์Œ tcp ํ”„๋กœํ† ์ฝœ์ด ์„ ํƒ๋˜๋ฉด.
  • ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์ œ๊ฑฐํ•˜์—ฌ ์‚ฌ์šฉ์ž none ๋ฐ ๊ทธ๋ฃน nogroup ์ค„์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๋ฅผ none ๋ฐ nogroup์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋ฉด ์„œ๋ฒ„์˜ ์„ธ์…˜์— ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • log๋Š” OpenVPN์ด ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ํ˜„์žฌ ๋กœ๊ทธ ํ•ญ๋ชฉ์ด ์ด์ „ ํ•ญ๋ชฉ์„ ๋ฎ์–ด์“ฐ๋„๋ก ์ง€์ •ํ•˜๋Š” ๋ฐ˜๋ฉด, log-append๋Š” ๊ธฐ์กด ๋กœ๊ทธ ํŒŒ์ผ์— ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. openvpn.log ํŒŒ์ผ ์ž์ฒด๋Š” /etc/openvpn/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ OpenVPN ์„œ๋ฒ„ ์™ธ์—๋„ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํด๋ผ์ด์–ธํŠธ-ํด๋ผ์ด์–ธํŠธ ๊ฐ’์ด ๊ตฌ์„ฑ ํŒŒ์ผ์— ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์— ๋งŒ์กฑํ•˜๋ฉด OpenVPN ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# systemctl start openvpn

OpenVPN๊ณผ systemd ๊ฐ„์˜ ๊ด€๊ณ„ ํŠน์„ฑ์ด ๋ณ€ํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋•Œ๋•Œ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. systemctl start openvpn@server.

์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด ip addr์„ ์‹คํ–‰ํ•˜๋ฉด ์ด์ œ tun0์ด๋ผ๋Š” ์ƒˆ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. OpenVPN์€ ๋“ค์–ด์˜ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

๋ชจ๋“  ๊ฒƒ์ด ์™„์ „ํžˆ ์ž‘๋™ํ•˜๊ธฐ ์ „์— ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘์ง€๋Š” ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์ž…๋‹ˆ๋‹ค.

10.1.2. OpenVPN ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ

์ „ํ†ต์ ์œผ๋กœ ํ„ฐ๋„์€ ์ตœ์†Œํ•œ ๋‘ ๊ฐœ์˜ ์ถœ๊ตฌ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋™๊ตด์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค). ์„œ๋ฒ„์— ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ OpenVPN์€ ํ•œ์ชฝ ํ„ฐ๋„ ์•ˆํŒŽ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ธก, ์ฆ‰ ํ„ฐ๋„์˜ ๋ฐ˜๋Œ€์ชฝ ๋์—์„œ ์‹คํ–‰๋˜๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” OpenVPN ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜๋„๋ก ์ผ๋ถ€ ์œ ํ˜•์˜ Linux ์ปดํ“จํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ด ๊ธฐํšŒ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค. OpenVPN์€ Windows ๋˜๋Š” macOS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ์Šคํฌํ†ฑ ๋ฐ ๋…ธํŠธ๋ถ์€ ๋ฌผ๋ก  Android ๋ฐ iOS ์Šค๋งˆํŠธํฐ๊ณผ ํƒœ๋ธ”๋ฆฟ์— ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ openvpn.net์„ ์ฐธ์กฐํ•˜์„ธ์š”.

OpenVPN ํŒจํ‚ค์ง€๋Š” ์„œ๋ฒ„์— ์„ค์น˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ ์ค‘์ธ ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” easy-rsa๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ /etc/openvpn/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— client.conf ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ํŒŒ์ผ์ด ์••์ถ•๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ผ๋ฐ˜ cp ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ ์—†์ด ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

client.conf ํŒŒ์ผ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์„ค์ •์€ ์„ค๋ช…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋ฒ„์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ ํŒŒ์ผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ณ ์œ  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์›๊ฒฉ 192.168.1.23 1194์ด๋ฉฐ, ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ์„œ๋ฒ„ ์ฃผ์†Œ์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋˜ํ•œ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ๊ฐ€ ์„œ๋ฒ„ ์ธ์ฆ์„œ์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•์ธํ•˜๋„๋ก ๊ฐ•์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ remote-cert-tls server ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ชฉ๋ก 10.3).

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
์ด์ œ /etc/openvpn/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์ธ์ฆ ํ‚ค๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์„œ๋ฒ„ IP ์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”.

"๋ฆฌ๋ˆ…์Šค ์ธ ์•ก์…˜(Linux in Action)" ์ฑ…
ํด๋ผ์ด์–ธํŠธ์—์„œ OpenVPN์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ํฅ๋ฏธ๋กœ์šด ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ช…๋ น์ค„์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. --tls-client ์ธ์ˆ˜๋Š” OpenVPN์— ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜๊ณ  TLS ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ๊ฒƒ์ž„์„ ์•Œ๋ฆฌ๊ณ  --config๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

# openvpn --tls-client --config /etc/openvpn/client.conf

๋ช…๋ น ์ถœ๋ ฅ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ฒ˜์Œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฐ„์˜ ์„ค์ • ๋ถˆ์ผ์น˜ ๋˜๋Š” ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ/๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ์ž…๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์—์„œ OpenVPN ์ž‘์—…์˜ ์ถœ๋ ฅ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์œผ์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์—๋Š” ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…๊ณผ ๊ทธ ์ด์œ ์— ๋Œ€ํ•œ ๊ท€์ค‘ํ•œ ์กฐ์–ธ์ด ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์˜ /etc/openvpn/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” openvpn.log ๋ฐ openvpn-status.log ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • OpenVPN ๊ด€๋ จ ๋ฉ”์‹œ์ง€์™€ ์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. (journalctl -ce๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.)
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ํ™œ์„ฑ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ 14์žฅ ์ฐธ์กฐ).

ะžะฑ ะฐะฒั‚ะพั€ะต

๋ฐ์ด๋น„๋“œ ํด๋ฆฐํ„ด - ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž, ๊ต์‚ฌ ๋ฐ ์ž‘๊ฐ€. ๊ทธ๋Š” Linux ์‹œ์Šคํ…œ, ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(ํŠนํžˆ AWS), Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ์ค‘์š”ํ•œ ๊ธฐ์ˆ  ๋ถ„์•ผ์— ๋Œ€ํ•œ ๊ต์œก ์ž๋ฃŒ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ง‘ํ•„ํ•˜๊ณ , ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” Learn Amazon Web Services in a Month of Lunches(Manning, 2017)๋ผ๋Š” ์ฑ…์„ ์ผ์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ๋น„๋””์˜ค ๊ต์œก ๊ณผ์ • ์ค‘ ๋‹ค์ˆ˜๋Š” Pluralsight.com์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ์˜ ๋‹ค๋ฅธ ์ฑ…(Linux ๊ด€๋ฆฌ ๋ฐ ์„œ๋ฒ„ ๊ฐ€์ƒํ™”์— ๊ด€ํ•œ)์— ๋Œ€ํ•œ ๋งํฌ๋Š” ๋‹ค์Œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. bootstrap-it.com.

ยป ์ฑ…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœํ–‰์ธ์˜ ์›น์‚ฌ์ดํŠธ
ยป ์ฐจ๋ก€
ยป ๋ฐœ์ทŒ

Khabrozhiteley์˜ ๊ฒฝ์šฐ ์ฟ ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ 25% ํ• ์ธ์„ ๋ฐ›์œผ์„ธ์š” - Linux
์ข…์ด์ฑ…์„ ๊ฒฐ์ œํ•˜์‹œ๋ฉด ์ „์ž์ฑ…์ด ์ด๋ฉ”์ผ๋กœ ๋ฐœ์†ก๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€