• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
가이드

셀프호스팅 VPN 끝판왕(?) Wireguard 기반 Netbird 구축하기.

달소 달소 1908

7

17

 

안녕하세요. 달소입니다.

 

자극적인 제목으로 어그로를 한번 끌어봤습니다 :)

 

이번에 구축해볼 프로젝트는 앞서소개해드렸던 Netbird라는 VPN 프로젝트입니다.

정말 몇일을 이것때문에 소비했는지,, 가이드가있긴한데 2%가 부족해서 삽질도 많이하고 고생을 많이했습니다.
(글쓰는데도 하루가 꼬박,,,)

 

난이도가 쉬운편은 아니지만 구축하면 왜 Wireguard 상위호환인지 금방 깨달을 수 있습니다.

 

간단한 특징은 아래와 같습니다.

  • P2P 통신 가능
  • vpn통신 가능
  • 연결시 내부 구축된 SSO 서버와의 인증 후 연결
  • 중계서버를 이용한 Site to Site 구축 가능, 내부 ACL 통제 가능
  • 자체 호스팅 가능
  • Wireguard 커널 기반의 VPN 통신으로 속도 우수

이렇게 홈서버에 자체구축을 해놓는다면 Oracle Cloud나 기타 클라우드에서도 간단하게 내부망과 연결이 가능하고 연동하여 사용 할 수 있습니다.


이해를 돕기위해 구축 후 찍어본 영상입니다.

Windows 연결 

SSO를 통한 VPN 연결 + 내부 연동 서버로의 ssh open(터미널 문제로 잘안보임 ㅠ) + 연동 테스트(ping)

 

Linux 연동

Linux와 연동을할때도 SSO 인증을 통해 연동이 가능합니다.

 

 

사전 준비사항


Netbird의 경우 Authentik 인증서버를 통해서 인증을 진행하기때문에 Authentik이 미리 구축되어있어야 합니다.

 

Netbird 로 사용할 도메인 ex) netbird.dalso.org
Reverse Proxy : 현재는 NPM에서만 테스트하였습니다. nginx도 가능합니다.

 

UDP 포트오픈 3478, 49152-65535

  • Coturn은 STUN/TURN 프로토콜을 사용하는 릴레이에 사용됩니다. 동적 릴레이 연결을 위해 수신 포트(UDP 3478)와 포트 범위(UDP 49152-65535)가 필요합니다. 이러한 설정은 설치 파일에서 기본값으로 설정되지만 요구 사항에 맞게 구성할 수 있습니다.

 

Authentik 설정

Netbird 구축에 앞서 Authentik의 앱 설정이 필요합니다.

기본 설정가이드는 아래를 참고하시면되나 가장중요한 가이드에 빠져있는부분때문에 제가 삽질을 몇시간을했습니다..

 

 

 

image.png.jpg

image.png.jpg

image.png.jpg

image.png.jpg

 

Create external applications

 

image.png.jpg

 

Create service account

image.png.jpg

image.png.jpg

password는 따로 저장해주세요.

 

image.png.jpg

 

 Add service account to admin group

  • Navigate to authentik admin interface
  • Click Directory on the left menu, then click Groups
  • Click authentik Admins from list of groups and select Users tab at the top
  • Click Add existing user and click + button to add user
  • Select Netbird and click Add
  • Disable Hide service-accounts and verify if user Netbird is added to the group

image.png.jpg

이제 가이드에도 나오지않는 핵심 부분입니다.

 

In Authentik in Admin Interface->System->Tenants->authentik-default->Default flows->Device code flow to default-authenticator-totp

 

image.png.jpg

 

여기까지하면 Authentik 셋팅은 완료되었습니다.

 

여기서 기혹해야할건 Client Token과 서비스계정 pw입니다.

 

Netbird 구축하기

 

저는 /data/netbird라는 폴더로 만들것이기때문에 비슷하게 만드시려면 아래 과정들을 따라해주시면됩니다.

mkdir /data

cd /data

vi netbird.sh

 

#!/bin/bash
REPO="https://github.com/netbirdio/netbird/"
# this command will fetch the latest release e.g. v0.8.7
LATEST_TAG=$(basename $(curl -fs -o/dev/null -w %{redirect_url} ${REPO}releases/latest))
echo $LATEST_TAG

# this comman will clone the latest tag
git clone --depth 1 --branch $LATEST_TAG $REPO
          

 

image.png.jpg

:wq로 저장하고 난 뒤

sh netbird.sh로 실행시켜줍니다.

 

image.png.jpg

 

그다음 cd /netbird/infrastructure_files로 이동해줍니다.

 

image.png.jpg

 

여기부터 시작입니다.

환경변수 지정 -> managemenet 구성 -> docker-compose 실행순입니다.

 

 cp setup.env.example setup.env

 

내용은 아래내용에서 제 도메인이 들어간 부분만 직접 사용하실 netbird 도메인으로 변경해주시면되고

CLIENT_ID 와 IDP부분도 동일하게 작성하시면됩니다.

image.png.jpg

 

작성이 완료되면 ./configure.sh로 설정값을 완성합니다.

이걸로 docker-compose.yml이 생성되는데 바로 컨테이너를 up하면안되고 몇가지 수정이 필요합니다.

 

image.png.jpg

 

vi docker-compose.yml

 

변경 필요 부분. -443 주석

 

image.png.jpg

 

