๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Development/Story

[VPN] iptime์œผ๋กœ ํ™ˆ ์„œ๋ฒ„ ๊ตฌ์ถ• ์‹œ๋‚˜๋ฆฌ์˜ค ์ •๋ฆฌ

Openvpn

 

 

๐Ÿ  ํ™ˆ ์„œ๋ฒ„ ๊ตฌ์ถ•: VPN + SSH ๊ฐœ๋ฐœ ํ™˜๊ฒฝ + HTTPS Web ์„œ๋ฒ„ ์„ค์ •

์ด ๋ฌธ์„œ๋Š” VPN์„ ํ™œ์šฉํ•œ ์•ˆ์ „ํ•œ ์›๊ฒฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๊ฐœ์ธ ์›น ์„œ๋ฒ„ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.
์„ค์ •์„ ์™„๋ฃŒํ•˜๋ฉด, ์™ธ๋ถ€์—์„œ VPN์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ํ™ˆ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋ฉฐ, ๊ฐœ์ธ HTTPS ์›น ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


๐Ÿ“Œ 1. VPN ํ™˜๊ฒฝ ์„ค์ •

ํ™ˆ ์„œ๋ฒ„๊ฐ€ ๊ณต์ธ IP ์—†์ด๋„ ์™ธ๋ถ€์—์„œ ์ ‘์† ๊ฐ€๋Šฅํ•˜๋„๋ก ipTIME ๊ณต์œ ๊ธฐ์˜ VPN์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ipTIME ๊ณต์œ ๊ธฐ์—์„œ DDNS ์„ค์ • (์™ธ๋ถ€ ์ ‘์† ์ฃผ์†Œ ๋งŒ๋“ค๊ธฐ)

  1. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://192.168.0.1 ์ ‘์† (ipTIME ๊ณต์œ ๊ธฐ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€)
  2. ๊ณ ๊ธ‰ ์„ค์ • → ํŠน์ˆ˜ ๊ธฐ๋Šฅ → DDNS ์„ค์ • ์ด๋™
  3. "ipTIME DDNS ์‚ฌ์šฉ" ํ™œ์„ฑํ™”
  4. ์›ํ•˜๋Š” ๋„๋ฉ”์ธ ์ž…๋ ฅ (์˜ˆ: myserver.iptime.org)
  5. ์„ค์ • ์ €์žฅ ํ›„, ์™ธ๋ถ€์—์„œ myserver.iptime.org๋กœ ์ ‘์† ๊ฐ€๋Šฅ

 


2๏ธโƒฃ ipTIME ๊ณต์œ ๊ธฐ์—์„œ VPN ์„œ๋ฒ„ ํ™œ์„ฑํ™”

  1. ๊ณ ๊ธ‰ ์„ค์ • → VPN ์„œ๋ฒ„ ์„ค์ • ์ด๋™
  2. "OpenVPN ์„œ๋ฒ„ ํ™œ์„ฑํ™”" ์„ ํƒ
  3. VPN ๊ณ„์ • ์ƒ์„ฑ (์‚ฌ์šฉ์ž๋ช… & ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •)
  4. VPN ์„œ๋ฒ„ ์„ค์ • ์™„๋ฃŒ ํ›„, ํด๋ผ์ด์–ธํŠธ์—์„œ OpenVPN ์ ‘์† ๊ฐ€๋Šฅ

 

 


3๏ธโƒฃ ์™ธ๋ถ€ ๊ธฐ๊ธฐ์—์„œ VPN ํด๋ผ์ด์–ธํŠธ ์ ‘์†

๐Ÿ“Œ MacBook์— OpenVPN ํด๋ผ์ด์–ธํŠธ ์„ค์น˜ & VPN ์—ฐ๊ฒฐ

  1. Tunnelblick ๋‹ค์šด๋กœ๋“œ & ์„ค์น˜ (macOS์šฉ OpenVPN ํด๋ผ์ด์–ธํŠธ)
  2. ipTIME ๊ณต์œ ๊ธฐ์—์„œ ์ œ๊ณตํ•˜๋Š” OpenVPN ์„ค์ • ํŒŒ์ผ(.ovpn)์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ Tunnelblick์— ์ถ”๊ฐ€
  3. VPN ๋กœ๊ทธ์ธ (myserver.iptime.org + ์„ค์ •ํ•œ ๊ณ„์ • & ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ)
  4. VPN์ด ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ(192.168.xx.xx) ์ ‘๊ทผ ๊ฐ€๋Šฅ!

 

 


