wireguard


前言
最近WireGuard好像挺火,被許多人盛贊,本着折騰不息的精神,花了許久總算給弄出來了,本文是個人折騰記錄。

由於 WireGuard 是 UDP 傳輸,部分地區運營商對 UDP 有干擾,可能導致斷流等問題,暫不推薦作為日常 FQ 手段使用,但是在 TCP 被阻斷的 VPS 上不失為一種解決辦法。

參考教程:

WireGuard 官方文檔
一個簡單、安全、高速的下一代 VPN 協議 —— WireGuard 服務端手動教程
WireGuard 配置文件講解
以下內容是我在GCP的Debain 9以及Ubuntu 16.04 LTS上搭建WireGuard的過程,其他系統應該也類似,可以自己多嘗試下。

配置過程
安裝 WireGuard
Debain 系統:

先安裝linux-headers

apt update
apt install linux-headers-$(uname -r) -y

安裝WireGuard

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard-dkms wireguard-tools resolvconf -y
Ubuntu 系統:

add-apt-repository ppa:wireguard/wireguard
apt-get update
apt-get install wireguard-dkms wireguard-tools resolvconf -y
安裝成功后,顯示如下:
wireguard-installing.png
wireguard-installing.png

注意:除了Debain、Ubuntu其他操作系統的安裝命令可以在WireGuard Installstion查看。

除了以上部分內容不同系統不一樣,接下來的操作都是一樣的。

開啟ipv4流量轉發

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

創建並進入WireGuard文件夾

mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
cd /etc/wireguard
umask 077

生成服務器和客戶端密鑰對

wg genkey | tee server_privatekey | wg pubkey > server_publickey
wg genkey | tee client_privatekey | wg pubkey > client_publickey
服務端配置文件
創建並進入了 WireGuard 后,開始配置服務端文件,輸入ifconfig查看主網卡名稱,可能結果如下:
ifconfig.png
ifconfig.png
記住以上標記處名字,若不是eth0,可以將其復制了待會需要用到。

生成服務器配置文件/etc/wireguard/wg0.conf:

重要!如果名字不是eth0, 以下PostUp和PostDown處里面的eth0替換成自己服務器顯示的名字

ListenPort為端口號,可以自己設置想使用的數字

以下內容一次性粘貼執行,不要分行執行

echo "
[Interface]
PrivateKey = $(cat server_privatekey)
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 50814
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat client_publickey)
AllowedIPs = 10.0.0.2/32 " > wg0.conf
設置開機自啟:
systemctl enable wg-quick@wg0
客戶端配置文件
生成客戶端配置文件/etc/wireguard/client.conf:

Endpoint是自己服務器ip和服務端配置文件中設置的端口號,自己在本地編輯好再粘貼到SSH里

以下內容一次性粘貼執行,不要分行執行

echo "
[Interface]
PrivateKey = $(cat client_privatekey)
Address = 10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat server_publickey)
Endpoint = 1.2.3.4:50814
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25 " > client.conf
至此,基本上就已經搞定了,可以啟動 WireGuard 了:

啟動WireGuard

wg-quick up wg0

停止WireGuard

wg-quick down wg0

查看WireGuard運行狀態

wg
啟動后,如果沒有錯誤的話,顯示應該與下圖類似:
wg-quick-up.png
wg-quick-up.png

導出配置文件
我們需要導出客戶端的配置供客戶端使用,客戶端可以自己手動填,但是密鑰什么的輸入比較麻煩,以下提供兩種方法供使用:

方法一:使用配置文件,使用cat /etc/wireguard/client.conf指令查看配置文件信息並復制,然后自己本地編輯一個.conf文件(名字可以自定義)將復制內容粘貼並保存,發送到手機上;或者使用 FTP 等方式把配置文件下載到本地;
方法二:使用二維碼

apt install qrencode -y
qrencode -t ansiutf8 < /etc/wireguard/client.conf
客戶端使用方法
客戶端界面都很簡單,操作基本沒什么難度。

下載地址
iOS: WireGuard TestFlight | App Store
Android: WireGuard Google Play
Windows: Coming Soon
iOS
iOS-WireGuard.png
iOS-WireGuard.png

Android
Android-WireGuard.png
Android-WireGuard.png

配置多用戶
一個客戶端文件只能同時有一個設備連接,所以如果需要同時使用的話,可以建立多個客戶端文件。

再添加一個客戶端的操作方法:

停止WireGuard

wg-quick down wg0

生成新的客戶端密鑰對

wg genkey | tee client0_privatekey | wg pubkey > client0_publickey

在服務端配置文件中加入新的客戶端公鑰

AllowedIPs重新定義一段

一次性復制粘貼,不要分行執行

echo "
[Peer]
PublicKey = $(cat client0_publickey)
AllowedIPs = 10.0.0.3/32" >> wg0.conf

新建一個客戶端文件,使用新客戶端密鑰的私鑰

Address與上面的AllowedIPs保持一致

Endpoint和之前的一樣,為服務器ip和設置好的ListenPort

一次性復制粘貼,不要分行執行

echo "
[Interface]
PrivateKey = $(cat client0_privatekey)
Address = 10.0.0.3/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat server_publickey)
Endpoint = 1.2.3.4:50814
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25 " > client0.conf

已經成功創建后,啟動WireGuard

wg-quick up wg0

導出客戶端配置文件方式依舊可以采用上面介紹的兩種方法,例如此客戶端文件生成二維碼就應該為

qrencode -t ansiutf8 < /etc/wireguard/client0.conf
如果還需要添加Peer,同樣方法再次操作即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM