Linux 에 Wireguard 설치하고 실행하기
패키지 설치
1
2
| sudo apk update
sudo apk add wireguard-tools iptables
|
1
| wireguard-tools v1.0.20250521 - https://git....
|
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
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
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
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