๐Ÿ“Œ 2. ํ™ˆ์„œ๋ฒ„ ์ ‘์† ํ›„ VSCode Remote SSH ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

VPN ์—ฐ๊ฒฐ ํ›„, ์™ธ๋ถ€์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ SSH ์ ‘์†ํ•˜์—ฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ SSH ํฌํŠธ ๋ฐ ๋ฐฉํ™”๋ฒฝ ์„ค์ •

๐Ÿ“Œ ํ™ˆ ์„œ๋ฒ„์—์„œ SSH ํฌํŠธ(22) ์ œํ•œ (VPN ์—ฐ๊ฒฐํ•œ ๊ธฐ๊ธฐ๋งŒ ์ ‘์† ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •)

sudo ufw allow from 192.168.0.0/24 to any port 22

๐Ÿ“Œ ipTIME ๊ณต์œ ๊ธฐ์—์„œ๋„ VPN ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ 22๋ฒˆ ํฌํŠธ ์ ‘๊ทผ ํ—ˆ์šฉ

 

 


2๏ธโƒฃ MacBook์—์„œ SSH ์ ‘์† ํ™•์ธ

๐Ÿ“Œ VPN ์—ฐ๊ฒฐ ํ›„ SSH ์ ‘์†

ssh username@192.168.xx.xx # ํ™ˆ์„œ๋ฒ„ ๋‚ด๋ถ€ IP๋กœ ์ ‘์†

๐Ÿ“Œ Putty (Windows) ๋˜๋Š” macOS ํ„ฐ๋ฏธ๋„์—์„œ ์ •์ƒ ์ ‘์† ํ™•์ธ

 

 


3๏ธโƒฃ VSCode Remote SSH ์„ค์ •

๐Ÿ“Œ VSCode์—์„œ SSH ์›๊ฒฉ ์ ‘์† ์„ค์ •

  1. VSCode ์‹คํ–‰ → "Remote - SSH" ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜
  2. "Ctrl + Shift + P" → "Remote-SSH: Connect to Host" ์„ ํƒ
  3. SSH ์„ค์ • ํŒŒ์ผ(~/.ssh/config)์— ๋‹ค์Œ ๋‚ด์šฉ ์ถ”๊ฐ€
    Host myserver
        HostName 192.168.xx.xx
        User username
        IdentityFile ~/.ssh/id_rsa
  4. "myserver" ์„ ํƒ ํ›„ ์›๊ฒฉ ์ ‘์†
  5. ํ™ˆ ์„œ๋ฒ„์— ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ (Docker, Node.js, Python ๋“ฑ ์„ค์น˜ ๊ฐ€๋Šฅ)

 


๐Ÿ“Œ 3. HTTPS Web Server ํ™˜๊ฒฝ ์„ค์ • (nginx + ๊ฐœ์ธ SSL ์ ์šฉ)

VPN ์—ฐ๊ฒฐ ํ›„ ๊ฐœ์ธ HTTPS ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ VPN์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ nginx ์„ค์น˜

๐Ÿ“Œ ํ™ˆ ์„œ๋ฒ„์—์„œ nginx ์„ค์น˜

sudo apt update && sudo apt install nginx -y

๐Ÿ“Œ nginx ์„œ๋น„์Šค ์‹คํ–‰ ๋ฐ ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰

sudo systemctl startnginx
sudo systemctl enable nginx

๐Ÿ“Œ ๊ธฐ๋ณธ ์›น ํŽ˜์ด์ง€ ํ™•์ธ

curl http://localhost # nginx ๊ธฐ๋ณธ index.html ํ‘œ์‹œ

 

 


