Linux ์ปค๋„ 5.6์— ํฌํ•จ๋œ VPN WireGuard

์˜ค๋Š˜ Linus๋Š” VPN ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ net-next ์ง€์ ์„ ์ž์‹ ์—๊ฒŒ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ์™€์ด์–ด ๊ฐ€๋“œ. ์ด ์ด๋ฒคํŠธ ์ •๋ณด ัะพะพะฑั‰ะธะปะธ WireGuard ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ์ปค๋„ 5.6์— ํฌํ•จ๋œ VPN WireGuard

์ƒˆ๋กœ์šด Linux 5.6 ์ปค๋„์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ˆ˜์ง‘์ด ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. WireGuard๋Š” ์ตœ์ฒจ๋‹จ ์•”ํ˜ธํ™” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋น ๋ฅธ ์ฐจ์„ธ๋Œ€ VPN์ž…๋‹ˆ๋‹ค. ์›๋ž˜๋Š” ๊ธฐ์กด VPN์— ๋Œ€ํ•œ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํŽธ๋ฆฌํ•œ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €์ž๋Š” ์บ๋‚˜๋‹ค ์ •๋ณด ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€ Jason A. Donenfeld์ž…๋‹ˆ๋‹ค. 2018๋…„ XNUMX์›”, WireGuard๋Š” ์นญ์ฐฌ์„ ๋ฐ›์•˜๋‹ค ๋ฆฌ๋ˆ„์Šค ํ† ๋ฐœ์ฆˆ. ๊ทธ ๋ฌด๋ ต Linux ์ปค๋„์— VPN์„ ํฌํ•จํ•˜๋Š” ์ž‘์—…์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ์ •์ด ์กฐ๊ธˆ ๋” ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

Linus๋Š” 2๋…„ 2018์›” XNUMX์ผ์— โ€œJason์ด ์ปค๋„์— WireGuard๋ฅผ ํฌํ•จํ•ด ๋‹ฌ๋ผ๋Š” ํ’€ ์š”์ฒญ์„ ํ•œ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.โ€๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. โ€” ์ด VPN์— ๋Œ€ํ•œ ๋‚˜์˜ ์‚ฌ๋ž‘์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์„ ์–ธํ•˜๊ณ  ๊ณง ํ•ฉ๋ณ‘๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‚ดํŽด๋ณด๋‹ˆ OpenVPN๊ณผ IPSec์˜ ๊ณตํฌ์™€ ๋น„๊ตํ•˜๋ฉด ์ •๋ง ์˜ˆ์ˆ  ์ž‘ํ’ˆ์ž…๋‹ˆ๋‹ค."

Linus์˜ ํฌ๋ง์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ฉ๋ณ‘์€ 2019๋…„ ๋ฐ˜ ๋™์•ˆ ์ง€์—ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฌธ์ œ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์˜ ๋…์  ๊ตฌํ˜„๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. XNUMX๋…„ XNUMX์›” ์˜ค๋žœ ํ˜‘์ƒ ๋์— ์ ˆ์ถฉ ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค WireGuard ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ฑ๋Šฅ ๋ฐ ์ผ๋ฐ˜ ๋ณด์•ˆ ๋ถ„์•ผ์—์„œ ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•˜๋Š” ์ปค๋„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” API ๊ธฐ๋Šฅ์œผ๋กœ ํŒจ์น˜๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๊ธฐ๋ณธ WireGuard ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ์ €์ˆ˜์ค€ Zinc API๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ตญ ์ด๋ฅผ ์ปค๋„๋กœ ํฌํŒ…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. XNUMX์›”, ์ปค๋„ ๊ฐœ๋ฐœ์ž๋“ค์€ ์•ฝ์†์„ ์ง€์ผฐ์Šต๋‹ˆ๋‹ค. ๋™์˜ํ–ˆ๋‹ค ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ Zinc์—์„œ ๋ฉ”์ธ ์ปค๋„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•”ํ˜ธํ™” API์—์„œ ํฌํ•จ ๋œ WireGuard์—์„œ ์ค€๋น„๋œ ChaCha20 ๋ฐ Poly1305 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, 9๋…„ 2019์›” XNUMX์ผ, Linux ์ปค๋„์˜ ๋„คํŠธ์›Œํ‚น ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๋‹ด๋‹นํ•˜๋Š” David S. Miller๋Š” ๋ฐ›์•„ ๋“ค์˜€๋‹ค. net-next ์ง€์ ์œผ๋กœ ํŒจ์น˜ WireGuard ํ”„๋กœ์ ํŠธ์˜ VPN ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜, 29๋…„ 2020์›” XNUMX์ผ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด Linus์— ์ ์šฉ๋˜์–ด ์ปค๋„์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Linux ์ปค๋„ 5.6์— ํฌํ•จ๋œ VPN WireGuard

