VPN: Netbird

[์›๋ณธ ๋งํฌ]

Netbird๋Š” VPN ๊ตฌ์ถ•์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ก์‹œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋‹ค. tailscale์˜ ๊ฒฝ์Ÿ์ž๋กœ ๋น ๋ฅด๊ฒŒ ๋ถ€์ƒํ–ˆ๋‹ค.
Go๋กœ ๋งŒ๋“ค์–ด์ ธ์žˆ๊ณ , BSD ๋ผ์ด์„ผ์Šค์˜ ์˜คํ”ˆ์†Œ์Šค๋‹ค.

ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜คํ”ˆ์†Œ์Šค๋ผ์„œ Self-Hosted ๊ตฌ์ถ•๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.




๊ธฐ๋ณธ ์›๋ฆฌ

๊ธฐ๋ณธ์ ์ธ ๋…ผ๋ฆฌ๋Š” ๊ทธ๋‹ค์ง€ ์–ด๋ ค์šธ ๊ฒƒ์€ ์—†๋‹ค.
์—ฌ๋Ÿฌ๊ฐœ์˜ Peer(์ปดํ“จํ„ฐ)๊ฐ€ ๋‹จ์ผ netbird๋ฅผ ์ค‘๊ณ„๊ธฐ๋กœ ์‚ผ์•„ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋“ฑ๋ก๋œ Peer๋“ค์€ netbird์—์„œ ํ• ๋‹นํ•œ ์ „์šฉ IP๋“ค์„ ๊ฐ–๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋ฉด Peer๋“ค๋ผ๋ฆฌ๋Š” Netbird ์„œ๋ฒ„๋ฅผ ์ค‘๊ณ„๊ธฐ๋กœ ์‚ผ์•„์„œ Peer ID๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด ํ†ต์‹ ์€ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ, hole punching์œผ๋กœ ์ง์ ‘ ํ†ต์‹ ์„ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , netbird๋ฅผ relay๋กœ ์‚ผ์•„์„œ ๊ฐ„์ ‘ ํ†ต์‹ ์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์•„๋ฌดํŠผ ํ•ต์‹ฌ์€ Peer๋ผ๋ฆฌ ์€๋ฐ€ํ•œ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.




vs Tailscale

netbird์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๊ฒฝ์Ÿ์ž๋Š” ์ „ํ†ต์˜ ๊ฐ•์ž์ธ tailscale์ด๋‹ค.
https://blog.naver.com/sssang97/224169470281
netbird๊ฐ€ ํ›„๋ฐœ์ฃผ์ž๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ tailscale์— ๋น„ํ•˜๋ฉด ์•ˆ์ •์„ฑ์ด๋‚˜ ๊ตฌํ˜„ ์ˆ˜์ค€์—์„œ ๋ชจ์ž๋ž€ ๋ชจ์Šต์„ ์ข€ ๋ณด์—ฌ์ค€๋‹ค.
ํŠนํžˆ Android๋ฅผ ๋น„๋กฏํ•œ ์•ฑ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ธฐ๋Šฅ์ด ๋ถˆ์™„์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ์ง€๊ธˆ๋„ ๊ณ„์† ์ง€์ ๋˜๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์™„์ „ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ผ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์žฅ์ ์ด๊ณ , ํƒ€์‚ฌ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋น„์šฉ/๋ณด์•ˆ ๋…๋ฆฝ์ ์œผ๋กœ VPN ์ค‘๊ณ„๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.




๋น„์šฉ (Cloud)

https://netbird.io/pricing
์ด๊ฒƒ๋„ tailscale๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค์šฐ ๋„๋„ํ•˜๊ณ  ํ›„ํ•œ ๋ฌด๋ฃŒ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ•ด์ค€๋‹ค.


Free Plan์˜ ๊ฒฝ์šฐ์—๋Š” ํŒ€ ๊ณ„์ •์„ 5๊ฐœ๊นŒ์ง€ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ณ , ๊ธฐ๊ธฐ ์ œํ•œ์€ 100๊ฐœ๋‹ค.
tailscale์ด ๊ณ„์ • ์ œํ•œ์ด 3๊ฐœ๋ผ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด ๊ฝค ๊ดœ์ฐฎ๋‹ค.

ํŒ€ ํ”Œ๋žœ์€ ์œ ์ € ํ•œ๋ช…๋‹น ์›” 5๋‹ฌ๋Ÿฌ.
๋น„์ฆˆ๋‹ˆ์Šค ํ”Œ๋žœ์€ ์œ ์ € ํ•œ๋ช…๋‹น ์›” 10๋‹ฌ๋Ÿฌ๋‹ค.

ํŒ€์— ์†ํ•œ ์œ ์ €๋‹น ๋น„์šฉ์ด ์ฃผ๋œ ๋น„์šฉ ๋ฐœ์ƒ ์ง€์ ์ด๊ณ , ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ๋น„์šฉ ๊ณผ๊ธˆ ๊ตฌ์กฐ๋Š” ์—†๋‹ค.
์ค‘์†Œ๊ทœ๋ชจ ์กฐ์ง์—์„œ๋Š” ๋ฌด๋ฃŒ๋กœ๋„ ๊ดœ์ฐฎ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.




