๐ VPN (Virtual Private Network) ์์ธ ์ ๋ฆฌ
โ
VPN์ด๋?
VPN์ ๊ณต์ฉ ์ธํฐ๋ท์ ํตํด ์ฌ์ค ๋คํธ์ํฌ์ฒ๋ผ ์์ ํ๊ฒ ์ฐ๊ฒฐํ๋ ๊ธฐ์ ์
๋๋ค.
- ์ธ๋ถ ๋คํธ์ํฌ์์๋ ๋ด๋ถ๋ง์ฒ๋ผ ํต์ ๊ฐ๋ฅ (์: ํ์ฌ ๋ด๋ถ๋ง ์ ์)
- ์ํธํ๋ ํฐ๋์ ํตํด ๋ฐ์ดํฐ ๋ณด์, ์์น ์ฐํ, ์ ๊ทผ ์ ์ด ๊ฐ๋ฅ
- OSI ๊ณ์ธต: ์ฃผ๋ก 3๊ณ์ธต(Network Layer) ๋๋ 7๊ณ์ธต(Application Layer)
๐ฆ VPN์ ์ฃผ์ ๊ตฌ์ฑ ์์
| ๊ตฌ์ฑ ์์ | ์ค๋ช
|
|---|
| VPN Client | ์ ์ ์์ฒญ์ ๋ณด๋ด๋ ์ฌ์ฉ์ ์ธก ์ฅ์น (ex: laptop, phone) |
| VPN Server | ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์ธ์ฆ ๋ฐ ๋ผ์ฐํ
์ฒ๋ฆฌ |
| Tunnel Protocol | ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์์ ํ๊ฒ ํฐ๋๋ง (IPsec, WireGuard, SSL ๋ฑ) |
| Authentication | ์ฌ์ฉ์ ์ธ์ฆ (์: ID/PW, ์ธ์ฆ์, MFA ๋ฑ) |
๐ ์ฃผ์ VPN ํ๋กํ ์ฝ ๋น๊ต
| ํ๋กํ ์ฝ | ๊ณ์ธต | ํน์ง |
|---|
| PPTP | L2 | ์๋ ๋น ๋ฆ, ๋ณด์ ์ทจ์ฝ (๊ถ์ฅ X) |
| L2TP/IPsec | L2+L3 | ๊ฐ๋ ฅํ ๋ณด์, ์ค์ ๋ณต์ก |
| IPsec | L3 | ๋คํธ์ํฌ ๊ณ์ธต ๋ณดํธ, ๊ณ ์ฑ๋ฅ, ๊ธฐ์
์ฉ ์์ฃผ ์ฌ์ฉ |
| OpenVPN | L4+L7 | TLS ๊ธฐ๋ฐ, ์ ์ฐ์ฑ ์ข์, ๋๋ฆฌ ์ฌ์ฉ๋จ |
| WireGuard | L3 | ์ต์ ํ๋กํ ์ฝ, ์ค์ ๊ฐ๋จ, ๋น ๋ฅด๊ณ ์์ |
| SSL VPN | L7 | ์น ๊ธฐ๋ฐ ์ ๊ทผ, ํฌํธ ์ ํ ์์, ๋ธ๋ผ์ฐ์ ํตํฉ ๊ฐ๋ฅ |
๐ VPN ์๋ ๊ณผ์ (์: WireGuard ๊ธฐ์ค)
- Client๊ฐ VPN Server์ ์ฐ๊ฒฐ ์์ฒญ (UDP 51820)
- ์ธ์ฆ์/ํค ๊ตํ์ผ๋ก ํผ์ด ์ ๋ขฐ ํ์ธ
- ์ํธํ๋ ํฐ๋ ์์ฑ (interface:
wg0)
- ๋ผ์ฐํ
์ค์ ์ ์ฉ (์: 0.0.0.0/0 via wg0)
- ๋ชจ๋ ํจํท์ด VPN์ ํตํด ์ ์ก๋๊ฑฐ๋ ํน์ ๋์ญ๋ง ํต๊ณผ (split/full tunnel)
๐งช ์ค๋ฌด ์์
โ
WireGuard ์ค์ ์ (/etc/wireguard/wg0.conf):
[Interface]
PrivateKey = ...
Address = 10.8.0.1/24
ListenPort = 51820
[Peer]
PublicKey = ...
AllowedIPs = 10.8.0.2/32
Endpoint = vpn.example.com:51820
PersistentKeepalive = 25
โ
OpenVPN ์์
sudo openvpn --config client.ovpn
โ
VPN ์ธํฐํ์ด์ค ํ์ธ
ip a | grep wg0
ip route
โ ๏ธ ๋ณด์ ๋ฐ ์ด์ ์ฃผ์์ฌํญ
- Split Tunnel vs Full Tunnel ์ค์ ๊ณ ๋ ค
- DNS ๋์ ๋ฐฉ์ง ์ค์ ํ์
- ์ธ์ฆ์ ๋ฐ ํค ๊ด๋ฆฌ ์ฒ ์ ํ (๊ถํ ์์ ์ฃผ์)
- ํฌํธ ํฌ์๋ฉ ๋ฐ ๋ฐฉํ๋ฒฝ ํ์ฉ ํ์ (์: UDP 51820, TCP 443)
๐ ์ฐธ๊ณ
- WireGuard ๊ณต์ ๋ฌธ์: https://www.wireguard.com
- OpenVPN, IPsec, Cloud VPN ๋ฑ ๋น๊ต ์๋ฃ
iptables, ufw๋ก VPN ๊ฒฝ๋ก ๋ณดํธ ๋ฐ NAT ์ค์