wg

wg는 WireGuard tunnel interface의 전용 configuration을 조회하고 변경하는 command-line utility다. interface 생성·삭제, IP address와 route 설정은 운영체제의 network tool이 담당한다.

  • command를 생략하면 show가 기본값이다.
  • show는 interface와 peer의 runtime 상태를, set 계열은 WireGuard 전용 설정을 다룬다.
  • genkey, pubkey, genpsk로 key material을 생성·변환한다.
  • wg set의 runtime 변경은 configuration file에 자동으로 기록되지 않는다.

wg는 일반적으로 wireguard-tools 또는 WireGuard client package에 포함된다.

sudo apt update
sudo apt install wireguard
sudo dnf install wireguard-tools

WireGuard upstream이 명시한 RHEL 절차는 RHEL 8용이다. 다른 major version에는 해당 배포판의 현재 package 지침을 확인한다.

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
sudo yum install kmod-wireguard wireguard-tools
brew install wireguard-tools

공식 WireGuard installer 또는 MSI는 tunnel service에서 사용할 수 있는 표준 wg utility를 제공한다. Windows Package Manager community source를 사용할 때는 다음 package를 설치할 수 있다.

winget install --exact --id WireGuard.WireGuard
wg --version
wg help
현재 문서 작성 환경에는 wg가 설치되어 있지 않아 live help를 실행하지 않았다. command와 argument는 upstream wg(8) manual을 기준으로 정리했다.
  • wg COMMAND [OPTIONS] ARGS
sudo wg show
sudo wg show wg0
Command 역할
show interface configuration과 runtime 상태 출력
showconf 현재 설정을 wg configuration 형식으로 출력
set interface 또는 peer의 runtime 설정 변경
setconf file 내용으로 현재 설정 교체
addconf file 내용을 현재 설정에 추가
syncconf 현재 설정과 file의 차이만 반영
genkey base64 private key 생성
genpsk base64 preshared key 생성
pubkey standard input의 private key에서 public key 계산
help usage 출력

private key 파일이 다른 사용자에게 노출되지 않도록 restrictive umask를 먼저 적용한다.

umask 077
wg genkey | tee privatekey | wg pubkey > publickey
wg genpsk > presharedkey
  • privatekey는 해당 peer 밖으로 공유하지 않는다.
  • publickey만 상대 peer의 PublicKey에 등록한다.
  • presharedkey는 선택 사항이며 양쪽 peer에 안전한 별도 경로로 전달한다.
  • terminal 화면, shell argument, chat, ticket에 실제 key를 붙여 넣지 않는다.
sudo wg show
sudo wg show wg0
sudo wg show interfaces
sudo wg show wg0 latest-handshakes
sudo wg show wg0 transfer
ip address show dev wg0
ip route show

latest-handshakes, endpoints, allowed-ips, transfer, dump 같은 selector는 script-friendly output을 제공한다. pretty output에서는 private key와 preshared key가 기본적으로 숨겨진다.

sudo wg showconf wg0
sudo wg set wg0 peer PEER_PUBLIC_KEY \
  endpoint vpn.example.com:51820 \
  allowed-ips 10.10.0.2/32 \
  persistent-keepalive 25
sudo wg set wg0 peer PEER_PUBLIC_KEY remove
private key와 preshared key는 process argument가 아닌 file path로 전달한다. wg set의 runtime 변경은 file에 자동으로 저장되지 않으므로 source of truth와의 차이를 관리한다.

wg-quick 전용 항목을 제거한 configuration의 차이만 활성 interface에 반영한다.

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)

address, DNS, route, MTU 또는 hook은 wg의 관리 범위가 아니므로 별도 lifecycle 처리가 필요할 수 있다.

sudo wg show wg0
sudo ss -lunp | grep 51820
ip route get PEER_ENDPOINT_IP
  • 양쪽 PublicKey, 선택적 PresharedKey, server의 ListenPort를 확인한다.
  • UDP firewall/NAT port forwarding과 endpoint hostname·port를 확인한다.
  • NAT 뒤에서 수신을 기다려야 하는 peer에만 PersistentKeepalive = 25를 고려한다.
  • 양쪽 AllowedIPs가 겹치거나 빠지지 않았는지 확인한다.
  • interface address, route, forwarding과 firewall forwarding policy를 확인한다.
  • site-to-site 또는 internet gateway에서는 return route와 NAT 정책을 별도로 검토한다.
  • wg는 WireGuard 전용 설정을 다루며 Linux의 link, address, route 자체는 ip command 등이 담당한다.
  • Windows tunnel service도 표준 wg utility로 runtime 상태를 조회·변경할 수 있지만 service lifecycle은 Windows 전용 interface를 따른다.
  • codex:: 2026-08-13 WireGuard 문서에서 wg command reference를 분리했다.
  • /home/u613600155/domains/cli.zerotymer.net/public_html/data/pages/wireguard/wg/ko.txt
  • 마지막으로 수정됨: 2026/08/12 23:59
  • (바깥 편집)