그리고 managemenet.json으로 가서 맨아래 "DeviceAuthorizationFlow": { 부분을 아래와같이 수정해주세

image.png.jpg

 

 

image.png.jpg

 

원래 이미지도 다운로드 받고하는데 시간이 좀 걸리는데 저는 여러번 다시받아서 ㅎㅎ..

 

뭐 아무튼 컨테이너가 정상적으로 올라오면 NPM설정으로 진행합니다.

 

NPM 리버스프록시 설정

netbird 서버의 ip가 192.168.1.18 이라는 가정하에 진행입니다.

image.png.jpg

 

Advanced에 가서 아래 내용을 넣어주세요

location /signalexchange {
        grpc_pass grpc://192.168.1.18:10000;
    }
location /management {
        grpc_pass grpc://192.168.1.18:443;
    }
location /api {
        proxy_pass http://192.168.1.18:443;
    }          

 

image.png.jpg




저는 netbird.dalso.org 도메인으로 했습니다.

접속을 시도하면 바로 authentik 인증페이지로 이동합니다.

 

image.png.jpg

 

그리고 인증을하고나면

image.png.jpg

 

짠...!!! 이거보려고 삽질을 몇일이나 한건지...

 

image.png.jpg

 

클라이언트 연결

윈도우의 경우 netbird 클라이언트를 설치하고 

 

image.png.jpg

 

settings로 가서 도메인을 입력해주시면됩니다.

image.png.jpg

 

그리고 connect를 하고나면 다시 authentik인증페이지가 열리는데 인증하면 netbird에 정상적으로 붙은것입니다.

 

image.png.jpg

 

신고공유스크랩
17
1등
nom 2023.07.05. 01:36

auth audience에는 뭘 넣어야 하나요?

헤놀에선 설치가 안되는가보네요ㅠㅠ envsubst is needed to run this script 라면서 안되네요.

SNFAIUWQ 2023.07.05. 05:47
SNFAIUWQ
뭔가 하긴했는데 이후에 인증후 접속해서 붙는거 까지는 확인했는데 ip 는 그대로네요 뭔가 추가설정을 해야하나요?
profile image
달소 글쓴이 2023.07.05. 10:37
SNFAIUWQ
같은서버에서 구동하려면 setup.env값을 수정해주셔야할것으로 보입니다.

기본적으로 ip가 바뀌지는 않고 WT라는 인터페이스가 생깁니다.
지정해놓은 routing대로 WT 통신을 진행합니다
SNFAIUWQ 2023.07.05. 16:19
달소
아 피어들끼리 통신하는 느낌이군요 setup env 어디를 수정해 줘야할지 감이 안잡히네요 ㅠㅠ
profile image
hilee0602 2023.07.05. 07:09
다중 NAT 환경에서 동작 할 수 있는건 Coturn(STUN/TURN) 덕분이군요. 한번 해봐야겠네요.
이해하면 2023.07.05. 09:06

몬가 엄청난것을 하셨는데 눈이 휘둥그레져서.. 나중에 쓸일이 있을때 좋은 정보가 될듯 합니다.

추가로 궁금한것이 있는데 위작업을 하는 목적이 다른곳에 있는 서버들을 한쪽으로 몰어 넣는 효과가 있는것이죠

B에 있는 서버를 A(집)에서 로컬 네트워크처럼 작동하게 할 수 있다는 의미 인가요?

profile image
달소 글쓴이 2023.07.05. 10:55
이해하면
네 비슷하게 사용이 가능합니다.
말씀하신대로 Site to Site VPN과 같은용도로도 사용할 수 있고
VPN처럼 외부망에서 내부서버로 접속을 할때 사용할수도있구요
profile image
달소 글쓴이 2023.07.05. 10:36
hilee0602
별도의 서버에 구축하시는걸 추천드립니다. or setup.env에서 443포트로 들어가있는부분을 수정해주시면됩니다

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
가이드 Ubuntu 24.04 LTS Desktop 원격 접속 설정하기(SSH,RDP) 3 달소 23시간 전18:33 79 +1
가이드 Ubuntu 24.04 LTS Server 설치해보기 달소 1일 전17:40 157 +2
잡담 Ubuntu 24 가 정식출시되었습니다~~ 8 달소 1일 전10:37 266 +2
3870 정보
image
툭툭이 24.03.28.11:14 874 +17
3869
image
eyeball 23.04.05.21:08 1781 +16
3868 정보
image
antegral 22.05.07.01:18 3179 +16
3867 잡담
image
햇서 23.06.05.05:53 917 +14
3866
image
달소 22.03.17.22:09 19019 +14
3865 정보
image
EXP 24.02.06.03:43 1309 +10
3864
image
달소 22.05.06.15:43 1044 +10
3863
image
달소 22.03.17.22:25 5047 +10
3862 정보
image
달소 24.02.19.00:58 961 +9
3861
image
theb1ue 22.06.14.16:05 4885 +9
3860 가이드
image
opq! 24.04.02.21:25 443 +8
3859 잡담
image
달소 24.01.15.03:22 584 +8
3858
image
달소 23.01.27.14:15 15888 +8
3857
image
달소 22.07.07.16:57 1946 +8
3856
image
달소 22.03.14.17:30 4173 +8
3855
image
달소 22.02.11.13:31 3027 +8
3854 후기
image
cdma2000 24.02.06.13:12 773 +7
가이드
image
달소 23.07.04.20:38 1908 +7
3852
image
앨런임더 23.03.31.21:14 1871 +7
3851 잡담
image
곰삼촌 23.01.25.10:05 1088 +7