ๅบไบๅฎๆน WireGuard-Go ็ๅขๅผบๅฎ็ฐ๏ผๅ ๅซ่ชๅถ็ฎก็ๅทฅๅ ทๅ่ทจๅนณๅฐ่ชๅจๅ่ๆฌ
- ๐ง wg-go ็ฎก็ๅทฅๅ ท: ่ชๅถ็ Go ็ๆฌ WireGuard ็ฎก็ๅทฅๅ ท
- ๐ ่ทจๅนณๅฐ่ชๅจๅ่ๆฌ: ไธ้ฎๅฏๅจใ้ๅฏใๅๆญข่ๆฌ (ๆฏๆ Windows/Linux/ macOS)
- ๐ ๆบ่ฝๅๅ่งฃๆ: ่ชๅจๅฐๅๅ่งฃๆไธบ IP ๅฐๅ
- ๐ ๅจๆ DNS ็ๆง: ่ชๅจ็ๆงๅๅ็ซฏ็น็ IP ๅๅๅนถ้ๆฐ่ฟๆฅ
- ๐ ๆบ่ฝๅฏ้ฅ่ฝฌๆข: Base64 โ Hex ๆ ผๅผ่ชๅจ่ฝฌๆข
- ๐ ๅฎๆถ็ๆง: ่ฟๆฅ็ถๆๅๆต้็ป่ฎก็ๅฎๆถ็ๆง
- ๐ฅ๏ธ ่ทจๅนณๅฐๆฏๆ: ๅฎๆดๆฏๆ WindowsใLinuxใmacOS
- ๐ฆ ๆๅปบ็ณป็ป: ่ทจๅนณๅฐๆๅปบ่ๆฌๆฏๆๅคๅนณๅฐ็ผ่ฏ
- ๆไฝ็ณป็ป:
- Windows 10/11 (x64, ARM64)
- macOS 10.15+ (Intel, Apple Silicon)
- Linux (Ubuntu 18.04+, CentOS 7+, Fedora 42+, Arch Linux, ๅ ถไปๅ่ก็้ๆต่ฏ)
- Go ็ๆฌ: Go 1.19+ (ๆจ่ Go 1.21+)
- ๆ้:
- Windows: ็ฎก็ๅๆ้
- Linux/macOS: sudo ๆ้
# ๆฃๆฅ Go ็ๆฌ
go version
# ๆฃๆฅๆ้
sudo echo "ๆ้ๆฃๆฅ้่ฟ"
# ๆฃๆฅ็ฝ็ปๅทฅๅ
ท
ifconfig utun0 >/dev/null 2>&1 && echo "็ฝ็ปๆ้ๆญฃๅธธ"REM ๆฃๆฅ Go ็ๆฌ
go version
REM ๆฃๆฅ็ฎก็ๅๆ้
net session >nul 2>&1 && echo "็ฎก็ๅๆ้ๆญฃๅธธ" || echo "้่ฆ็ฎก็ๅๆ้"
REM ๆฃๆฅ็ฝ็ปๅทฅๅ
ท
ipconfig >nul 2>&1 && echo "็ฝ็ปๅทฅๅ
ทๆญฃๅธธ"# 1. ๅ
้้กน็ฎ
git clone https://github.com/law52525/wireguard-go.git
cd wireguard-go
# 2. ไธ่ฝฝไพ่ต (ไป
Windows)
download-wintun.bat
# 3. ็ผ่ฏ้กน็ฎ
build.bat build
bulid.bat build-tools
# 4. ็ผ่พ้
็ฝฎ
notepad wg0.conf
# 5. ไธ้ฎๅฏๅจ
start.bat# 1. ๅ
้้กน็ฎ
git clone https://github.com/law52525/wireguard-go.git
cd wireguard-go
# 2. ็ผ่ฏ้กน็ฎ
./build.sh build
./bulid.sh build-tools
# 3. ็ผ่พ้
็ฝฎ
nano wg0.conf
# 3. ไธ้ฎๅฏๅจ
sudo ./start.sh๐ก ๆ็คบ: ๅฆๆไธๆณ่ชๅทฑ็ผ่ฏ๏ผๅฏไปฅไป Releases ไธ่ฝฝ้ข็ผ่ฏ็ๅฏๆง่กๆไปถ๏ผๆฏๆ WindowsใLinuxใmacOS ็ๅไธชๆถๆ็ๆฌ๏ผๅผ็ฎฑๅณ็จ๏ผ
wireguard-go/
โโโ ๐ง ๆ ธๅฟ็จๅบ
โ โโโ main.go # Linux/macOS ไธป็จๅบๅ
ฅๅฃ
โ โโโ main_windows.go # Windows ไธป็จๅบๅ
ฅๅฃ
โ โโโ cmd/wg-go/ # ๅฝไปค่ก็ฎก็ๅทฅๅ
ท
โ โโโ main.go # ไธป็จๅบๅ
ฅๅฃ
โ โโโ commands.go # ๅฝไปคๅค็้ป่พ
โ โโโ uapi.go # UAPI ้ไฟกๆฅๅฃ
โ โโโ uapi_unix.go # Unix ๅนณๅฐ UAPI ๅฎ็ฐ
โ โโโ uapi_windows.go # Windows ๅนณๅฐ UAPI ๅฎ็ฐ
โ โโโ crypto.go # ๅฏ้ฅ็ๆๅ็ฎก็
โ โโโ monitor.go # ๅฎๆถ็ๆงๅ่ฝ
โ โโโ go.mod # Go ๆจกๅๆไปถ
โ โโโ go.sum # ไพ่ตๆ ก้ชๆไปถ
โ
โโโ ๐ ่ชๅจๅ่ๆฌ
โ โโโ start.sh # Linux/macOS ๅฏๅจ่ๆฌ
โ โโโ restart.sh # Linux/macOS ้ๅฏ่ๆฌ
โ โโโ stop.sh # Linux/macOS ๅๆญข่ๆฌ
โ โโโ start.bat # Windows ๅฏๅจ่ๆฌ
โ โโโ restart.bat # Windows ้ๅฏ่ๆฌ
โ โโโ stop.bat # Windows ๅๆญข่ๆฌ
โ
โโโ ๐จ ๆๅปบ็ณป็ป
โ โโโ Makefile # ่ทจๅนณๅฐๆๅปบ้
็ฝฎ
โ โโโ build.sh # Linux/macOS ๆๅปบ่ๆฌ
โ โโโ build.bat # Windows ๆๅปบ่ๆฌ
โ โโโ download-wintun.bat # Windows wintun.dll ไธ่ฝฝ่ๆฌ
โ
โโโ ๐ ๆๆกฃ
โ โโโ README.md # ้กน็ฎ่ฏดๆ
โ
โโโ ๐ฆ ๅๅง WireGuard-Go ๆบ็
โโโ conn/ # ็ฝ็ป่ฟๆฅๅค็
โโโ device/ # ่ฎพๅค็ฎก็ (ๅซ DNS ็ๆง)
โโโ ipc/ # ่ฟ็จ้ด้ไฟก
โโโ tun/ # TUN ๆฅๅฃๅค็
โโโ ratelimiter/ # ้็้ๅถ
โโโ replay/ # ้ๆพไฟๆค
โโโ tai64n/ # ๆถ้ดๆณ
โโโ ... # ๅ
ถไปๅๅงๆไปถ
- ๅฏ้ฅ็ฎก็: ็ๆใ่ฝฌๆขๅฏ้ฅๆ ผๅผ
- ้ ็ฝฎ็ฎก็: ๅบ็จใๆฅ็ใๅๆญฅ้ ็ฝฎ
- ๅฎๆถ็ๆง: ่ฟๆฅ็ถๆๅๆต้็ป่ฎก
- DNS ็ๆง: ่ชๅจ็ๆงๅๅ IP ๅๅ
- ไธ้ฎๅฏๅจ: ่ชๅจ็ผ่ฏใ้ ็ฝฎใๅฏๅจ
- ๆบ่ฝ้ๅฏ: ่ชๅจๅๆญขใๆธ ็ใ้ๅฏ
- ๅฎๆดๅๆญข: ่ชๅจๆธ ็ๆๆ่ตๆบ
- ๅๅ่งฃๆ: ่ชๅจ่งฃๆๅๅ็ซฏ็น
- ๅจๆ DNS: ็ๆง IP ๅๅๅนถ่ชๅจ้่ฟ
- ๆ ผๅผ่ฝฌๆข: Base64 โ Hex ่ชๅจ่ฝฌๆข
- ่ถ ๆถๅค็: ้ฒๆญขๅฝไปคๆ่ตท
wg0.conf:
[Interface]
PrivateKey = YOUR_PRIVATE_KEY
Address = 192.168.2.10/32
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = server.example.com:51820 # ๆฏๆๅๅ
AllowedIPs = 192.168.2.0/24, 192.168.1.0/24
PersistentKeepalive = 25# Linux/macOS
PRIVATE_KEY=$(./cmd/wg-go/wg-go genkey)
PUBLIC_KEY=$(echo "$PRIVATE_KEY" | ./cmd/wg-go/wg-go pubkey)
# Windows
cmd\wg-go\wg-go.exe genkey
echo PRIVATE_KEY | cmd\wg-go\wg-go.exe pubkey# ๆฅ็็ถๆ
sudo ./cmd/wg-go/wg-go show wg0
# ๅบ็จ้
็ฝฎ
sudo ./cmd/wg-go/wg-go setconf wg0 wg0.conf
# ๆฅ็้
็ฝฎ
sudo ./cmd/wg-go/wg-go showconf wg0# ๅฎๆถ็ๆง
sudo ./cmd/wg-go/wg-go monitor wg0
# DNS ็ๆง็ฎก็
sudo ./cmd/wg-go/wg-go dns wg0 show # ๆฅ็็ถๆ
sudo ./cmd/wg-go/wg-go dns wg0 30 # ่ฎพ็ฝฎ 30 ็ง้ด้# Linux/macOS
sudo ./start.sh # ๅฏๅจ
sudo ./restart.sh # ้ๅฏ
sudo ./stop.sh # ๅๆญข
# Windows
start.bat # ๅฏๅจ
restart.bat # ้ๅฏ
stop.bat # ๅๆญข# Linux/macOS
./build.sh build # ๆๅปบๅฝๅๅนณๅฐ
./build.sh build-all # ๆๅปบๆๆๅนณๅฐ
./build.sh build-tools # ๆๅปบๅฝไปค่กๅทฅๅ
ท
./build.sh clean # ๆธ
็
# Windows
build.bat build # ๆๅปบๅฝๅๅนณๅฐ
build.bat build-all # ๆๅปบๆๆๅนณๅฐ
build.bat build-tools # ๆๅปบๅฝไปค่กๅทฅๅ
ท
build.bat clean # ๆธ
็# Linux/macOS
go build -o wireguard-go .
cd cmd/wg-go && go build -o wg-go .
# Windows
go build -o wireguard-go.exe .
cd cmd\wg-go && go build -o wg-go.exe .# ้ฎ้ข: permission denied
# ่งฃๅณ: ไฝฟ็จ sudo
sudo ./cmd/wg-go/wg-go show wg0# ๆฃๆฅ็ถๆ
sudo ./cmd/wg-go/wg-go show wg0
# ๆฃๆฅ็ฝ็ป
ping 192.168.2.1
# ๆฃๆฅ่ทฏ็ฑ
netstat -rn | grep wg0# ๆฃๆฅ Go ็ๆฌ
go version
# ๆธ
็้็ผ่ฏ
go clean
go build -o wireguard-go .# ๆฅ็่ฟ็จ
ps aux | grep wireguard
# ๆฅ็ๆฅๅฃ
ifconfig wg0
# ๆฅ็ๆฅๅฟ
sudo dmesg | grep -i wireguard- UAPI ๅ่ฎฎไฟฎๅค: ๆญฃ็กฎๅฎ็ฐ
get=1\n\nๆ ผๅผ - ๆบ่ฝๅๅ่งฃๆ: ่ชๅจ่งฃๆๅๅ็ซฏ็น
- ๅจๆ DNS ็ๆง: ่ชๅจ็ๆง IP ๅๅๅนถ้่ฟ
- ๅฏ้ฅๆ ผๅผ่ฝฌๆข: Base64 โ Hex ่ชๅจ่ฝฌๆข
- ่ถ ๆถๅค็: ้ฒๆญขๅฝไปคๆ่ตท
- Windows: ๅฎๆดๆฏๆ๏ผ้่ฆ wintun.dll
- Linux: ๅฎๆดๆฏๆ๏ผไฝฟ็จ Unix socket
- macOS: ๅฎๆดๆฏๆ๏ผไฝฟ็จ Unix socket
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ wg-go ๅทฅๅ
ท โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ main.go โ ๅฝไปค่งฃๆๅๅๅ โ
โ commands.go โ ๅ็งๅฝไปค็ๅ
ทไฝๅฎ็ฐ โ
โ uapi.go โ WireGuard UAPI ้ไฟก + ๅๅ่งฃๆ โ
โ crypto.go โ ๅฏ้ฅ็ๆใๆ ผๅผ่ฝฌๆข โ
โ monitor.go โ ๅฎๆถ็ๆงๅ่ฝ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ UAPI Socket
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ wireguard-go ๅฎๆค่ฟ็จ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ device/ โ WireGuard ่ฎพๅค็ฎก็ โ
โ conn/ โ ็ฝ็ป่ฟๆฅๅค็ โ
โ tun/ โ TUN ๆฅๅฃ็ฎก็ โ
โ ipc/ โ UAPI ๆฅๅฃๅฎ็ฐ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TUN Interface
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ฝ็ปๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ wg0/utun11 ๆฅๅฃ โ ่ๆ็ฝ็ปๆฅๅฃ โ
โ ่ทฏ็ฑ่กจ โ ็ฝ็ป่ทฏ็ฑ็ฎก็ โ
โ ้ฒ็ซๅข โ ็ฝ็ปๅฎๅ
จ็ญ็ฅ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# ๅฏ้ฅ็ฎก็
wg-go genkey # ็ๆ็ง้ฅ
echo "KEY" | wg-go pubkey # ็ๆๅ
ฌ้ฅ
wg-go genpsk # ็ๆ้ขๅ
ฑไบซๅฏ้ฅ
# ้
็ฝฎ็ฎก็
wg-go show [interface] # ๆพ็คบ็ถๆ
wg-go setconf <interface> <config> # ๅบ็จ้
็ฝฎ
wg-go showconf <interface> # ๆพ็คบ้
็ฝฎ
# ็ๆงๅ่ฝ
wg-go monitor [interface] [interval] # ๅฎๆถ็ๆง
wg-go dns <interface> show # DNS ็ๆง็ถๆ
wg-go dns <interface> <interval> # ่ฎพ็ฝฎ็ๆง้ด้่ฟไธช WireGuard-Go ๅขๅผบ็ๆฌๆไพ๏ผ
โ
ๅฎๆด็ WireGuard ็ฎก็ๅทฅๅ
ท - ๆ ้ๅค้จไพ่ต
โ
่ทจๅนณๅฐ่ชๅจๅ่ๆฌ - ไธ้ฎๅฏๅจใ้ๅฏใๅๆญข
โ
ๆบ่ฝๅ่ฝ - ๅๅ่งฃๆใๅจๆ DNS ็ๆงใๆ ผๅผ่ฝฌๆข
โ
่ฏฆ็ปๆๆกฃ - ไปๅฎ่ฃ
ๅฐๆ
้ๆ้ค็ๅฎๆดๆๅ
โ
ๅฎๆ้ช่ฏ - ๅจ WindowsใmacOSใLinux ไธๅฎๅ
จๆต่ฏ้่ฟ
ๅฟซ้ๅผๅง:
- Windows:
start.bat - Linux/macOS:
sudo ./start.sh
้่ฆๅธฎๅฉ๏ผ ่ฟ่ก wg-go help ๆฅ็ๅฝไปคๅธฎๅฉ