P1.5P ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ ์‹œ์Šคํ…œ Nebula 2 ์ถœ์‹œ

๋ณด์•ˆ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” Nebula 1.5 ํ”„๋กœ์ ํŠธ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ณต๊ธ‰์ž๊ฐ€ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ๋œ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ˆ˜๋งŒ ๊ฐœ๊นŒ์ง€ ํ†ตํ•ฉํ•˜์—ฌ ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์œ„์— ๋ณ„๋„์˜ ๊ฒฉ๋ฆฌ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋™๋ช…์˜ ๊ธฐ์—… ๋ฉ”์‹ ์ €๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์Šฌ๋ž™(Slack)์— ์˜ํ•ด ์„ค๋ฆฝ๋๋‹ค. Linux, FreeBSD, macOS, Windows, iOS ๋ฐ Android๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Nebula ๋„คํŠธ์›Œํฌ์˜ ๋…ธ๋“œ๋Š” P2P ๋ชจ๋“œ์—์„œ ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ง์ ‘ VPN ์—ฐ๊ฒฐ์ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ฐ ํ˜ธ์ŠคํŠธ์˜ ์‹ ์›์€ ๋””์ง€ํ„ธ ์ธ์ฆ์„œ๋กœ ํ™•์ธ๋˜๋ฉฐ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์ธ์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž๋Š” Nebula ๋„คํŠธ์›Œํฌ์˜ IP ์ฃผ์†Œ, ํ˜ธ์ŠคํŠธ ๊ทธ๋ฃน์˜ ์ด๋ฆ„ ๋ฐ ๋ฉค๋ฒ„์‹ญ์„ ํ™•์ธํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋Š” ๋‚ด๋ถ€ ์ธ์ฆ ๊ธฐ๊ด€์—์„œ ์„œ๋ช…ํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ์ž‘์„ฑ์ž๊ฐ€ ํ•ด๋‹น ์‹œ์„ค์— ๋ฐฐํฌํ•˜๋ฉฐ, ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์˜ ๊ธฐ๊ด€์„ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ธ์ฆ๋œ ๋ณด์•ˆ ํ†ต์‹  ์ฑ„๋„์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Nebula๋Š” Diffie-Hellman ํ‚ค ๊ตํ™˜ ํ”„๋กœํ† ์ฝœ๊ณผ AES-256-GCM ์•”ํ˜ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ž์ฒด ํ„ฐ๋„ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์€ WireGuard, Lightning ๋ฐ I2P์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” Noise ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ ์ œ์ž‘๋˜๊ณ  ์ž…์ฆ๋œ ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋…๋ฆฝ์ ์ธ ๋ณด์•ˆ ๊ฐ์‚ฌ๋ฅผ ๋ฐ›์€ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์กŒ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ˆ˜ "๋“ฑ๋Œ€" ๋…ธ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ด ๋…ธ๋“œ์˜ ๊ธ€๋กœ๋ฒŒ IP ์ฃผ์†Œ๋Š” ๊ณ ์ •๋˜์–ด ๋„คํŠธ์›Œํฌ ์ฐธ๊ฐ€์ž์—๊ฒŒ ์•Œ๋ ค์ง‘๋‹ˆ๋‹ค. ์ฐธ์—ฌ ๋…ธ๋“œ๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ธ์ฆ์„œ๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์†Œ์œ ์ž๋Š” ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์Šค์Šค๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ธฐ์กด IP ๋„คํŠธ์›Œํฌ์™€ ๋‹ฌ๋ฆฌ ๋‹จ์ˆœํžˆ IP ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ„ฐ๋„์ด ์ƒ์„ฑ๋˜๋ฉด ํ˜ธ์ŠคํŠธ์˜ ์‹ ์›์€ ๊ฐœ๋ณ„ ๊ฐœ์ธ ํ‚ค๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ์—๋Š” ํŠน์ • ๋ฒ”์œ„์˜ ์ธํŠธ๋ผ๋„ท ์ฃผ์†Œ(์˜ˆ: 192.168.10.0/24)๊ฐ€ ํ• ๋‹น๋˜๊ณ  ๋‚ด๋ถ€ ์ฃผ์†Œ๋Š” ํ˜ธ์ŠคํŠธ ์ธ์ฆ์„œ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณ„๋„์˜ ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง ๊ทœ์น™์ด ์ ์šฉ๋˜๋Š” ๋ณ„๋„์˜ ์„œ๋ฒ„ ๋ฐ ์›Œํฌ์Šคํ…Œ์ด์…˜๊ณผ ๊ฐ™์ด ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์˜ ์ฐธ๊ฐ€์ž๋กœ๋ถ€ํ„ฐ ๊ทธ๋ฃน์„ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NAT(์ฃผ์†Œ ๋ณ€ํ™˜๊ธฐ) ๋ฐ ๋ฐฉํ™”๋ฒฝ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Nebula ๋„คํŠธ์›Œํฌ(์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ฒฝ๋กœ)์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ํƒ€์‚ฌ ํ˜ธ์ŠคํŠธ์˜ ํŠธ๋ž˜ํ”ฝ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Nebula ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์˜ ๋…ธ๋“œ ๊ฐ„ ์•ก์„ธ์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉํ™”๋ฒฝ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋Š” ACL์€ ํ•„ํ„ฐ๋ง์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์˜ ๊ฐ ํ˜ธ์ŠคํŠธ๋Š” ํ˜ธ์ŠคํŠธ, ๊ทธ๋ฃน, ํ”„๋กœํ† ์ฝœ ๋ฐ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์ฒด ํ•„ํ„ฐ๋ง ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ๋Š” IP ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๋””์ง€ํ„ธ ์„œ๋ช…๋œ ํ˜ธ์ŠคํŠธ ์‹๋ณ„์ž๋กœ ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์กฐ์ •ํ•˜๋Š” ์ธ์ฆ ์„ผํ„ฐ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ ์œ„์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • ์ธ์ฆ์„œ์˜ PEM ํ‘œํ˜„์„ ์ธ์‡„ํ•˜๊ธฐ ์œ„ํ•ด print-cert ๋ช…๋ น์— "-raw" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด Linux ์•„ํ‚คํ…์ฒ˜ riscv64์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ—ˆ์šฉ๋œ ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก์„ ํŠน์ • ์„œ๋ธŒ๋„ท์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ—˜์ ์ธ remote_allow_ranges ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ ๋ขฐ ์ข…๋ฃŒ ๋˜๋Š” ์ธ์ฆ์„œ ์ˆ˜๋ช…์ด ๋งŒ๋ฃŒ๋œ ํ›„ ํ„ฐ๋„์„ ์žฌ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด pki.disconnect_invalid ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • unsafe_routes ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .metric์€ ํŠน์ • ์™ธ๋ถ€ ๊ฒฝ๋กœ์— ๊ฐ€์ค‘์น˜๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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