Cloudflare WARP 讓德雞連上ipv4

前言

之前德雞失聯,我弄了個新帳號。害我搞好的warp設定通通消失!!

我當初搞了好久的說... 讓我心情超不爽。說失聯就失聯的
算了,再搞一次。這次紀錄一下步驟,以後直接抄作業

有2個部分,第一步驟是編譯wireguard-go。因為德雞只有可憐的10GB儲存空間。上面再安裝編譯套件GCC什麼的,我自己的程式沒空間了。加上德雞的CPU,你會想在上面編譯東西?

所以我選擇在本地WSL裡面編譯wireguard-go,編譯好再送進德雞
首先說明下系統,德雞和本地的WSL都是Ubuntu 20.04

本地編譯

============以下作廢(坑1)===================
首先在wsl安裝相關套件
apt-get update
apt-get upgrade
apt-get install -y libmnl-dev libelf-dev build-essential pkg-config golang git

下載wireguard-go原始碼,並編譯

git clone https://git.zx2c4.com/wireguard-go
cd wireguard-go
export GOPATH="/tmp/gobuild/"
go build -v -o "wireguard-go"

然後就能看到目錄下有一個wireguard-go檔案了
丟去德雞的 /bin 裡面,記得chmod 755

============以上作廢===================

忙了半天連不上,結果是最新版wireguard-go有bug,直接用舊版的就行了
去這裡下載 wireguard-go-linux-amd64.tar.xz ,解壓後丟去 /bin ,完事

https://github.com/AlexanderOMara/wireguard-go-builds/releases/tag/0.0.20181222

註冊WARP

我們使用cf提供的WARP服務,使德雞連上ipv4。要使用WARP要先註冊
我們從這裡下載wgcf二進制檔。一般來說挑_ linux_amd64 結尾的,重命名成wgcf和chmod 755

接著在WSL裡面註冊wgcf帳號,並產生設定檔。
WSL可以用任何一台ip乾淨的linux VPS代替。我手邊WSL最方便
這一步請準備乾淨的IP,不然cf不給註冊
應該也不用太乾淨,但是德雞裡面總是出現429 Too Many Requests,死活註冊不了(坑2)...
最後我在本地WSL才註冊成功...

./wgcf register
./wgcf generate 

到這裡,應該就有wgcf-account.toml  wgcf-profile.conf 這2個檔案了。

接下來這一步非常重要,務必注意。否則你的德雞會失聯
請把wgcf-profile.conf裡面的 AllowedIPs = ::/0 註解掉或刪掉

因為warp會同時代理ipv4流量和ipv6流量。
但是我們的ssh連線是透過ipv6,ipv6流量被代理我們就沒辦法ssh進去了
所以我們要註解掉ipv6部分的設定,只讓warp代理ipv4的流量

然後把DNS 改成 2606:4700:4700::1111 或是其他ipv6 DNS

改DNS則是為了重新開機還能運作。因為設定檔會把系統DNS改成 1.1.1.1 ,但是重新開機以後沒有改回來, 1.1.1.1 又連不上,導致連不上WARP

如果你是會去配置路由表,讓自家ssh不走代理,或是透過cf内網穿透ssh的進階玩家當我沒說
然後把 wgcf-profile.conf 這個檔案丟進德雞的 /etc/wireguard 就行了。資料夾不存在就建一個


德雞配置wgcf

首先安裝wireguard
apt-get install git wireguard-tools net-tools openresolv
測試連線WARP
export WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1
wg-quick up wgcf-profile
wg-quick down wgcf-profile

如果沒有出錯,就可以配置成systemd服務了


首先修改 /lib/systemd/system/[email protected] 文件,改成以下內容

[Unit]
Description=WireGuard via wg-quick(8) for %I
After=network-online.target nss-lookup.target
Wants=network-online.target nss-lookup.target
PartOf=wg-quick.target
Documentation=man:wg-quick(8)
Documentation=man:wg(8)
Documentation=https://www.wireguard.com/
Documentation=https://www.wireguard.com/quickstart/
Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/wg-quick up %i
ExecStop=/usr/bin/wg-quick down %i
Environment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity
Environment=WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1

[Install]
WantedBy=multi-user.target

建立開機自啟動

systemctl enable wg-quick@wgcf-profile
啟動服務
systemctl start wg-quick@wgcf-profile

感想

我感覺下來,比起半年前配置這個,ubuntu20.04 搞起來起來真的輕鬆好多! 

18.04的時候套件都是舊的,不相容wireguard-go
首先要先編譯go。再用編出來的go編譯wireguard-go。還有GCC版本要搞,搞了我大半天

20.04真的要啥有啥,只有wireguard-go需要編譯一下,剩下的apt-get都能搞定


速度還行,新帳號相比以前變慢了。以前有120mbps左右,現在剩50mbps。



 

留言