Skip to content

WireGuard

WireGuard는 암호화 된 가상 사설망을 구현하는 통신 프로토콜 및 무료 오픈 소스 소프트웨어이며 사용 편의성, 고속 성능 및 낮은 공격 표면을 목표로 설계되었습니다. IPsecOpenVPN 터널링 프로토콜보다 더 나은 성능과 전력 절약을 목표로합니다.

기반이 P2P인듯

WireGuardNT

윈도우 커널용 고성능 WireGuard 구현체

  • Windows NT 커널과 NDIS(윈도우 네트워킹 스택) API를 이용하도록 리눅스용 WireGuard를 포팅
  • Windows 7,9,8.1,10 및 AMD64,x86,ARM64 지원
  • 기존 Wintun 기반으로 실행되는 wireguard-go 는 userspace 에서 실행되지만, WireGuardNT 는 리눅스/BSD 에서 실행되는 것처럼 네트워킹 스택과 깊숙이 연동되어 실행
  • 작은 테스트 기기에서도 ~7.5Gbps TX 달성. 하지만 더 최적화 가능할 것
    • 윈도우 사용자들의 이더넷 연결은 1Gbps 까지 가지도 않기 때문에 기존의 느린 wireguard-go 로도 큰 문제가 없었지만, WiFi 에서는 성능이 안좋았음
      • ~600Mbps without WireGuard,
      • ~600Mbps with wireguard-go/Wintun over Ethernet,
      • ~95Mbps with wireguard-go/Wintun over WiFi,
      • ~600Mbps with WireGuardNT over WiFi
    • 윈도우즈 서버 사용자들에게 도움이 될 것

WireGuard Endpoint Discovery and NAT Traversal using DNS-SD

서버 구축

ASUS 공유기로 설정하기

IpTime 공유기로 설정하기

Client Install

핵심 포인트:

  • /etc/wireguard/wg0.conf는 반드시 600 권한으로 설정
  • wg-quick 사용 시 자동으로 iptables 규칙 적용
  • systemd 활성화 후 부팅 시 자동 시작

기본 설치 후 디렉토리 구조

# 설치
sudo apt install wireguard wireguard-tools

# 설정 파일 위치 (root 권한 필요)
sudo ls -la /etc/wireguard/

설정 파일 생성 및 배치

# wg0.conf 파일을 /etc/wireguard/ 디렉토리에 배치
sudo cp your-config.conf /etc/wireguard/wg0.conf

# 올바른 권한 설정 (매우 중요)
sudo chmod 600 /etc/wireguard/wg0.conf
sudo chown root:root /etc/wireguard/wg0.conf

WireGuard 인터페이스 활성화

# 방법 1: wg-quick 사용 (권장)
sudo wg-quick up wg0

# 방법 2: systemd 서비스로 관리
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

# 상태 확인
sudo wg show

설정 적용 및 확인

# WireGuard 인터페이스 상태 확인
ip addr show wg0

# WireGuard 상세 정보 확인
sudo wg show wg0

# 네트워크 라우팅 확인
ip route show

설정 수정 후 재적용

# conf 파일 수정 후
sudo nano /etc/wireguard/wg0.conf

# 인터페이스 재시작
sudo wg-quick down wg0
sudo wg-quick up wg0

# 또는 systemd 재시작
sudo systemctl restart wg-quick@wg0

트러블슈팅

# 서비스 로그 확인
sudo journalctl -u wg-quick@wg0 -f

# systemd-networkd 사용 시
sudo systemctl status systemd-networkd

# iptables 규칙 확인 (필요시)
sudo iptables -L -n

resolvconf: command not found

그냥 resolvconf를 설치하자:

sudo apt install resolvconf

conf file example

[Interface]
# 로컬 private key 설정
PrivateKey = <your-private-key>
# WireGuard 인터페이스 IP 주소
Address = 10.0.0.1/24
# 필요시 DNS 설정
DNS = 8.8.8.8
# 리슨 포트
ListenPort = 51820

[Peer]
# 상대방 public key
PublicKey = <peer-public-key>
# 상대방 IP 범위
AllowedIPs = 10.0.0.2/32
# 상대방 엔드포인트 (선택사항)
Endpoint = example.com:51820

IpTime 에서 추출한 conf 예제

[Interface]
PrivateKey = ~~~~~
Address = 10.10.100.3/24
DNS = 210.220.163.82

[Peer]
PublicKey = ~~~~~
AllowedIps = 0.0.0.0/0
Endpoint = name.iptime.org:65430
PresharedKey = ~~~~~

wg-quick

자세한 내용은 Wg-quick 항목 참조.

See also

Favorite site