본문 바로가기

쿠분투

WireGuard로 외부에서 내부 네트워크의 각각 PC에 접속하자

*본 글은 Gemini와 ChatGPT를 활용하여 작성하였습니다.

(1) 서버 터미널에서 아래 명령어를 복사해서 실행한다.

chmod +x wireguard-install.sh
sudo ./wireguard-install.sh

*wireguard의 설치 스크립트가 두 가지 방식이 있다. 하나는 위에 적은 것이고, 하나는 아래에 적은 것이다. 아래에 적은 방식보다 위에 적은 방식이 보다 간단하다.

(2) 명령어를 실행하면 터미널 창에 영어로 질문들이 하나씩 나타난다. 대체로 엔터(Enter)를 쳐서 기본값을 사용한다.

1) 사용될 IPv4 address를 설정한다. 엔터(Enter) 키를 누른다.

2) WireGuard가 수신대기할 포트를 설정한다. 엔터(Enter) 키를 누른다.

3) 첫번째 클라이언트 이름을 입력한다. 여기서는 SwkooPC2 이다.

4) 클라이언트를 위한 DNS 서버를 선택한다. 엔터(Enter) 키를 누른다.

(3) 다음의 명령어를 입력해 잘 작동하는지 확인한다. 정상이면 녹색으로 active 문자가 나타난다.

sudo systemctl status wg-quick@wg0

(4) 설치를 종료하면 현재 폴더에 SwkooPC2.conf 파일이 생성된다. 이 파일을 클라이언트 PC에 다운로드 후, 다음과 같이 입력해서 설정 파일을 wireguard 폴더에 복사한다.​

sudo cp SwkooPC2.conf /etc/wireguard/
sudo chmod 600 /etc/wireguard/SwkooPC2.conf

(5) 터미널에서 아래와 같이 입력해서 wireguard를 설치한 후, 클라이언트 PC의 WireGuard VPN 인터페이스를 시작하거나 종료한다.

sudo apt install wireguard
sudo wg-quick up SwkooPC2
sudo wg-quick down SwkooPC2

(6) 서버 IP를 확인하기 위해 다음과 같이 입력하여 Address 항목을 확인한다.

sudo cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.7.0.1/24

(7) 클라이언트 IP는 아래와 같은 방법으로 확인한다.

sudo cat /etc/wireguard/SwkooPC2.conf
[Interface]
Address = 10.7.0.2/24

* 본인의 PC는 서버 IP가 10.7.0.1이고 클라이언트 IP가 10.7.0.2 인데, 끝번호가 순차적으로 올라가는 것을 알 수 있다.

(8) [Interface]에 ListenPort가 51820으로 되어 있는 경우 다음과 같이 서버 PC의 UDP 51820을 허락해야 한다.

[Interface]
ListenPort = 51820
sudo ufw allow 51820/udp

(9) 인터넷에서 들어오는 특정 포트의 요청을 내부 네트워크에 있는 장치로 전달하기 위해 서버 PC에 포트포워딩을 해주어야 한다. 공유기 주소인 192.168.0.1에 접속해 다음과 같이 포트포워딩 설정을 해준다.

항목
서비스 이름
WireGuard
프로토콜
UDP
외부 포트
51820
내부 IP
192.168.0.16 (ip a 명령어로 확인한다.)
내부 포트
51820

(10) sftp 접속을 통해 같은 네트워크 안의 다음의 주소가 정확히 작동하는지 확인한다.

참고 : https://blog.naver.com/swkoo981/224216138193

*PC 1(서버) : 10.7.0.1

*PC 2(클라이언트) : 10.7.0.2