2๏ธโƒฃ ๊ฐœ์ธ SSL ์ธ์ฆ์„œ ์ƒ์„ฑ

๐Ÿ“Œ Let's Encrypt ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐœ์ธ SSL ํ‚ค ์ƒ์„ฑ

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/myserver.key -out /etc/ssl/certs/myserver.crt

๐Ÿ“Œ SSL ์„ค์ • ์ ์šฉ (nginx ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •)

sudo nano /etc/nginx/sites-available/default

๐Ÿ“Œ nginx ์„ค์ • ์˜ˆ์ œ

server {
    listen 443 ssl;
    server_name myserver.iptime.org;

    ssl_certificate /etc/ssl/certs/myserver.crt;
    ssl_certificate_key /etc/ssl/private/myserver.key;

    location / {
        root /var/www/html;
        index index.html;
    }

    allow 192.168.0.0/24;
    deny all;
}

๐Ÿ“Œ nginx ์„ค์ • ์ ์šฉ ํ›„ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘

sudo systemctl restart nginx

 

 


3๏ธโƒฃ ๋ฐฉํ™”๋ฒฝ ๋ฐ ipTIME ๊ณต์œ ๊ธฐ ์„ค์ •

๐Ÿ“Œ ํ™ˆ ์„œ๋ฒ„ ๋ฐฉํ™”๋ฒฝ ์„ค์ • (VPN ์—ฐ๊ฒฐํ•œ ์‚ฌ์šฉ์ž๋งŒ 443 ํฌํŠธ ์ ‘๊ทผ ํ—ˆ์šฉ)

sudo ufw allow from 192.168.0.0/24 to any port 443

๐Ÿ“Œ ipTIME ๊ณต์œ ๊ธฐ์—์„œ๋„ VPN ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ 443 ํฌํŠธ ์ ‘๊ทผ ํ—ˆ์šฉ

 

 


๐Ÿ“Œ 4. ์ตœ์ข… ํ…Œ์ŠคํŠธ

๐Ÿ”น VPN ์—ฐ๊ฒฐ O โœ…

  • https://myserver.iptime.org ์ ‘์† ์‹œ nginx ์›น ํŽ˜์ด์ง€ ์ •์ƒ ํ‘œ์‹œ
  • ssh username@192.168.xx.xx ์ •์ƒ ์ ‘์†

๐Ÿ”น VPN ์—ฐ๊ฒฐ X โŒ

  • https://myserver.iptime.org ์ ‘์† ๋ถˆ๊ฐ€
  • ssh myserver.iptime.org ์ ‘์† ๋ถˆ๊ฐ€ (๋ณด์•ˆ ์œ ์ง€)

 

 


โœ… ์ตœ์ข… ๊ฒฐ๋ก 

๐ŸŽฏ VPN์„ ํ†ตํ•œ ๋ณด์•ˆ ์ ‘์† + ์›๊ฒฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ + ๊ฐœ์ธ HTTPS ์›น ์„œ๋ฒ„ ๊ตฌ์ถ• ์™„๋ฃŒ!
โœ” VPN์„ ํ†ตํ•ด์„œ๋งŒ SSH & ์›น ์„œ๋ฒ„ ์ ‘๊ทผ ๊ฐ€๋Šฅ → ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์œ ์ง€
โœ” ์™ธ๋ถ€์—์„œ VSCode Remote SSH๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
โœ” HTTPS ์›น ์„œ๋ฒ„(nginx) + ๊ฐœ์ธ SSL ์ ์šฉ → ๊ฐœ์ธ ์›น ์„œ๋น„์Šค ์šด์˜ ๊ฐ€๋Šฅ

 

 


 

* GPT๋ฅผ ํ™œ์šฉํ•ด ๊ฐœ์ธ์ ์ธ ํ™œ์šฉ Scene์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ™œ์šฉ ๋ฐ”๋ž๋‹ˆ๋‹ค.

'Development > Story' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Git] ์‹ค์ œ๋กœ ๊ฒฝํ—˜ํ•ด ๋ณธ Git-Flow์— ๋Œ€ํ•œ ์ •๋ฆฌ  (0) 2024.12.11