Linux 에 Wireguard 설치하고 실행하기

패키지 설치

  • 관련 패키지 설치
1
2
sudo apk update
sudo apk add wireguard-tools iptables
  • 패키지 설치 확인
1
wg --version
1
wireguard-tools v1.0.20250521 - https://git....

Wireguard 키 생성

  • wireguard 키 생성
1
2
3
4
5
sudo mkdir -p /etc/wireguard
cd /etc/wireguard

sudo umask 077
sudo wg genkey | sudo tee server.key | sudo wg pubkey | sudo tee server.pub
  • 생성된 키파일
1
ls -al
1
2
server.key # 개인키
server.pub # 클라이언트에 배포하는 공개키

Wireguard 인터페이스 설정 파일 작성

1
sudo vi /etc/wireguard/wg0.conf
1
2
3
4
5
6
7
8
[Interface]
Address = 10.10.0.1/24
ListenPort = 1234 # 실제 사용할 VPN 포트 입력
PrivateKey = (server.key 내용 붙여넣기) # server.key 내용 붙여넣기
SaveConfig = true

PostUp   = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o (네트워크 인터페이스명) -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o (네트워크 인터페이스명) -j MASQUERADE
  • 위 항목들을 작성합니다.
  • (1) PrivateKey에는 전 단계에서 생성한 개인 키(server.key)의내용을 붙여넣습니다.
  • (2) PostUp, PostDown 의 뒷부분 네트워크 인터페이스 명에는 실제 인터페이스 명을 넣어줍니다.
  • (3) Address 10.10.0.0 대역은 “VPN 전용 가상 대역”입니다. 실제 LAN 대역과 다르다고 해서 문제가 되지 않습니다.

커널 포워딩 활성화

1
2
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf

Wireguard 인터페이스 가동

  • 가동
1
sudo wg-quick up wg0
  • 확인
1
2
wg
ip addr show wg0
1
2
3
4
# >> ...
# >> wg0
# >> inet 10.10.0.1/24 scope global wg0
# >> ...

부팅 시 자동 시작 설정

  • 서비스 등록
1
2
3
4
5
# 심볼릭 링크 생성
ln -s /etc/init.d/wg-quick /etc/init.d/wg-quick.wg0

# 서비스 등록
sudo rc-update add wg-quick.wg0 default

클라이언트 키 생성

  • 클라이언트 키 생성
1
wg genkey | tee client.key | wg pubkey > client.pub
  • 생성된 키파일
1
ls -al
1
2
client.key # 클라이언트의 개인키
client.pub # 클라이언트의 공개키

Wireguard Config 에 클라이언트 추가

  • wireguard config 파일에 클라이언트 내용을 추가합니다.
1
vi /etc/wireguard/wg0.conf
1
2
3
4
5
... (기존 인터페이스 내용 유지)

[Peer]
PublicKey = (client.pub)
AllowedIPs = 10.10.0.2/32 # 앞서 작성한 인터페이스 파일과 다른 IP

공유기 - VPN 포트포워딩

  • 공유기에서 VPN 포트포워딩 설정을 해줍니다.
  • 이 부분은 공유기마다 다르기도 하고, 다른 글들에서 많이 소개되므로 넘어가겠습니다.

클라이언트 사이드 설정

tunnel 설정

  • 클라이언트에서 wireguard 애플리케이션을 설치한 뒤, 아래와 같이 tunnel 을 설정해줍니다.
1
2
3
4
5
6
7
8
9
10
[Interface]
PrivateKey = (client.key) # 앞서 생성한 client.key 내용 붙여넣기
Address = 10.10.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = (server.pub)
Endpoint = (집 공유기 공인IP:공유기에서 열어놓은 VPN 포트) # XXX.XXX.XXX.XXX:1234
AllowedIPs = 0.0.0.0/0 # 또는 특정 IP
PersistentKeepalive = 25

text to QRcode

  • 위와 같이 긴 설정값을 스마트폰이나 태블릿에 직접 작성하는 것은 힘든 작업이 될 수 있습니다.
  • 이럴 땐 설정 텍스트들을 QR 코드로 만들어 붙여넣을 수 있습니다.
  • 모바일 wireguard 앱에서는 공식적으로 QR 코드로 설정값을 입력할 수 있습니다. 참고해주세요!

https://whdrns2013.github.io/etc/20260104_001_text_to_qr_code/

Comments