在本文中,我將向大家展示如何在 Ubuntu上搭建 WireGuard服務器,從而實現遠程登錄。
首先,我們先來了解一下,什么是 WireGuard?
WireGuard 簡介
WireGuard 是一款非常簡單快捷的 VPN工具,采用了最先進的加密技術。它的目標是比 IPsec 更快,更簡單,更精簡易用,同時避免大規模配置的麻煩。WireGuard被設計為通用 VPN,用于在嵌入式接口和超級計算機上運行,適用于多種不同環境。WireGuard 最初是為 Linux 內核發布的,現在已經可廣泛部署并且跨平臺支持(Windows,macOS,BSD,iOS,Android)。WireGuard 目前發展迅速,并且已經被認為是業內最安全,最易用和最簡單的 VPN 解決方案。
WireGuard 基本概念
WireGuard 中涉及到幾個基本概念:
- Peer:WireGuard 中的節點。
- 私鑰(Private key):每個節點自己的私鑰,可以使用wg genkey 生成。
- 公鑰(Public key):每個節點自己的公鑰,可以使用wg pubkey 生成。
- AllowedIPs:定義每個節點允許通過的IP地址段。

下面是 WireGuard的配置步驟:
1、創建虛擬網卡 eth0
2、使用私鑰和對端的公鑰對其進行配置建立連接
3、通過接口開始交換數據包
以上為建立一個 WireGuard VPN 鏈接的過程,建立好后,A 設備與 B 設備互相需要保證虛擬網卡的 IP 在相同網段中,并且這個網段被 WireGuard 的配置文件 AllowedIPs 所允許通過,最后,在 WireGuard 中的所有數據報文,都采用UDP的方式發送。
WireGuard 安裝
前期準備
云端服務器 x 1
系統:Ubuntu Server 18.04.1 LTS 64bit
可訪問網絡的 PC x 1
系統:Windows11
Ubuntu服務器 IP地址 42.192.113.207
WireGuard主端虛擬IP地址172.16.1.11
PC
WireGuard對端虛擬地址:172.16.1.14
安裝 WireGuard服務器
sudo apt install -y wireguard

配置 WireGuard服務器
進入 wireguard目錄
cd /etc/wireguard/
使用命令生成一對公鑰與私鑰
wg genkey | tee privatekey | wg pubkey > publickey && cat privatekey && cat publickey

注意查看 WireGuard 生成的 PublicKey 是
q/fe0sDI0BUzs5OwiLfyqjN5Y40LTHk01rgLkHBDgRM=
WireGuard PC對端客戶端配置

新建空隧道

獲得對端 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主端文件配置
創建服務器配置文件 wg0.conf
nano wg0.conf
[Interface]
Address = 172.16.1.11/24 #服務器虛擬地址
ListenPort = 51820 #監聽端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o= #服務器 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= #對端 Publickey
AllowedIPs = 172.16.1.14/32 #對端虛擬IP地址
PersistentKeepalive = 25 #上傳心跳包間隔
創建網卡配置文件,文件名為 wg0
ip link add dev wg0 type wireguard
ip address
網絡接口配置虛擬IP 地址(此虛擬 IP地址為前期準備中的 172.16.1.11/24)
ip address add dev wg0 172.16.1.11/24 ip address

創建一個私鑰,用于 WireGuard 使用,并配置權限禁止他人訪問
wg genkey | tee /tmp/private-key chmod 600 /tmp/private-key wg set wg0 private-key /tmp/private-key listen-port 51820

啟動網絡接口
ip link set wg0 up ip address

此時我們創建好了本地節點,需要配置哪些節點是我們的對端,才能建立網絡連接。
通過 PC安裝的 WireGuard客戶端連接 WireGuard服務器

點擊連接

wg查看連接狀態

備注:其他相關命令
1、啟動 WireGuard
wg-quick up wg0
2、停止 WireGuard
wg-quick down wg0
3、查看 WireGuard運行狀態
Wg
4、WireGuard 配置說明
[Interface]
Address = 172.16.1.11/24 #本機地址與掩碼位數 (IPV4)
ListenPort = 51820 #本機監聽 WireGuard 端口
PrivateKey = IJ6niaDAl2/UXVApMIBAX8QjMgApDRTBtNHBsVi9z3o= #本機加密私鑰
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= #本機加密的對端公鑰(加密后數據僅對端可以解密)
AllowedIPs = 172.16.1.14/32 #本機允許的對端設備的 IP 地址段,其實就是在本機中這個虛擬網卡接收到對端發來的源地址都允許有哪些設備 IP 地址(多 peer 不可重復)
PersistentKeepalive = 25 #當會話存在一端 IP 地址為 NAT 地址或虛假公網 IP 地址時,由該方階段性每 25 秒發送 keepalive 報文保持會話的可用性,防止被設備終止。
在上文的基礎上,大家需要額外注意以下這些內容:
1、如果你存在多個 [Peer] ,則在下面直接增加一個新的 [Peer] 欄目;
2、如果多個 Peer 存在不同的 IP,請不要讓 AllowedIPs 存在重疊的 IP 地址段(比如配置多個相同 /24 只有一個生效);
3、Endpoint 既支持以域名的方式訪問,也支持以 IP 的方式訪問;
4、會話鏈接的建立只要保證兩端數據在一臺設備上成功協商,即使動態 IP 地址變更也不會影響 VPN 的穩定性;
5、ListenPort 不添加會自動生成高位端口用來 peer,以及主從結構下,從端不填寫 listenport;
6、Table 參數可以使用 auto 和 off,兩者分別對應"自動注入路由"和"禁止注入"。不配置采用 auto;
7、如果你是主從結構,需要讓從端在配置中將從端的"AllowedIPs ="補寫一條內容 0.0.0.0/0,::0 以允許所有流量;
8、PreUp,PostUp,PreDown,PostDown 這四個命令參數,是作為 wg-quick 快速設置/刪除接口之前/之后由 bash(1)執行的四條命令,常用于配置自定義 DNS 或防火墻規則。 特殊字符串 %i 作為變量替代所控制的 INTERFACE 配置名。每個命令參數都支持多條命令,參數內的多條命令將按前后順序依次執行,分隔符為 ; 分號。
-
Ubuntu
+關注
關注
5文章
588瀏覽量
30884
發布評論請先 登錄
服務器怎么搭建
ftp服務器怎么搭建
如何遠程登錄路由器

如何實現NFS服務搭建

企業云服務器平臺設計與搭建
飛凌嵌入式ElfBoard ELF 1板卡-常見網絡服務搭建之SSH服務搭建
飛凌嵌入式ElfBoard ELF 1板卡-常見網絡服務搭建之SSH服務搭建
云服務器連接不上是什么原因引起的?
飛凌嵌入式ElfBoard ELF 1板卡-常見網絡服務搭建之NFS服務搭建
云服務器搭建詳細過程
ElfBoard技術貼|如何在ELF 1開發板上搭建流媒體服務器

評論