저번글에서는 라즈베리파이에 Ubuntu 를 설치하였습니다. 이제 외부에서 접근하기위해선 포트를 열어줘야 하는데, 그렇게 되면 별 볼일 없는 라즈베리파이 서버이겠지만서도 해킹당할 수 있기 때문에 VPN 을 통해 접근 할 수 있게 설정하려고 합니다. TailScale 또는 WireGuard 를 찾아보던 중에 서버형님들이 계신 서버포럼에 wg-easy 설정하는 게시물이 있길래 따라해보았습니다.
1. wg-easy 설치하기
https://svrforum.com/svr/197124 님에게 감사 인사를 드리며 . 해당 포스팅을 참고하여 설정하였습니다. WireGuard 가 무엇인지 어떻게 설정하는지 등 모든 소개가 적혀져 있으니 관심 있으신 분들은 가입 하시는것도 추천 드려요. 거의 똑같이 따라하긴 했지만 변경된 부분들도 조금씩 있어서 다시 한번 기입해보는걸로 하겠습니다.
1.1 설치 환경
Ububtu 22.04.05 LTS
Docker + Docker compose
사용 이미지 : https://hub.docker.com/r/weejewel/wg-easy
https://hub.docker.com/r/weejewel/wg-easy
hub.docker.com
* VPN을 사용하기 위해서 VPN 사용포트인 51820 포트를 공유기나 방화벽상에서 포트포워딩 해야 합니다.
저는 netis 공유기를 사용하고 있어 다음과 같이 설정하였습니다.
1.2 wg-easy 컨테이너 생성하기
컨테이너 생성 전에 설정 파일과 데이터를 저장할 디렉터리를 만들었습니다.
mkdir -p /data/wg-easy/
mkdir -p /data/wg-easy/data
vim /data/wg-easy/docker-compose.yml
다음은 wg-easy 에 관한 docker-compose.yml 파일 입니다. 포스팅 내용에는 version 을 쓰셨지만, 업데이트 정책이라나 뭐라나 docker 에 이미지 실행시 version 을 빼라고 해서 뺐습니다. WG_HOST와 PASSWORD 는 반드시 설정해야 합니다.
- WG_PORT : 기본 Wireguard port 이기 때문에 변경할 필요 없음. 변경하려면 아래의 ports 에 호스트쪽 포트를 변경하면 됨
- WG_DEFAULT_ADDRESS : VPN 연결시 할당받을 ip 대역
- WG_DEFAULT_DNS : VPN 연결시 사용할 DNS
- WG_MTU : VPN 연결시 MTU 속도
- WG_ALLOWED_IPS : VPN 트래픽이 허용될 IP 주소 범위를 지정
services:
wg-easy:
environment:
- WG_HOST=[사용하고 있는 도메인 or 공인 ip]
- PASSWORD=[처음 접속시에 필요한 비밀번호 설정(반드시)]
#Optional:
- WG_PORT=51820
- WG_DEFAULT_ADDRESS=10.8.0.x
- WG_DEFAULT_DNS=1.1.1.1
- WG_MTU=1420
- WG_ALLOWED_IPS=192.168.1.0/24, 10.8.0.0/24
image: weejewel/wg-easy
container_name: wg-easy
volumes:
- /data/wg-easy/data:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
1.3 wg-easy GUI 접속 및 사용하기
docker-compose.yml 을 작성 했다면 docker compose up -d
명령어로 컨테이너를 생성합니다.
이렇게 되면 성공 !
이제 ip:51821 포트로 접속하면 아래 그림처럼 로그인 창이 나타납니다. Password 는 아까 지정해놓으신 PW 로 접속하면 됩니다. 필자의 경우 라즈베리파이 주소에 51821 포트로 접근하였습니다.
로그인이 완료된 후에 New Client 또는 New 를 클릭하여 새로운 클라이언트를 생성합니다.
원하는 이름을 작성한뒤 클라이언트를 만들게 되면 아래와 같은 화면이 뜨는데 QR의 경우 핸드폰으로 접속할 때 유용하고 다운로드를 하면 설정 파일을 다운로드 할 수 있게 됩니다.
2. macOS 에서 Wireguard 설정하기
자 이제 맥북, 윈도우 각자의 local 환경에서 ip:51821 로 접속한 뒤에 다운로드 버튼을 클릭하여 공개키를 저장합니다. 그 이후에 로컬 환경에 WireGuard 를 설치해야 합니다.
필자의 경우 보통 mac 에 어플리케이션을 설치할 때 homebrew 를 애용하는데 WireGuard 는 brew 에 없어서 App Store 를 통해 macbook 에 설치하였습니다. https://apps.apple.com/kr/app/wireguard/id1451685025?mt=12
WireGuard
WireGuard is a fast, modern, and secure VPN tunnel. This app allows users to manage and use WireGuard tunnels. The app can import new tunnels from archives and files, or you can create one from scratch. It is currently undergoing rapid development, and
apps.apple.com
설치가 완료되면 아래와 같은 그림의 빈 페이지가 출력 될 것입니다.
좌측 하단의 + 버튼을 클릭한 뒤 import tunnel(s) from file... 을 클릭하여 아까 받아 둔 공개키를 설정하면 자동으로 삽입 되어지는 것을 확인할 수 있습니다.
공개키 설정이 잘 된것 확인한 뒤에 Activate 를 눌러주면
Data received 와 Data sent 의 값이 계속 올라갈텐데, 이렇게 되면 이제 성공 !
이제 외부에서도 라즈베리파이에 22번 포트를 열지 않고 접속이 가능 !
'라즈베리파이 가지고 놀기' 카테고리의 다른 글
라즈베리파이에 Object Storage Minio 설정하기 (3) | 2024.10.29 |
---|---|
외부에서 도메인으로 접속 가능하게 설정하기 (4) | 2024.10.22 |
docker compose 설정 변경하기 (0) | 2024.10.18 |
라즈베리파이4에 nginx 올리기 (2) | 2024.10.18 |
라즈베리파이4에 Ubuntu 22.04.05 LTS 설치하기 (4) | 2024.10.17 |