WireGuard各主流平臺(tái)的配置教程



?
WireGuard是一個(gè)輕量級(jí)的虛擬專用網(wǎng)絡(luò) (VPN),支持 IPv4 和 IPv6 連接。VPN允許您遍歷不受信任的網(wǎng)絡(luò),就像在專用網(wǎng)絡(luò)上一樣。當(dāng)連接到不受信任的網(wǎng)絡(luò)(如酒店或咖啡店的WiFi)時(shí),它使您可以自由地從智能手機(jī)或筆記本電腦安全可靠地訪問互聯(lián)網(wǎng)。
WireGuard的加密依賴于公共和私鑰,供對(duì)等方在它們之間建立加密的隧道。WireGuard 的每個(gè)版本都使用特定的加密密碼套件來(lái)確保簡(jiǎn)單性、安全性和與對(duì)等方的兼容性。
通俗來(lái)說(shuō),WireGuard有點(diǎn)類似于MPLS-VPN,同樣的在VPN網(wǎng)絡(luò)中建立隧道,不再依賴IP地址,只是WireGuard依靠密鑰對(duì)完成服務(wù)器/客戶端的匹配。MPLS使用標(biāo)簽逐級(jí)傳遞來(lái)完成數(shù)據(jù)的傳輸,WireGuard通過密鑰對(duì)把連接在外網(wǎng)的WireGuard服務(wù)器的所有設(shè)備組成一個(gè)虛擬的局域網(wǎng),這樣位于公網(wǎng)中的WireGuard服務(wù)器被虛擬成了該局域網(wǎng)內(nèi)的虛擬網(wǎng)關(guān),通過WireGuard服務(wù)器繼而完成內(nèi)網(wǎng)的穿透,使位于不同地域的設(shè)備實(shí)現(xiàn)了互通,而且WireGuard使用的是是UDP協(xié)議,更加有利于于數(shù)據(jù)傳輸。


相比之下,其他VPN軟件(如OpenVPN和IPSec)使用傳輸層安全性(TLS)和證書來(lái)驗(yàn)證和建立系統(tǒng)之間的加密隧道。不同版本的 TLS 包括對(duì)數(shù)百種不同的加密套件和算法的支持,雖然這為支持不同的客戶端提供了極大的靈活性,但它也使配置使用 TLS 的 VPN 更加耗時(shí)、復(fù)雜且容易出錯(cuò)。
?

一、WireGuard服務(wù)端的建立
WireGuard服務(wù)器的建立,可以使用NAS服務(wù)器端的Docker容器安裝(威聯(lián)通、群暉、Unraid均可以)?,或者使用云服務(wù)器建立,這里推薦使用騰訊云推出的lighthouse輕量級(jí)服務(wù)器,新用戶65一年還是不錯(cuò)的,這里我選擇的操作i系統(tǒng)是“Ubuntu20.04-Docker20”,具體操作可以參考“spoto”大佬的視頻,這里就不再贅述。配置參數(shù)如下:
docker run -d \ ?--name=wg-easy \ ?
-e WG_HOST=123.123.123.123 (??這里輸入服務(wù)器的公網(wǎng)IP) \?
?-e PASSWORD=passwd123 (??這里輸入你的密碼) \ ?
-e WG_DEFAULT_ADDRESS=10.0.8.x (??默認(rèn)IP地址)\?
?-e WG_DEFAULT_DNS=114.114.114.114 (??默認(rèn)DNS)\?
?-e WG_ALLOWED_IPS=10.0.8.0/24 (??允許連接的IP段)\ ?-
e WG_PERSISTENT_KEEPALIVE=25 (??重連間隔)\ ?
-v ~/.wg-easy:/etc/wireguard \?
?-p 51820:51820/udp \ ?
-p 51821:51821/tcp \?
?--cap-add=NET_ADMIN \?
?--cap-add=SYS_MODULE \?
?--sysctl="net.ipv4.conf.all.src_valid_mark=1" \ ?
--sysctl="net.ipv4.ip_forward=1" \?
?--restart unless-stopped \ ?
weejewel/wg-easy
當(dāng)基于docker容器技術(shù)的WireGuard服務(wù)器建立后,按照“http://ip:端口號(hào)”(例如用tcp端口號(hào):51821,但不能用udp端口)訪問WireGuard服務(wù)器管理頁(yè)面:

