在本文中,我將向大家展示如何在 Ubuntu上搭建 WireGuard服務(wù)器,從而實(shí)現(xiàn)遠(yuǎn)程登錄。
首先,我們先來(lái)了解一下,什么是 WireGuard?
WireGuard 簡(jiǎn)介
WireGuard 是一款非常簡(jiǎn)單快捷的 VPN工具,采用了最先進(jìn)的加密技術(shù)。它的目標(biāo)是比 IPsec 更快,更簡(jiǎn)單,更精簡(jiǎn)易用,同時(shí)避免大規(guī)模配置的麻煩。WireGuard被設(shè)計(jì)為通用 VPN,用于在嵌入式接口和超級(jí)計(jì)算機(jī)上運(yùn)行,適用于多種不同環(huán)境。WireGuard 最初是為 Linux 內(nèi)核發(fā)布的,現(xiàn)在已經(jīng)可廣泛部署并且跨平臺(tái)支持(Windows,macOS,BSD,iOS,Android)。WireGuard 目前發(fā)展迅速,并且已經(jīng)被認(rèn)為是業(yè)內(nèi)最安全,最易用和最簡(jiǎn)單的 VPN 解決方案。
WireGuard 基本概念
WireGuard 中涉及到幾個(gè)基本概念:
- Peer:WireGuard 中的節(jié)點(diǎn)。
- 私鑰(Private key):每個(gè)節(jié)點(diǎn)自己的私鑰,可以使用wg genkey 生成。
- 公鑰(Public key):每個(gè)節(jié)點(diǎn)自己的公鑰,可以使用wg pubkey 生成。
- AllowedIPs:定義每個(gè)節(jié)點(diǎn)允許通過(guò)的IP地址段。
下面是 WireGuard的配置步驟:
1、創(chuàng)建虛擬網(wǎng)卡 eth0
2、使用私鑰和對(duì)端的公鑰對(duì)其進(jìn)行配置建立連接
3、通過(guò)接口開(kāi)始交換數(shù)據(jù)包
以上為建立一個(gè) WireGuard VPN 鏈接的過(guò)程,建立好后,A 設(shè)備與 B 設(shè)備互相需要保證虛擬網(wǎng)卡的 IP 在相同網(wǎng)段中,并且這個(gè)網(wǎng)段被 WireGuard 的配置文件 AllowedIPs 所允許通過(guò),最后,在 WireGuard 中的所有數(shù)據(jù)報(bào)文,都采用UDP的方式發(fā)送。
WireGuard 安裝
前期準(zhǔn)備
云端服務(wù)器 x 1
系統(tǒng):Ubuntu Server 18.04.1 LTS 64bit
可訪問(wèn)網(wǎng)絡(luò)的 PC x 1
系統(tǒng):Windows11
Ubuntu服務(wù)器 IP地址 42.192.113.207
WireGuard主端虛擬IP地址172.16.1.11
PC
WireGuard對(duì)端虛擬地址:172.16.1.14
安裝 WireGuard服務(wù)器
sudo apt install -y wireguard
配置 WireGuard服務(wù)器
進(jìn)入 wireguard目錄
cd /etc/wireguard/
使用命令生成一對(duì)公鑰與私鑰
wg genkey | tee privatekey | wg pubkey > publickey && cat privatekey && cat publickey
注意查看 WireGuard 生成的 PublicKey 是
q/fe0sDI0BUzs5OwiLfyqjN5Y40LTHk01rgLkHBDgRM=
WireGuard PC對(duì)端客戶端配置
新建空隧道
獲得對(duì)端 PublicKey
QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E=
文件配置:
[Interface]
PrivateKey=IIDs0Jv/iCn08+mXvoXRTuiIzhUziIeyF6hlOEq63lw=
Address=172.16.1.14/32
[Peer]
PublicKey=q/fe0sDI0BUzs5OwiLfyqjN5Y40LTHk01rgLkHBDgRM=
AllowedIPs=172.16.1.11/24
Endpoint=42.193.113.207:51820
PersistentKeepalive=25
WireGuard主端文件配置
創(chuàng)建服務(wù)器配置文件 wg0.conf
nano wg0.conf
[Interface]
Address = 172.16.1.11/24 #服務(wù)器虛擬地址
ListenPort = 51820 #監(jiān)聽(tīng)端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o= #服務(wù)器 PrivateKey
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
[Peer]
PublicKey =QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E= #對(duì)端 Publickey
AllowedIPs = 172.16.1.14/32 #對(duì)端虛擬IP地址
PersistentKeepalive = 25 #上傳心跳包間隔
創(chuàng)建網(wǎng)卡配置文件,文件名為 wg0
ip link add dev wg0 type wireguard
ip address
網(wǎng)絡(luò)接口配置虛擬IP 地址(此虛擬 IP地址為前期準(zhǔn)備中的 172.16.1.11/24)
ip address add dev wg0 172.16.1.11/24 ip address
創(chuàng)建一個(gè)私鑰,用于 WireGuard 使用,并配置權(quán)限禁止他人訪問(wèn)
wg genkey | tee /tmp/private-key chmod 600 /tmp/private-key wg set wg0 private-key /tmp/private-key listen-port 51820
啟動(dòng)網(wǎng)絡(luò)接口
ip link set wg0 up ip address
此時(shí)我們創(chuàng)建好了本地節(jié)點(diǎn),需要配置哪些節(jié)點(diǎn)是我們的對(duì)端,才能建立網(wǎng)絡(luò)連接。
通過(guò) PC安裝的 WireGuard客戶端連接 WireGuard服務(wù)器
點(diǎn)擊連接
wg查看連接狀態(tài)
備注:其他相關(guān)命令
1、啟動(dòng) WireGuard
wg-quick up wg0
2、停止 WireGuard
wg-quick down wg0
3、查看 WireGuard運(yùn)行狀態(tài)
Wg
4、WireGuard 配置說(shuō)明
[Interface]
Address = 172.16.1.11/24 #本機(jī)地址與掩碼位數(shù) (IPV4)
ListenPort = 51820 #本機(jī)監(jiān)聽(tīng) WireGuard 端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o= #本機(jī)加密私鑰
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
#啟動(dòng)前操作
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
#停止后操作
[Peer]
PublicKey =QjvFxlqoQYnToTT6snhhly2D8ZASb6GzuO81ALSIG3E= #本機(jī)加密的對(duì)端公鑰(加密后數(shù)據(jù)僅對(duì)端可以解密)
AllowedIPs = 172.16.1.14/32 #本機(jī)允許的對(duì)端設(shè)備的 IP 地址段,其實(shí)就是在本機(jī)中這個(gè)虛擬網(wǎng)卡接收到對(duì)端發(fā)來(lái)的源地址都允許有哪些設(shè)備 IP 地址(多 peer 不可重復(fù))
PersistentKeepalive = 25 #當(dāng)會(huì)話存在一端 IP 地址為 NAT 地址或虛假公網(wǎng) IP 地址時(shí),由該方階段性每 25 秒發(fā)送 keepalive 報(bào)文保持會(huì)話的可用性,防止被設(shè)備終止。
在上文的基礎(chǔ)上,大家需要額外注意以下這些內(nèi)容:
1、如果你存在多個(gè) [Peer] ,則在下面直接增加一個(gè)新的 [Peer] 欄目;
2、如果多個(gè) Peer 存在不同的 IP,請(qǐng)不要讓 AllowedIPs 存在重疊的 IP 地址段(比如配置多個(gè)相同 /24 只有一個(gè)生效);
3、Endpoint 既支持以域名的方式訪問(wèn),也支持以 IP 的方式訪問(wèn);
4、會(huì)話鏈接的建立只要保證兩端數(shù)據(jù)在一臺(tái)設(shè)備上成功協(xié)商,即使動(dòng)態(tài) IP 地址變更也不會(huì)影響 VPN 的穩(wěn)定性;
5、ListenPort 不添加會(huì)自動(dòng)生成高位端口用來(lái) peer,以及主從結(jié)構(gòu)下,從端不填寫(xiě) listenport;
6、Table 參數(shù)可以使用 auto 和 off,兩者分別對(duì)應(yīng)"自動(dòng)注入路由"和"禁止注入"。不配置采用 auto;
7、如果你是主從結(jié)構(gòu),需要讓從端在配置中將從端的"AllowedIPs ="補(bǔ)寫(xiě)一條內(nèi)容 0.0.0.0/0,::0 以允許所有流量;
8、PreUp,PostUp,PreDown,PostDown 這四個(gè)命令參數(shù),是作為 wg-quick 快速設(shè)置/刪除接口之前/之后由 bash(1)執(zhí)行的四條命令,常用于配置自定義 DNS 或防火墻規(guī)則。 特殊字符串 %i 作為變量替代所控制的 INTERFACE 配置名。每個(gè)命令參數(shù)都支持多條命令,參數(shù)內(nèi)的多條命令將按前后順序依次執(zhí)行,分隔符為 ; 分號(hào)。
-
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29762
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論