Login

Navigation

This articles is published 190 days ago and last updated 70 days ago, some information may be out of date.

繼續折騰迅雷賺錢寶 PRO (二代) -- Wire­Guard的安裝與使用

_DSC6229.jpg

前言:
上一次折騰迅雷賺錢寶 PRO (二代) -- armbian 軟件安裝,可以使迅雷賺錢寶 PRO實現豐富功能。

再接再厲,今次在迅雷賺錢寶 PRO折騰WireGuard的安裝與使用。

為什麼是Wire­Guard? 因為Wire­Guard免費是快速的VPN連接,利用先進的加密技術,通過UDP傳遞流量,性能優於OpenVPN的一款開源軟件。

目錄內容

WireGuard的工作原理
在每個對等設備上創建一個充當隧道的網路介面(通常是wg0),將公鑰與隧道內允許的IP地址關聯在一起。

每個網路介面都有一個私鑰和對等方的一個公鑰相匹配。用於對等方相互身份驗證。這很類似於將其SSH公鑰存放於其他裝置以訪問SHELL伺服器的形式。

Cover.png

WireGuard的安裝
由於這迅雷賺錢寶 PRO的armbian的內核版本是3.10.36,所以只能安裝wireguard-go
  1. 安裝Debian Backports源
Backports源是將新版本的軟件某些功能移植到舊版本上來,使這些包不依賴於新版本的庫就可以在 debianstable 發行版上面運行。
apt install sudo lsb-release -y
echo "deb http://deb.debian.org/debian $(lsb_release -sc)-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
  1. 更新Wireguard-tools
用於配置WireGuard的工具,如: wgwg-quick

移除舊版本

apt remove wireguard-tools

更新指定的版本

apt install wireguard-tools=1.0.20210223-1~bpo10+1
  1. 安裝wireguard-go
一把梭腳本是P3TERX大佬編譯的最新穩定版 wireguard-go 二進制文件
curl -fsSL git.io/wireguard-go.sh | sudo bash

installation_-03-18_103924.png

啟用IP轉發

使用以下指令開啟IP轉發功能及立即啟用

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

ip_forward_03-18_101436.png

iptables的安裝與修正

使用以下指令安裝iptables

apt install iptables -y

iptables_2022-03-18_094425.png

如圖示,會出現TABLE_ADD failed的錯誤,我估算是迅雷賺錢寶 PRO的armbian的內核版本是3.10.36,而預設是使用iptables-nft作為iptables指令才會出現這樣的錯誤。只要轉用iptabels-legacy就沒有錯誤提示了!

使用以下指令修正iptables

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

iptables_2022-03-18_094817.png

WireGuard的配置

伺服器的配置

進入到wireguard目錄

cd /etc/wireguard/

修改目錄的預設權限(只有root可以讀寫)

umask 077

建立私鑰和公鑰

wg genkey | tee privatekey | wg pubkey > publickey
privatekey #伺服器私鑰

publickey #伺服器公鑰

分別查看私鑰和公鑰并記錄一下

cat privatekey
cat publickey

server_-03-18_100238.png

查看實體的網絡界面名稱

ip -c route show default | awk '{print $5}'
輸出結果是eth0,代表實體網絡界面名稱。

建立伺服器配置文件

cat > wg0.conf <<EOF
[Interface]
ListenPort = 51820
Address = 10.255.255.1/24
PrivateKey = GNsHS8K6jLPHu/kfenB17jfcYCFtmCj+1gAyMYPcTkY=
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
EOF
  • ListenPort = 51820 # wireguard聆聽的端口,可自定義
  • Address = 10.255.255.1/24 # 指定網路界面(wg0)的IP地址為10.255.255.1,其/24為(CIDR )網段格式,子網掩碼為255.255.255.0
  • PrivateKey = GNsHS8K6jLPHu/kfenB17jfcYCFtmCj+1gAyMYPcTkY= # 貼上剛才產生伺服器私鑰
  • PostUp = # 網路界面(wg0)啟動時,會聯動創建iptables的nat表

    • iptables -A FORWARD -i %i -j ACCEPT #允許網路界面(wg0)轉發(進入)
    • iptables -A FORWARD -o %i -j ACCEPT #允許網路界面(wg0)轉發(出去)
    • iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #建立流量偽裝 及替換實體網絡界面名稱 eth0
  • PostDown = # 網路界面(wg0)關閉時,會聯動刪除iptables的nat表

server_-03-18_100338.png