?點(diǎn)擊“NEW”選擇新建客戶端文件,本人選擇第一個(gè)創(chuàng)建nas的配置文件,之所以要?jiǎng)?chuàng)建基于WireGuard的VPN連接,是因?yàn)樾枰谕饩W(wǎng)訪問nas,雖然我可以通過域名公網(wǎng)訪問nas,但是基于安全問題,使用VPN連接更加安全,那就來(lái)建立一個(gè)隧道吧。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?二、為NAS服務(wù)器創(chuàng)建WireGuard客戶端
通過上一步,點(diǎn)擊"NEW"新建客戶端配置文件,配置文件的命名可以隨意,我的命名是“nas”,點(diǎn)擊“CREATE”,自動(dòng)創(chuàng)建客戶端配置文件,然后點(diǎn)擊下載,把文件保存在本地,文件的格式是“*.conf”通過記事本打開?里面的內(nèi)容是:
[Interface]
PrivateKey = **************************************?
Address = 10.0.8.3/24?
DNS = 223.5.5.5
[Peer]?
PublicKey = **********************************************?
PresharedKey = *******************************************?
AllowedIPs = 10.0.8.0/24
PersistentKeepalive = 25
Endpoint = 服務(wù)器IP地址:51820
因?yàn)槲业膎as是威聯(lián)通Q453Bmini,群輝/Unraid大同小異,所以我就以QTS操作系統(tǒng)來(lái)介紹了。
首先登錄nas系統(tǒng),找到"QVPN Server"這個(gè)app,沒有的可以通過app center下載:

因?yàn)槲覀円⒌氖强蛻舳?,所以必須選擇“VPN連接配置文件” 這個(gè)選項(xiàng):

?打開后,選擇加入:

點(diǎn)擊“加入”,出現(xiàn)下圖,并選擇“WireGuard” :

?出現(xiàn)如下對(duì)話框,并編輯:


服務(wù)器名稱:自定義,私鑰:選擇剛剛下載好的配置文件里的 ‘PrivateKey = ’后面的字符串,并點(diǎn)擊生成密鑰對(duì)用以生成該客戶端的公鑰,IP地址:填入配置文件里的IP地址,這個(gè)IP地址就是nas的地址,偵聽端口可以不填,DNS服務(wù)器地址:隨意,然后Peer Setting(對(duì)端配置,相當(dāng)于配置服務(wù)器端的參數(shù)),公鑰:填入配置文件里“PublicKey =”后面的字符串,斷點(diǎn):填入“Endpoint =?”后面的IP地址和端口號(hào),點(diǎn)開“高級(jí)設(shè)置”,預(yù)共享密鑰:填入“PresharedKey =”后面的字符串,允許的IP:填入“AllowedIPs =”后面的字符串,永久有效:隨便填,但是不要太大,點(diǎn)擊保存。
最后點(diǎn)擊連接即可:

可以通過ping命令測(cè)試是否聯(lián)通。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 三、Windows客戶端配置
首先在服務(wù)器端先創(chuàng)建客戶端配置文件,這里我創(chuàng)建的是“PC”,下載到本地,然后下載windows客戶端,客戶端需要在WireGuard官網(wǎng)下載windows客戶端,官網(wǎng)地址:wiregurd
,下載安裝后打開如下圖所示:
?選擇“新建隧道”,在選擇窗選定剛剛下載的“PC”客戶端配置文件,出現(xiàn)下圖,點(diǎn)擊“連接”即可:

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 四、配置手機(jī)客戶端
首先在服務(wù)器端創(chuàng)建手機(jī)端配置文件,打開二維碼:

?
然后在官網(wǎng)下載安卓或者ios安裝文件,?安裝好后,打開WireGuard手機(jī)客戶端,點(diǎn)擊“+”號(hào),選擇“掃面二維碼”即可。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 五、Ubuntu客戶端的配置
?關(guān)于Ubuntu客戶端的配置,我個(gè)人認(rèn)為是最難的,因?yàn)槲覍?duì)Linux只是處于了解狀態(tài),而且ubuntu一般作為服務(wù)器端使用,對(duì)于客戶端的使用也少之又少,所以相關(guān)的資料基本沒有。
不過,筆者最近安裝了Ubuntu的最新操作系統(tǒng)Ubuntu22.04桌面版,感覺很驚艷啊,在micros Egde瀏覽器的加持下,Ubuntu系統(tǒng)也基本上夠用了。所以很想為Ubuntu系統(tǒng)安裝一個(gè)WireGuard客戶端,能在Ubuntu系統(tǒng)上使用VPN訪問我的威聯(lián)通NAS就完美了,雖然沒有資源可以使用,但是很多原理是相通的。
Come On!~~!~~!~~Ubuntu22.04??jammy jellyfish!!

