2์ดˆ ๋งŒ์— Docker์—์„œ OpenVPN ์‹คํ–‰

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

2์ดˆ ๋งŒ์— Docker์—์„œ OpenVPN ์‹คํ–‰

์„ ์‚ฌ ์‹œ๋Œ€

๋ฌผ๋ฆฌ์  ์„œ๋ฒ„, ๊ฐ€์ƒ ์‚ฌ์„ค ์„œ๋ฒ„, ์‹ฌ์ง€์–ด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์˜ ์ปจํ…Œ์ด๋„ˆ ๊ณต๊ฐ„ ๋“ฑ ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‹œ์„ ์€ ์ฆ‰์‹œ Docker์— ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ด ์„œ๋น„์Šค๊ฐ€ ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์  ๋” ๋งŽ์€ ๊ณต๊ธ‰์ž๊ฐ€ ์‚ฌ์ „ ์„ค์น˜๋ฅผ ํ†ตํ•ด ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ํ„ฐ๋ฏธ๋„์—์„œ ํ•˜๋‚˜์˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์—ด์‹ฌํžˆ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ œ๊ฐ€ ์ฐพ์€ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋Š” ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กญ๊ฑฐ๋‚˜(์˜๊ตฌ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•จ๊ป˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•จ), ์ œ๋Œ€๋กœ ๋œ ๋ฌธ์„œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์™„์ „ํžˆ ํฌ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. , ๋‚˜๋Š” ๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ ๊ณต๋ถ€, ์ฝ”๋“œ ์ž‘์„ฑ, ๋””๋ฒ„๊น…์„ ์•ž๋‘๊ณ  ์ž  ๋ชป ์ด๋ฃจ๋Š” ๋ฐค์ด ์žˆ์—ˆ์ง€๋งŒ, ๊ฒฐ๊ตญ ๋‚ด ์„œ๋น„์Šค๋Š” ๋น›์„ ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ  ๋ผ์šฐํ„ฐ์˜ ๋‹จ์ƒ‰ LED ํŒจ๋„์˜ ๋ชจ๋“  ์ƒ‰์ƒ์œผ๋กœ ๋น›๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‚ฌ๋ž‘๊ณผ ํ˜ธ์˜๋ฅผ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Docker-OpenVPN. ๋กœ๊ณ ๊นŒ์ง€ ์ƒ๊ฐํ•ด๋ƒˆ๋Š”๋ฐ(์œ„, ์ปท ์ „), ์ €๋Š” (๋” ์ด์ƒ) ๋””์ž์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—„๊ฒฉํ•˜๊ฒŒ ํŒ๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ €๋Š” ๋ฐฐํฌ ์†๋„๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ • ๋ฐ ํ—ˆ์šฉ๋˜๋Š” ๋ณด์•ˆ ์ˆ˜์ค€. ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฑฐ์ณ ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์˜ ์ตœ์ ์˜ ๊ท ํ˜•์„ ์ฐพ์•˜์ง€๋งŒ ์–ด๋–ค ๊ณณ์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ฐฐํฌ ์†๋„๋ฅผ ํฌ์ƒํ•ด์•ผ ํ–ˆ๊ณ  ์ตœ์†Œํ•œ์˜ ์„ค์ •์œผ๋กœ ์ด์‹์„ฑ์„ ์ง€๋ถˆํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ตฌ์„ฑ์—์„œ๋Š” ํ•œ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์ธ์ฆ์„œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ์ด ์ž‘์—…์—๋Š” ์•ฝ 2์ดˆ๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Hellman Defi ํŒŒ์ผ ์ƒ์„ฑ์€ ๋นŒ๋“œ ์‹œ๊ฐ„์— ํฌํ•จ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์ค‘์— ์ƒ์„ฑ๋˜๋ฉฐ ์ตœ๋Œ€ 10๋ถ„ ๋™์•ˆ ์ง€์†๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์กด๊ฒฝ๋ฐ›๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ๋ถ€ํ„ฐ ๊ทธ๋Ÿฌํ•œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ถœ์‹œ