์„ค์น˜

์„ค์น˜๋Š” ๊ฐ„ํŽธํ•˜๊ฒŒ ์ œ๊ณต๋œ๋‹ค.
https://app.netbird.io/install

Windows๋Š” ์ธ์Šคํ†จ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์„ค์น˜ ๊ฐ€๋Šฅํ•˜๊ณ , Mac, Linux์—์„œ๋Š” ์ปค๋งจ๋“œ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

# MacOS
brew install netbirdio/tap/netbird

# Linux
curl -fsSL https://pkgs.netbird.io/install.sh | sh

๊ทธ ์ดํ›„์—๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์„œ ์ดˆ๊ธฐ ์„ธํŒ…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

sudo netbird service install
sudo netbird service start
netbird up

netbird up์„ ์น˜๋ฉด ๋กœ๊ทธ์ธ ์ฐฝ ๋œจ๋ฉด์„œ ๋กœ๊ทธ์ธ์„ ์š”๊ตฌํ•œ๋‹ค.


๊ทธ๋Ÿผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€์„œ ์ ์ ˆํžˆ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๋œ๋‹ค.
์œ ์˜ํ•  ์ ์€, ์ด๋ ‡๊ฒŒ UI๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์€ ์ธ์ฆ์— ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฑด ํ†ต์‹ ์ด ๋Š๊ฒจ๋„ ๋˜๋Š” ์ผ์‹œ์  client์ธ ๊ฒฝ์šฐ์—๋งŒ ์œ ํšจํ•˜๊ณ , ์‹ค์ œ๋กœ ์„œ๋น„์Šค์— ์ ์šฉํ•  ๋•Œ๋Š” API Key๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ ๊ทธ๊ฑธ๋กœ up์„ ํ•ด์•ผํ•œ๋‹ค.




์‚ฌ์šฉ

netbird ๋“ฑ๋ก์ด ์ž˜ ๋๋‹ค๋ฉด, status ๋ช…๋ น์„ ํ†ตํ•ด ํ”ผ์–ด์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‚ด netbird IP๋„ ํ• ๋‹น๋˜์–ด์žˆ๊ณ , ๋‹ค๋ฅธ peer๋“ค๋„ ๋” ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋œฌ๋‹ค.


d ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ๋ฉด ๋” ์ƒ์„ธํ•˜๊ฒŒ peer ๋ชฉ๋ก ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ณด์•ˆ ์˜ต์…˜์„ ํฌํ•จํ•œ ๊ณ ๊ธ‰ ์ œ์–ด๋“ค์€ ์ „์šฉ netbird ์ฝ˜์†” ํ™”๋ฉด์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์•ก์…˜์—๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค.

์•„๋ฌดํŠผ peer๊ฐ€ ๋“ฑ๋ก์ด ๋˜์—ˆ๋‹ค๋ฉด, ์ƒ๊ธฐํ–ˆ๋“ฏ์ด Peer IP๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ Peer์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค.
peer๋ฅผ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•˜๋‚˜ ์žก๊ณ  ping์„ ๋‚ ๋ ค๋ดค๋‹ค.

์ด๋ ‡๊ฒŒ ์ž˜ ๊ฐ„๋‹ค๋ฉด, ์—ฐ๊ฒฐ ์ž์ฒด๋Š” ์ž˜ ์—ฎ์˜€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿผ ์ด์ œ ์ € IP๋ฅผ ์จ์„œ HTTP API๋ฅผ ๋‚ ๋ฆฌ๊ฑฐ๋‚˜ ํ•˜๋Š” ์ด๋Ÿฐ์ €๋Ÿฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค.




ssh

netbird๋Š” SSH ์—ฐ๊ฒฐ๋„ ์ง€์›ํ•œ๋‹ค. ๋งŒ์•ฝ ํ˜„์žฌ ์žฅ๋น„๋ฅผ ssh๋กœ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, up์„ ํ• ๋•Œ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค.

netbird down
netbird up --allow-server-ssh --enable-ssh-root

์•„๋งˆ netbird๋‚˜ tailscale ๊ฐ™์€ ์ค‘๊ณ„๊ธฐ๋ฅผ ์“ฐ๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๊ฐ€ ์ด๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹ค.
์ด๋ ‡๊ฒŒ ํ”ผ์–ด๋ฅผ ๋“ฑ๋กํ•ด๋†จ๋‹ค๋ฉด, ๋‹ค๋ฅธ ํ”ผ์–ด๋Š” ์ด ํ”ผ์–ด์˜ netbird IP๋ฅผ ํ†ตํ•ด ssh ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.



์ฐธ์กฐ
https://github.com/netbirdio/netbird
https://docs.netbird.io/manage/peers/ssh