所以,按照前面的規(guī)則,先在服務(wù)器端創(chuàng)建好ubuntu客戶端配置文件,然后下載到ubuntu系統(tǒng)本地,將文件名重命名為wg0.conf,并保存在‘etc/wireguard ’文件夾,若沒有路徑則以以下命令創(chuàng)建:mkdir -p /etc/wireguard,必須要有這一步,因?yàn)楹竺嬗玫玫健?/span>
WireGuard-Ubuntu客戶端可以通過終端安裝,也可以從官網(wǎng)下載.deb客戶端和wirguard-tool.deb,再通過軟件中心安裝。
安裝好后就可以在終端操作了:
最高權(quán)限登錄終端:
sudo -i
提示輸入密碼:
雖然導(dǎo)入了配置文件,但是直接運(yùn)行的時(shí)候出錯(cuò)了,提示網(wǎng)絡(luò)錯(cuò)誤,服務(wù)無(wú)法啟動(dòng)。后來(lái)查閱各方資料發(fā)現(xiàn)對(duì)于Linux系統(tǒng),必須要在配置文件‘wg0.conf’設(shè)定本機(jī)網(wǎng)絡(luò)參數(shù),具體請(qǐng)看下文。
首先需要查看本機(jī)網(wǎng)絡(luò),對(duì)于使用公共 IP 地址通過 SSH 或其他協(xié)議訪問的遠(yuǎn)程對(duì)等方,需要向?qū)Φ确降奈募砑右恍╊~外的規(guī)則。這些規(guī)則將確保您在連接系統(tǒng)時(shí)仍可以從隧道外部連接到系統(tǒng)。否則,當(dāng)建立隧道時(shí),通常在公共網(wǎng)絡(luò)接口上處理的所有流量將無(wú)法正確路由以繞過隧道接口,從而導(dǎo)致無(wú)法訪問的遠(yuǎn)程系統(tǒng):
輸入:ip route list table main default
輸出:
? ? ? default dev wg0 scope link?
? ? ? ?default via 192.168.45.47 dev wlp1s0 proto dhcp metric 600? ? ?
?記下網(wǎng)關(guān)突出顯示的 IP 地址以供以后使用,并記下網(wǎng)卡號(hào)wlp1s0?當(dāng)然每個(gè)人的設(shè)備名稱可能不同。如果是這樣,請(qǐng)?jiān)诿钪刑鎿Q它。
輸入:ip -brief address show wlp1s0? ?
輸出:
wlp1s0? ? ? ? ? ?UP? ? ? ? 192.168.45.40/24? ? ? ? ? ? ? ? ? 240e:44d:5414:502:58b0:27f0:1da5:492e/64? 240e:44d:5414:502:28b8:eb1f:fc41:b387/64 fe80::a547:c15d:61b5:4d78/64
輸入:sudo nano /etc/wireguard/wg0.conf
?編輯 wg0.conf文件將得到的網(wǎng)絡(luò)信息以固定格式加入:
PostUp = ip rule add table 200 from xxx.xxx.xxx.xxx(本機(jī)IP地址),
PostUp = ip route?add table 200 via?xxx.xxx.xxx.xxx(網(wǎng)關(guān)IP地址),
PreDown = ip rule delete table 200 from xxx.xxxx.xxx.xxx(本機(jī)IP),
PreDown = ip route delete table 200 via xxxx.xxx.xxx.xxx(網(wǎng)關(guān)IP地址),
保存,這些線路將創(chuàng)建自定義路由規(guī)則,并添加自定義路由以確保到系統(tǒng)的公共流量使用默認(rèn)網(wǎng)關(guān)。
如以下格式:
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
Address = 10.0.9.5/24
DNS = 114.114.114.114
PostUp = ip rule add table 200 from 192.168.222.87
PostUp = ip route add table 200 default via 192.168.208.1
PreDown = ip rule delete table 200 from 192.168.222.87
PreDown = ip route delete table 200 default via 192.168.208.1
? ? [Peer]
? ?PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
? ?PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
? ? ? AllowedIPs = 10.0.9.0/24
? ? ? PersistentKeepalive = 25
? ? ? Endpoint = xxx.xxx.xxx.xxx:xxxxx
如果您通過VPN路由所有流量并設(shè)置了DNS轉(zhuǎn)發(fā),則需要在啟動(dòng)隧道之前在WireGuard對(duì)等體上安裝‘resolvconf‘程序。
輸入:sudo apt install resolvconf?? ? #安裝resolvconf 程序
重啟wg0服務(wù):
輸入:sudo wg-quick down wg0 ? ? ? ? #關(guān)閉隧道wg0
輸出: [#] ip link delete dev wg0 ? ? ?[#] resolvconf -d tun.wg0 -f
輸入:sudo wg-quick up wg0 ? ? ? ? ? #重新開啟隧道wg0
??


看到上面的信息基本可以確定客戶端已成功開啟,也可以通過WireGuard服務(wù)器頁(yè)面查看客戶端或者ping命令查看是否正常運(yùn)行:


最后最好設(shè)置開機(jī)自啟動(dòng):
sudo nano /etc/rc.local? ? ? ? #在‘etc’文件夾新建一個(gè)rc.local文件,設(shè)置開機(jī)啟動(dòng)
編輯如下內(nèi)容并保存:
? ? ip link add dev wg0 type wireguard
? ? wg setconf wg0 /etc/wireguard/wg0.conf
? ? systemctl restart network
這樣下來(lái)每次開機(jī)wg0隧道就能夠自動(dòng)開啟了?。?!

好了,暫時(shí)就寫到這了,幾大系統(tǒng)配置基本寫完了,有不足之處請(qǐng)?jiān)谠u(píng)論區(qū)指出。。。。。肝了一天的時(shí)間,不是一般的累,那后續(xù)有機(jī)會(huì)再更新了。