移至客戶端的配置才回來添加客戶端料資


增添客戶端資料

在完成客戶端文件的創建後就可以在伺服器的配置文件內添加客戶端的公鑰及IP地址。

編輯伺服器的配置文件

vim /etc/wireguard/wg0.conf

新增以下內容

[Peer]
PublicKey = v6r1/YBRi+wmpG+C5Z8hn0zqKrvmjRYSJXH51iQg3Ww=
AllowedIPs = 10.255.255.2/32

server-03-19_115938.png

  • [Peer] # 代表添加對等的裝置,即客戶端
  • PublicKey = v6r1/YBRi+wmpG+C5Z8hn0zqKrvmjRYSJXH51iQg3Ww= # 這裡貼上客戶端的公鑰,用於與客戶端裝置的身份相互驗證
  • AllowedIPs = 10.255.255.2/32 = # 指定客戶端裝置的IP地址為10.255.255.2,其/32為(CIDR )網段格式的子網用於限制IP地址變動而影響其他裝置IP地址重疊

啟動WireGuard隧道(2選1)

wg-quick up wg0
systemctl start [email protected]

server_-03-17_155350.png

查看WireGuard的連線狀態

wg

server_-03-18_104235.png

開啟伺服器開機時自動啟動WireGuard服務

systemctl enable [email protected]

所有配置完成後可移至連線測試


客戶端的配置

在這次的實驗中,因為是使用電話連線,所以客戶端的配置文件建立可以在伺服器端完成。(包括建立客戶端的私鑰和公鑰及實現QRCODE掃瞄添加設定)

建立客戶端的存放文件目錄

mkdir -p /etc/wireguard/clients

進入到目錄

cd /etc/wireguard/clients/

建立客戶端私鑰和公鑰

wg genkey | tee client1_privateKey | wg pubkey > client1_publicKey
client1_privateKey #為客戶端私鑰

client1_privateKey #為客戶端公鑰

分別查看客戶端私鑰和公鑰并記錄一下

cat client1_privateKey
cat client1_publicKey

client_-03-18_100937.png

編寫客戶端配置文件

cat > client1.conf <<EOF
[Interface]
PrivateKey = uEvQ3yvT5OWBqTeSjyVSYK+Eas0eDu3mMQltVcgMq24=
Address = 10.255.255.2/24
[Peer]
PublicKey = M5vKle2ioE/mMfWloB0Diha/+oCiH6VnrYss3AHRt28=
AllowedIPs = 0.0.0.0/0
Endpoint = Wireguard_Server_IP:51820
PersistentKeepalive = 20
EOF
  • PrivateKey = GNsHS8K6jLPHu/kfenB17jfcYCFtmCj+1gAyMYPcTkY= # 貼上剛才產生客戶端私鑰
  • Address = 10.255.255.2/24 # 指定網路界面(client1)的IP地址為10.255.255.2,其/24為網段格式的子網掩碼(CIDR格式 )
  • PublicKey = M5vKle2ioE/mMfWloB0Diha/+oCiH6VnrYss3AHRt28= # 這裡貼上伺服器的公鑰,用於與伺服器的身份相互驗證
  • Endpoint = 221.122.256.256:51820 = # 221.122.256.256是伺服器端的公網IP地址,:51820是聆聽的端口

安裝qrencode

qrencode(全名:QR Encode)用於將文本生成二維碼,并可保存為 PNG等圖片格式。

使用以下指令安裝

apt install qrencode

qrencode_03-17_160530.png

將客戶端配置文件生成二維碼

qrencode -t ansiutf8 < /etc/wireguard/clients/client1.conf

QR_2022-03-19_140125.png

手機掃瞄二維碼就可以添加WireGuard隧道


返回編輯伺服器的配置文件-增添客戶端資料


連線測試

SpeedTest_20220318105454.jpg

速度限制於迅雷賺錢寶 PRO機能

server_-03-18_105009.png

可查看到伺服器端armv7l S805的CPU全程已滿載

server_-03-17_160239.png

WireGuard 內存占用非常低,只有4.3M

結語:
armbian(Debian)系統上全程手動安裝和配置WireGuard 伺服器和用戶端,也(折騰)完成了! 其實這是最基礎的教程,進階些是可以重定向指定流量到不同PeerNAT-ot-NAT等等。

這是針對(其中至少一部裝置)有外網IP地址,才可以實現的功能。如果只有大內網可使用第三方TailScaleZeroTier軟件及分享的內容。

參考資料:

相關連結: