LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

WireGuard穿透NAT!不同異地局域網絡秒變統一內網

admin
2025年5月20日 7:53 本文熱度 103

前言

如果公司有3個辦公網,比如A,B,C,三地,三地之間需要組網,那么就可以使用wireguard來實現。本次我們使用wireguard來實現A,B,C三地組網。

?Wireguard介紹

WireGuard 是一種開源、輕量級、高性能的虛擬專用網絡(VPN)協議,旨在通過簡潔的設計和現代加密技術提供安全、快速的網絡隧道連接。

核心特性

簡潔高效

  • ? 簡潔高效:WireGuard 代碼量僅約 4,000 行,相比傳統 VPN 協議(如 OpenVPN 或 IPsec)更易于審計和維護。其設計去除了復雜的證書管理,僅依賴公鑰加密實現身份驗證。
  • ? 內核級集成(Linux 5.6+ 版本原生支持),資源占用低,性能優異,單核吞吐量可達 10Gbps。

現代加密技術

  • ? 采用 Curve25519(密鑰交換)、ChaCha20(數據加密)和 Poly1305(數據完整性校驗)等先進算法,確保傳輸安全且高效。
  • ? 支持“完美前向保密”(Perfect Forward Secrecy),即使密鑰泄露,歷史通信仍無法被破解。

跨平臺與易用性

  • ? 兼容 Linux、Windows、macOS、iOS、Android 等主流系統,配置文件僅需 Interface(本地配置)和 Peer(對端設備)兩部分。
  • ? 部署快捷,通過 wg genkey 和 wg pubkey 命令即可生成密鑰對,并通過 UDP 協議實現快速連接。

網絡適應性

  • ? 基于 UDP 協議傳輸,規避 TCP 協議可能存在的連接阻塞問題,同時通過 IP 綁定 Cookie 機制防御拒絕服務攻擊。
  • ? 支持動態 IP 漫游,設備切換網絡時無需重新建立連接。

典型的應用場景

  • ? 遠程辦公
    • ? 企業員工可通過 WireGuard 安全接入內部網絡,訪問資源(如數據庫、文件服務器)。
  • ? 隱私保護
    • ? 用戶可通過 WireGuard 隧道加密所有流量,防止 ISP 監控或公共 Wi-Fi 數據竊取。
  • ? 跨云與內網穿透
    • ? 連接不同云服務商的虛擬機,構建混合云網絡。
    • ? 通過 IPv6 公網地址直接訪問家庭或企業內網,無需第三方中繼。
  • ? 點對點安全通信
    • ? 直接在設備間建立加密隧道,適用于物聯網(IoT)設備或服務器間數據傳輸。

技術對比與優勢

picture 0

工作原理簡析

密鑰交換

  • ? 使用 NoiseIK 協議完成單次往返密鑰交換,生成會話密鑰。

數據傳輸

  • ? 加密數據通過 UDP 封裝傳輸,支持動態調整 MTU 值以優化網絡性能。

會話管理

  • ? 內置狀態機機制,自動處理連接中斷與恢復,用戶無需手動干預。

環境準備

  • ? 一臺擁有公網IP的機器,用于做中繼
  • ? 兩個不同網段的局域網,用于組網
  • ? 兩臺機器,一臺用于管理,一臺用于組網

組網

網絡架構圖如下

picture 4

配置中繼服務器

sudo apt install wireguard

生成服務端密鑰對:
執行以下命令后,將在 /etc/wireguard 目錄下生成私鑰文件 privatekey 和公鑰文件 publickey :

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

創建配置文件:在 /etc/wireguard 目錄下創建一個名為 wg0.conf 的配置文件,使用編輯器打開并編寫配置:

sudo vim /etc/wireguard/wg0.conf

配置文件內容如下:

[Interface]
Address = 10.0.0.1/24 #WireGuard 的接口地址,可以從為專用網絡保留的地址范圍(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16)中選擇一個 IP 地址。
ListenPort = 51820 #WireGuard 的監聽端口,可以自定義,但需要與客戶端配置文件中的端口一致。
PrivateKey = YOUR_SERVER_PRIVATE_KEY #服務端私鑰,使用 wg genkey 命令生成。
SaveConfig = true #保存配置文件
PostUp = iptables -A FORWARD -i eth0 -j ACCEPT; iptables -A FORWARD -o eth0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #啟動時執行的命令
PostDown = iptables -D FORWARD -i eth0 -j ACCEPT; iptables -D FORWARD -o eth0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE #關閉時執行的命令

# A機器的公鑰,寫上A機器的內網IP段
[Peer]
PublicKey = YOUR_CLIENT_PUBLIC_KEY #客戶端公鑰,使用 wg pubkey 命令生成。
AllowedIPs = 10.0.0.0/24,192.168.2.0/24 #允許訪問的 IP 地址范圍,可以是局域網內的所有 IP 地址,也可以是特定的 IP 地址,這里我們需要把B地的內網IP段加進去。

# B機器的公鑰,寫上B機器的內網IP段
[Peer]
PublicKey = YOUR_CLIENT_PUBLIC_KEY #客戶端公鑰,使用 wg pubkey 命令生成。
AllowedIPs = 10.0.0.0/24,192.168.1.0/24 #允許訪問的 IP 地址范圍,可以是局域網內的所有 IP 地址,也可以是特定的 IP 地址,這里我們需要把A地的內網IP段加進去。

設置 /etc/wireguard 目錄下所有文件的權限為 600,確保服務的安全性。

sudo chmod 600 /etc/wireguard/*

啟動 WireGuard 服務:

sudo wg-quick up wg0

查看 WireGuard 服務狀態:

sudo wg

WireGuard 可以使用 Systemd 進行管理,運行以下命令設置 WireGuard 接口開機自啟動:

sudo systemctl enable wg-quick@wg0

啟用 IP 轉發,打開 /etc/sysctl.conf 文件:

sudo vim /etc/sysctl.conf

添加以下內容:

net.ipv4.ip_forward = 1

保存文件并應用配置:

sudo sysctl -p

如果系統啟用了防火墻,則需要在防火墻放行 UDP 端口 51820 的流量,我使用的是 ufw 軟件管理防火墻,相應的命令如下:

sudo ufw allow 51820/udp

到這里,WireGuard 的服務端就已經設置好了。

配置機器A客戶端

開啟 IP 地址轉發

sudo vim /etc/sysctl.conf

添加以下內容:

net.ipv4.ip_forward = 1 

保存文件并應用配置:

sudo sysctl -p

安裝 WireGuard 客戶端:
參考上面的方法安裝一個客戶端,這里就不贅述了。

配置客戶端配置文件:

sudo vim /etc/wireguard/wg0.conf

配置文件內容如下:

[Interface]
PrivateKey = YOUR_CLIENT_PRIVATE_KEY #客戶端私鑰,使用 wg genkey 命令生成。
Address = 10.0.0.2/24 #WireGuard 的接口地址,可以從為專用網絡保留的地址范圍(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16)中選擇一個 IP 地址。
DNS = 8.8.8.8,8.8.4.4 #DNS 服務器地址,可以自定義,也可以使用運營商的 DNS 服務器。

[Peer]
PublicKey = YOUR_SERVER_PUBLIC_KEY #服務端公鑰,使用 wg pubkey 命令生成。
Endpoint = 8.8.8.8:51820 #服務端 IP 地址和端口,需要與服務端配置文件中的 Endpoint 一致。
AllowedIPs = 10.0.0.0/24,192.168.2.0/24 #允許訪問的 IP 地址范圍,可以是局域網內的所有 IP 地址,也可以是特定的 IP 地址,這里我們需要把B地的內網IP段加進去。

啟動 WireGuard 客戶端:

sudo wg-quick up wg0

查看 WireGuard 客戶端狀態:

sudo wg

到這里,WireGuard 的客戶端就已經設置好了。

配置機器B客戶端

配置機器B客戶端的步驟與機器A客戶端的步驟類似,這里就不贅述了。

說個不一樣的,在配置文件中,需要把A地的內網IP段加進去。還有Address需要修改為10.0.0.3/24

AllowedIPs = 10.0.0.0/24,192.168.1.0/24 #允許訪問的 IP 地址范圍,可以是局域網內的所有 IP 地址,也可以是特定的 IP 地址,這里我們需要把A地的內網IP段加進去。

到這里,WireGuard 的客戶端就已經設置好了。

開啟Nat轉發,實現兩地互通

以下命令A機器和B機器都需要執行

iptables -A FORWARD -i wg0 -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -o wg0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -j DROP  # 拒絕其他轉發流量

OpenWrt配置[可選]

OpenWrt的配置與Linux的配置類似,這里就不贅述了。
新增一個wireguard的虛擬接口,然后配置好配置文件,啟動服務,開啟轉發,開啟nat功能。
將wireguard接口加入到LAN規則中,然后開啟IP轉發和IP 動態偽裝功能即可。

picture 5

測試

在A機器上ping B機器的內網IP,如果能ping通,則說明組網成功。

總結

其實核心步驟是A,B這兩個機器作為了個兩個網段的網關,所以需要開啟Ip路由轉發以及Nat功能。如果使用OpenWrt,則可以參考上面的OpenWrt配置部分,如果使用Linux,則可以參考非OpenWrt部分上面的配置。


閱讀原文:原文鏈接


該文章在 2025/5/20 9:34:04 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩在线精品一二三区 | 日本有码视频中文字幕 | 一级A爱做片免费观看国产 香蕉精品偷在线观看 | 亚洲国产精品久久精品怡红院 | 亚洲欧美制服丝袜精品久久 | 亚洲综合另类专区在线 |