๋‹ค๋ฅธ VPN ์†”๋ฃจ์…˜์— ๋น„ํ•ด WireGuard์˜ ์žฅ์ :

  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด.
  • ์ตœ์‹  ์•”ํ˜ธํ™” ์‚ฌ์šฉ: ๋…ธ์ด์ฆˆ ํ”„๋กœํ† ์ฝœ ํ”„๋ ˆ์ž„์›Œํฌ, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF ๋“ฑ
  • ๊ฐ€๋…์„ฑ์ด ๋›ฐ์–ด๋‚œ ์ฝ”๋“œ๋กœ ์ทจ์•ฝ์„ฑ์„ ์‰ฝ๊ฒŒ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ์„ฑ๋Šฅ.
  • ๋ช…ํ™•ํ•˜๊ณ  ์ •๊ตํ•จ ์‚ฌ์–‘.

WireGuard์˜ ํ•ต์‹ฌ ๋กœ์ง์€ ๋ชจ๋‘ 4000์ค„ ๋ฏธ๋งŒ์˜ ์ฝ”๋“œ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ˜๋ฉด, OpenVPN๊ณผ IPSec์—๋Š” ์ˆ˜์‹ญ๋งŒ ์ค„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

โ€œ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)".

์กฐ์‚ฌ ๊ฒฐ๊ณผ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ:

๋Œ€์—ญํญ(๋ฉ”๊ฐ€๋น„ํŠธ/์ดˆ)
Linux ์ปค๋„ 5.6์— ํฌํ•จ๋œ VPN WireGuard

ํ•‘(ms)
Linux ์ปค๋„ 5.6์— ํฌํ•จ๋œ VPN WireGuard

ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ:

  • ์ธํ…” ์ฝ”์–ด i7-3820QM ๋ฐ ์ธํ…” ์ฝ”์–ด i7-5200U
  • ๊ธฐ๊ฐ€๋น„ํŠธ ์นด๋“œ Intel 82579LM ๋ฐ Intel I218LM
  • Linux 4.6.1
  • WireGuard ๊ตฌ์„ฑ: MAC์šฉ Poly256๋ฅผ ๊ฐ–์ถ˜ 20๋น„ํŠธ ChaCha1305
  • ์ฒซ ๋ฒˆ์งธ IPsec ๊ตฌ์„ฑ: MAC์šฉ Poly256๋ฅผ ๊ฐ–์ถ˜ 20๋น„ํŠธ ChaCha1305
  • ๋‘ ๋ฒˆ์งธ IPsec ๊ตฌ์„ฑ: AES-256-GCM-128(AES-NI ํฌํ•จ)
  • OpenVPN ๊ตฌ์„ฑ: HMAC-SHA256-2, UDP ๋ชจ๋“œ๋ฅผ ๊ฐ–์ถ˜ AES 256๋น„ํŠธ ๋™๋“ฑ ์•”ํ˜ธํ™” ์ œํ’ˆ๊ตฐ
  • ์„ฑ๋Šฅ์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธก์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. iperf3, 30๋ถ„ ๋™์•ˆ์˜ ํ‰๊ท  ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด๋ก ์ ์œผ๋กœ ์ผ๋‹จ ๋„คํŠธ์›Œํฌ ์Šคํƒ์— ํ†ตํ•ฉ๋˜๋ฉด WireGuard๋Š” ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์ปค๋„์— ๋‚ด์žฅ๋œ Crypto API ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์œผ๋กœ์˜ ์ „ํ™˜์œผ๋กœ ์ธํ•ด ๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค ๋ชจ๋‘๊ฐ€ ์•„์ง ๊ธฐ๋ณธ WireGuard์˜ ์„ฑ๋Šฅ ์ˆ˜์ค€์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

โ€œ๋‚ด ๊ด€์ ์—์„œ ๋ณด๋ฉด WireGuard๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•˜์œ„ ์ˆ˜์ค€ ๊ฒฐ์ •์€ ์‚ฌ์–‘์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ VPN ์ธํ”„๋ผ๋ฅผ ์ค€๋น„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋‹จ ๋ช‡ ๋ถ„ ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ะฟะธัะฐะปะธ 2018๋…„ ์•„๋ธŒ๋ ˆ์—์„œ. โ€” ์„ค์น˜ ๊ณผ์ • ์ž์„ธํžˆ ์„ค๋ช… ๊ณต์‹ ์›น ์‚ฌ์ดํŠธ์—์„œ ์šฐ์ˆ˜์„ฑ์„ ๋ณ„๋„๋กœ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. OpenWRT ์ง€์›. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ ์šฉ์ด์„ฑ๊ณผ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ๊ฐ„๊ฒฐ์„ฑ์€ ํ‚ค ๋ฐฐํฌ๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ธ์ฆ์„œ ์‹œ์Šคํ…œ๋„ ์—†๊ณ  ์ด ๋ชจ๋“  ๊ธฐ์—… ๊ณตํฌ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์งง์€ ์•”ํ˜ธํ™” ํ‚ค๋Š” SSH ํ‚ค์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค."

WireGuard ํ”„๋กœ์ ํŠธ๋Š” 2015๋…„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ๋˜์–ด ์™”์œผ๋ฉฐ ๊ฐ์‚ฌ๋ฅผ ๊ฑฐ์ณ ์ •์‹ ๊ฒ€์ฆ. WireGuard ์ง€์›์€ NetworkManager ๋ฐ systemd์— ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ปค๋„ ํŒจ์น˜๋Š” Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph ๋ฐ ALT์˜ ๊ธฐ๋ณธ ๋ฐฐํฌํŒ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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