개발자 μž…μž₯μ—μ„œ VPN은 μž¬νƒ 근무 μ‹œ μ•”ν˜Έν™” κΈ°μˆ μ„ 톡해 사내 λ„€νŠΈμ›Œν¬μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λ˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. λ„λ„ν•œ κ°œλ°œμžλ‹˜μ˜ κ°œλ°œμžλŠ” μ•Œμ•„μ•Ό ν•  VPN μž‘λ™μ›λ¦¬μ²˜λŸΌ μ—¬λŸ¬κ°€μ§€ VPN ν”„λ‘œν† μ½œ 쀑 많이 μ‚¬μš©λ˜λŠ” OpenVPN, IPSec, WireGuard에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œλ‚˜λ§ˆ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

OpenVPN

SSL VPN으둜 ꡬ글에 μž„μ§μ› VPN ν‚€μ›Œλ“œλ‘œ 검색을 해보면 ν˜„λŒ€μžλ™μ°¨ κ·Έλ£Ή, LGν™”ν•™, LGν—¬λ‘œλΉ„μ „ 그리고 κ³ λ €λŒ€ν•™κ΅ λ“±μ—μ„œ 사외 접속을 μœ„ν•œ VPN μ‚¬μ΄νŠΈλ₯Ό μž„μ§μ›μ„ μœ„ν•΄ μ œκ³΅ν•˜λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. 개인적인 κ²½ν—˜μœΌλ‘œλŠ” λ§₯μ—μ„œ OpenVPN ν΄λΌμ΄μ–ΈνŠΈλ‘œ Tunnelblickλ₯Ό μ‚¬μš©ν–ˆλ˜ κ²ƒμœΌλ‘œ κΈ°μ–΅ν•©λ‹ˆλ‹€. AWS μΈν”„λΌμ—μ„œλŠ” SSL VPN으둜 AWS Client VPN을 μ œκ³΅ν•˜κ³  μžˆμœΌλ‚˜ λΉ„μš©μ μΈ 문제둜 μΈν•˜μ—¬ λŒ€λΆ€λΆ„μ˜ κΈ°μ—…μ—μ„œλŠ” λ„μž…μ„ ν¬κΈ°ν•˜μ§€ μ•Šμ„κΉŒ μƒκ°λ©λ‹ˆλ‹€.

IPSec/IKEv2

IKEv2 기반 VPN은 고객사 μ‚¬μ΄νŠΈ 접근을 μœ„ν•˜μ—¬ ν—ˆμš©λœ 아이피λ₯Ό μœ„ν•΄μ„œ μ‚¬μš©ν–ˆλ˜ κ²½ν—˜μ€ μžˆμœΌλ‚˜μ‚¬μ΄νŠΈ κ°„ μ—°κ²°(Site to Site)을 μœ„ν•œ VPN은 μ‚¬μš©ν•΄λ³Έ 적이 μ—†μŠ΅λ‹ˆλ‹€. IKEv2 VPN μ—μ„œλŠ” 사섀 μΈμ¦μ„œ 등둝 과정이 ν•„μš”ν•˜λ―€λ‘œ μ‹ μž… 개발자 μž…μž₯μ—μ„œλŠ” 섀정이 생각보닀 어렀웠지 μ•Šμ•˜λ‚˜ μ‹ΆμŠ΅λ‹ˆλ‹€. AWS μΈν”„λΌμ—μ„œλŠ” VPC μ—μ„œ μ˜¨ν”„λ ˆλ―ΈμŠ€ λ„€νŠΈμ›Œν¬ 접근을 μœ„ν•΄μ„œAWS Site to Site VPN을 μ œκ³΅ν•˜λŠ” 것 같은데 μ•„λ¬΄λž˜λ„ μ‚¬μš©ν•΄λ³Ό κΈ°νšŒλŠ” 없을 것 κ°™μŠ΅λ‹ˆλ‹€.

WireGuard

ν˜„μž¬ μ‚¬μš©μ€‘μΈ VPN λ°©μ‹μœΌλ‘œ wg-easyλ₯Ό 톡해 UI 기반의 WireGuard VPN μ„œλ²„λ₯Ό 도컀 이미지λ₯Ό ν™œμš©ν•΄ ꡬ좕할 수 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μΈν”„λž©κ³Ό 같은 μŠ€νƒ€νŠΈμ—…μ—μ„œλŠ” WireGuard 기반 VPN을 μœ„ν•˜μ—¬ Tailscaleλ₯Ό λ„μž…ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μ΄λ„€μš”. WireGuard VPN ν΄λΌμ΄μ–ΈνŠΈ 섀정은 생각보닀 κ°„λ‹¨ν•˜λ‹ˆ ν•œλ²ˆ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. 일단 ν΄λΌμ΄μ–ΈνŠΈ ꡬ성 νŒŒμΌμ€ μΈν„°νŽ˜μ΄μŠ€(Interface)와 ν”Όμ–΄(Peer) λΈ”λ‘μœΌλ‘œ λΆ„λ¦¬λ˜μ–΄ μ„€μ •ν•˜κ²Œ λ©λ‹ˆλ‹€.

[Interface]
PrivateKey = oAE3A26JxwFujPlffL7ZxjEt46CooEye4VQMeN4wGFQ=
Address = 10.x.x.x/24
DNS = 1.1.1.1, 1.0.0.1

[Peer]
PublicKey = jtc6uT4caKpznwM3UnlSIBnzYrIW2huOnFlpHwBRKEc=
AllowedIPs = 125.x.x.x/24, 10.10.x.x/23
Endpoint = 125.x.x.x:51820
PersistentKeepalive = 25
Split Tunnel

WireGuard VPN μ„€μ • μ‹œ 전체 터널링(Full Tunnel)κ³Ό μŠ€ν”Œλ¦Ώ 터널링(Split Tunnel)으둜 λ‚˜λˆ„μ–΄μ§€λŠ”λ° μž¬νƒ 근무 μ‹œμ—λŠ”μ „μ²΄ νŠΈλž˜ν”½(0.0.0.0/0)을 VPN으둜 κ²½μœ ν•˜λŠ” κ²ƒλ³΄λ‹€λŠ” 사내 μ„œλ²„ λ„€νŠΈμ›Œν¬ 접근을 μœ„ν•΄ν•„μš”ν•œ IP λŒ€μ—­λ§Œμ„ CIDR둜 μ„€μ •ν•˜μ—¬ νŠΈλž˜ν”½μ΄ λΆ„λ¦¬λ˜λ„λ‘ ν•˜λŠ”κ²Œ μ’‹λ‹€κ³  ν•©λ‹ˆλ‹€. ν˜„μž¬ νšŒμ‚¬μ—μ„œλ„ μž¬νƒ 근무λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ μ‚¬λ‚΄μ—μ„œ μ™€μ΄νŒŒμ΄κ°€ μ—°κ²°λœ μƒνƒœμ—μ„œ νŠΉμ • μ„œλ²„ λŒ€μ—­ 접근을 μœ„ν•΄μ„œ VPN 섀정을 ν•˜μ—¬ μ ‘κ·Όν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ ‡κ²Œ 개발자 μž…μž₯μ—μ„œ μ—¬λŸ¬κ°€μ§€ VPN에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œλ‚˜λ§ˆ μ•Œμ•„λ³΄μ•˜λŠ”λ° λ‹€μ–‘ν•œ VPN ν”„λ‘œν† μ½œ μ€‘μ—μ„œOpenVPN, IPSec/IKEv2, WireGuard 만 μ•Œμ•„λ„ μΆ©λΆ„ν•  것이라 μƒκ°λ©λ‹ˆλ‹€.