๋์
๋๋๋งํฌ VPN ์ถ์ ์์ด์ด๊ฐ๋ 1.0.0, ๋ฉ์ธ ์ฝ์ด์ WireGuard ๊ตฌ์ฑ ์์ ์ ๊ณต์ ํ์ํจ Linux 5.6 ๊ฐ๋ฐ์ ์์ ํ. Linux ์ปค๋์ ํฌํจ๋ ์ฝ๋ ํฉ๊ฒฉ ํ ํด๋น ๊ฐ์ฌ๋ฅผ ์ ๋ฌธ์ผ๋ก ํ๋ ๋
๋ฆฝ ํ์ฌ๊ฐ ์ถ๊ฐ ๋ณด์ ๊ฐ์ฌ๋ฅผ ์ํํฉ๋๋ค. ๊ฐ์ฌ ๊ฒฐ๊ณผ ์๋ฌด๋ฐ ๋ฌธ์ ๋ ๋ฐ๊ฒฌ๋์ง ์์์ต๋๋ค.
WireGuard๋ ํ์ฌ ๊ธฐ๋ณธ Linux ์ปค๋์์ ๊ฐ๋ฐ๋๊ณ ์์ผ๋ฏ๋ก ๋ฐฐํฌํ์ ์ํ ์ ์ฅ์๊ฐ ์ค๋น๋์์ผ๋ฉฐ ์ฌ์ฉ์๋ ์ด์ ๋ฒ์ ์ ์ปค๋์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค. wireguard-linux-compat.git. ์ ์ฅ์์๋ ์ด์ ์ปค๋๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฐฑํฌํธ๋ WireGuard ์ฝ๋์ compat.h ๋ ์ด์ด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ๋ฐ์์๊ฒ ๊ธฐํ๊ฐ ์๊ณ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ํ์๋ก ํ๋ ํ ๋ณ๋์ ํจ์น ๋ฒ์ ์ด ์์
ํํ๋ก ์ง์๋ ๊ฒ์
๋๋ค. ํ์ฌ ํํ์์๋ WireGuard์ ๋
๋ฆฝ ์คํํ ๋ฒ์ ์ ๋ค์ ์ปค๋๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ถํฌ 20.04 ะธ ๋ฐ๋น์ 10 "๋ฒ์คํฐ", Linux ์ปค๋์ฉ ํจ์น๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ 5.4 ะธ 5.5. Arch, Gentoo ๋ฑ ์ต์ ์ปค๋์ ์ฌ์ฉํ ๋ฐฐํฌํ
Fedora 32๋ 5.6 ์ปค๋ ์
๋ฐ์ดํธ์ ํจ๊ป WireGuard๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ์ด์ ์ ์ฅ์์์ ์ํ๋ฉ๋๋ค. wireguard-linux.git, Wireguard ํ๋ก์ ํธ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋ ์ ์ฒด Linux ์ปค๋ ํธ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ ์ฅ์์ ํจ์น๋ ๊ธฐ๋ณธ ์ปค๋์ ํฌํจ๋๋์ง ๊ฒํ ๋๊ณ ์ ๊ธฐ์ ์ผ๋ก net/net-next ๋ถ๊ธฐ์ ํธ์๋ฉ๋๋ค. wg, wg-quick ๋ฑ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ์ ํธ๋ฆฌํฐ ๋ฐ ์คํฌ๋ฆฝํธ์ ๊ฐ๋ฐ์ ์ ์ฅ์์์ ์ํ๋ฉ๋๋ค. wireguard-tools.git, ๋ฐฐํฌํ์์ ํจํค์ง๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
VPN WireGuard๋ ์ต์ ์ํธํ ๋ฐฉ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋๊ณ ๋งค์ฐ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ๋ณต์กํ์ง ์์ผ๋ฉฐ ๋๋์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋๊ท๋ชจ ๋ฐฐํฌ์์ ์
์ฆ๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ 2015๋
๋ถํฐ ๊ฐ๋ฐ๋์ด ๊ฐ์ฌ๋ฅผ ๋ฐ์์ผ๋ฉฐ, ์ ์ ๊ฒ์ฆ ์ฌ์ฉ๋ ์ํธํ ๋ฐฉ๋ฒ. WireGuard ์ง์์ ์ด๋ฏธ NetworkManager ๋ฐ systemd์ ํตํฉ๋์ด ์์ผ๋ฉฐ ์ปค๋ ํจ์น๋ ๊ธฐ๋ณธ ๋ฐฐํฌํ์ ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ๋น์ ๋ถ์์ , ๋ง๊ฒ์ด์, ์ํ์ธ, ์์น, ์ ํฌ, OpenWrt, NixOS, ํ์ ๊ทธ๋ํ ะธ ALT.
WireGuard๋ ๊ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๊ฐ์ธ ํค๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ํค๋ฅผ ๋ฐ์ธ๋ฉํ๋ ์ํธํ ํค ๋ผ์ฐํ
๊ฐ๋
์ ์ฌ์ฉํฉ๋๋ค. SSH์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๊ณต๊ฐ ํค๋ฅผ ๊ตํํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ณ๋์ ๋ฐ๋ชฌ์ ์คํํ์ง ์๊ณ ํค๋ฅผ ํ์ํ๊ณ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์์ Noise_IK ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ธ์. ๋
ธ์ด์ฆ ํ๋กํ ์ฝ ํ๋ ์์ํฌSSH์์ Authorized_keys๋ฅผ ์ ์งํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ๋ฐ์ดํฐ ์ ์ก์ UDP ํจํท์ ์บก์ํ๋ฅผ ํตํด ์ํ๋ฉ๋๋ค. ์๋ ํด๋ผ์ด์ธํธ ์ฌ๊ตฌ์ฑ์ผ๋ก ์ฐ๊ฒฐ์ ๋์ง ์๊ณ VPN ์๋ฒ์ IP ์ฃผ์ ๋ณ๊ฒฝ(๋ก๋ฐ)์ ์ง์ํฉ๋๋ค.
์ํธํ๋ฅผ ์ํด ์ฌ์ฉ ๋ ์คํธ๋ฆผ ์ํธ ChaCha20 ๋ฐ ๋ฉ์์ง ์ธ์ฆ ์๊ณ ๋ฆฌ์ฆ(MAC) Poly1305, ๋ค๋์ ๋ฒ์คํ์ธ(Daniel Bernstein)์ด ๋์์ธํ๋ค๋์ J. ๋ฒ์คํ์ธ), ํ๋ ๋ญ
(Tanja Lange) ๋ฐ Peter Schwabe. ChaCha20 ๋ฐ Poly1305๋ AES-256-CTR ๋ฐ HMAC์ ๋ ๋น ๋ฅด๊ณ ์์ ํ ์๋ ๋ก๊ทธ๋ก ์๋ฆฌ ์ก์์ผ๋ฉฐ, ์ํํธ์จ์ด ๊ตฌํ์ ํตํด ํน๋ณํ ํ๋์จ์ด ์ง์์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ณ ์ ๋ ์คํ ์๊ฐ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ณต์ ๋น๋ฐ ํค๋ฅผ ์์ฑํ๊ธฐ ์ํด ํ์ ๊ณก์ Diffie-Hellman ํ๋กํ ์ฝ์ด ๊ตฌํ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ปค๋ธ 25519, Daniel Bernstein๋ ์ ์ํ์ต๋๋ค. ํด์ฑ์ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. BLAKE2(RFC7693).
์ค๋๋ ๊ฒ ์๋์ ํ
์คํธ ์ฑ๋ฅ WireGuard๋ OpenVPN(HMAC-SHA3.9-3.8์ ์ฌ์ฉํ๋ 256๋นํธ AES)์ ๋นํด 2๋ฐฐ ๋ ๋์ ์ฒ๋ฆฌ๋๊ณผ 256๋ฐฐ ๋ ๋์ ์๋ต์ฑ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. IPsec(256๋นํธ ChaCha20+Poly1305 ๋ฐ AES-256-GCM-128)๊ณผ ๋น๊ตํ์ฌ WireGuard๋ ์ฝ๊ฐ์ ์ฑ๋ฅ ํฅ์(13-18%)๊ณผ ๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ(21-23%)์ ๋ณด์ฌ์ค๋๋ค. ํ๋ก์ ํธ ์น์ฌ์ดํธ์ ๊ฒ์๋ ํ
์คํธ ๊ฒฐ๊ณผ๋ WireGuard์ ์ด์ ๋
๋ฆฝ ์คํํ ๊ตฌํ์ ๋ค๋ฃจ๋ฉฐ ํ์ง์ด ์ถฉ๋ถํ์ง ์์ ๊ฒ์ผ๋ก ํ์๋ฉ๋๋ค. ํ
์คํธ ์ดํ WireGuard ๋ฐ IPsec ์ฝ๋๋ ๋์ฑ ์ต์ ํ๋์์ผ๋ฉฐ ์ด์ ๋ ๋นจ๋ผ์ก์ต๋๋ค. ์ปค๋์ ํตํฉ๋ ๊ตฌํ์ ๋ค๋ฃจ๋ ๋ณด๋ค ์์ ํ ํ
์คํธ๋ ์์ง ์ํ๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฉํฐ์ค๋ ๋ฉ์ผ๋ก ์ธํด ์ผ๋ถ ์ํฉ์์๋ WireGuard๊ฐ ์ฌ์ ํ IPsec๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋ฐ๋ฉด OpenVPN์ ์ฌ์ ํ โโ๋งค์ฐ ๋๋ฆฝ๋๋ค.
์ถ์ฒ : opennet.ru