์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. ์„œ๋ฒ„: ๋ฌผ๋ฆฌ์  ๋˜๋Š” ๊ฐ€์ƒ. ์ด๋ก ์ ์œผ๋กœ๋Š” docker-within-docker ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ด ์˜ต์…˜์„ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  2. ์‚ฌ์‹ค ๋„์ปค. ๋งŽ์€ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด๋Š” Docker๊ฐ€ ํƒ‘์žฌ๋œ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ณต์šฉ IP ์ฃผ์†Œ.

๋ชจ๋“  ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ์œผ๋ฉด ์„œ๋ฒ„ ์ฝ˜์†”์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

docker run --cap-add=NET_ADMIN 
-it -p 1194:1194/udp -p 80:8080/tcp 
-e HOST_ADDR=$(curl -s https://api.ipify.org) 
alekslitvinenk/openvpn

์„ธ์‹ฌํ•œ ๋…์ž๋ผ๋ฉด ์„œ๋ฒ„ IP ์ฃผ์†Œ๊ฐ€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค๋Š” ์ ์„ ์•Œ์•„์ฐจ๋ ธ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ipify.org. ์–ด๋–ค ์ด์œ ๋กœ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฃผ์†Œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ์ฝ˜์†”์— ๋น„์Šทํ•œ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Sun Jun  9 08:56:11 2019 Initialization Sequence Completed
Sun Jun  9 08:56:12 2019 Client.ovpn file has been generated
Sun Jun  9 08:56:12 2019 Config server started, download your client.ovpn config at http://example.com/
Sun Jun  9 08:56:12 2019 NOTE: After you download you client config, http server will be shut down!

๋ชฉํ‘œ์— ๊ฐ€๊นŒ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. example.com (๊ท€ํ•˜์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„ ์ฃผ์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค) ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด client.ovpn ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  http ์„œ๋ฒ„ ์ž์ฒด๋Š” ๋ง๊ฐ ์†์œผ๋กœ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์˜์‹ฌ์Šค๋Ÿฌ์šฐ๋ฉด ๋‹ค์Œ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. zp ๊ทธ๋ฆฌ๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ. ์ด์ œ ์ƒ์„ฑ๋œ ๋งํฌ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋œ zip ์•„์นด์ด๋ธŒ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์ ํ•ฉํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Mac์šฉ Tunnelblick์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ

์ด ๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ์—๋Š” DigitalOcean์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์ž์„ธํ•œ ์ง€์นจ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

PS ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด GitHub์—์„œ ๋ณ„์ ์„ ์ฃผ๊ณ  ํฌํฌํ•œ ํ›„ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ์„ธ์š”. ๊ธฐ์—ฌ์ž์™€ ๋ณด์•ˆ ๊ฐ์‚ฌ๋„ ๋„๋ฆฌ ํ™˜์˜๋ฐ›์Šต๋‹ˆ๋‹ค.PPS ์ด ๊ธ€์ด Habr์—์„œ ๋๋‚œ๋‹ค๋ฉด, ๋‚˜๋Š” docker-in-docker์™€ docker-in-docker-in-docker๋ฅผ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ–ˆ๋Š”์ง€, ์™œ ๊ทธ๋žฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ๋‹ค์Œ ๊ธ€์„ ์“ธ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
EDIT1 :

  1. ์ถœํŒ๋ฌผ์˜ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ,
  2. ์˜๊ฒฌ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ €๋Š” ๋‹ค์Œ ์ •๋ณด๋ฅผ ์—ฌ๊ธฐ์— ๋„ฃ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. iptables๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด โ€”privileged ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

EDIT2 :

  1. ์ด๋ฏธ์ง€ ์‹คํ–‰ ๋ช…๋ น ๊ฐœ์„ : ์ด์ œ โ€“privileged ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๋Ÿฌ์‹œ์•„์–ด ๋น„๋””์˜ค ๊ฐ€์ด๋“œ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: youtu.be/A8zvrHsT9A0

์ถœ์ฒ˜ : habr.com

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