Remove ads

WireGuard是由Jason A. Donenfeld開發的自由及開源加密VPN程式及協定,[3]旨在獲得比IPsecOpenVPN更好的效能[4],後兩者都是常見的隧道協定[5]WireGuard協定的流量經由UDP傳輸。[6]

快速預覽 原作者, 開發者 ...
WireGuard
原作者Jason A. Donenfeld
開發者Edge Security LLC.
目前版本
  • 1.0.20220627(2022年6月27日;穩定版本)[1]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言C語言Linux內核模組)
Go(用戶空間實現)
作業系統
類型虛擬私人網路
許可協定GPLv2
網站www.wireguard.com
關閉

2020年3月,該軟件的Linux版本達到了穩定的生產版本,並被納入Linux 5.6內核,並在一些Linux發行版向後移植到早期的Linux內核。[7]Linux內核組件在GNU通用公共許可證(GPL)版本2下獲得許可;其他實現則在GPLv2或其他自由/開源許可證下獲得許可。[3]

名稱「WireGuard」是Jason A. Donenfeld的註冊商標[3]

協定

WireGuard使用以下協定:[8]

2019年5月,INRIA的研究人員使用CryptoVerif英語CryptoVerif證明輔助工具英語Proof assistant發佈了WireGuard協定的機器驗證證明。[9]

可選的預共用對稱金鑰模式

WireGuard支援預共用英語Pre-shared key對稱金鑰模式,該模式提供了一層額外的對稱加密,以減輕未來量子計算的進步帶來的風險。這解決了流量可能被儲存到量子電腦能夠破解Curve25519的風險,屆時流量可能會被解密。預共用金鑰「從金鑰管理的角度來看通常很麻煩,而且可能更容易被盜」,但在短期內,如果對稱金鑰被泄露,Curve25519金鑰仍然提供足夠的保護。[10]

網絡

WireGuard僅使用[11]UDP[3]這是因為TCP-over-TCP存在潛在的缺點。[11][12][13]在基於TCP的連接上隧道化TCP被稱為「TCP-over-TCP」,這樣做會導致傳輸效能急劇下降(該問題被稱為「TCP熔斷」[a],英語:TCP Meltdown)。當一個TCP連接被承載於另一個TCP連接之上時,就可能發生TCP熔斷:基礎層遇到問題的時候會嘗試進行補償,而其上層則會因此過度補償(英語:overcompensates),這種過度補償會導致延遲並使傳輸效能下降。

其預設伺服器埠為UDP之51820。

WireGuard完全支援IPv6,無論是在隧道內部還是外部。它僅支援第3層IPv4IPv6,並且可以封裝v4-in-v6,反之亦然。[14]

MTU開銷

WireGuard的開銷細分如下:[15]

  • 20位元組的IPv4報頭或40位元組的IPv6報頭
  • 8位元組的UDP報頭
  • 4位元組的類型
  • 4位元組的金鑰索引
  • 8位元組的亂數
  • N位元組的加密數據
  • 16位元組的身份驗證標籤

MTU操作注意事項

假設傳輸WireGuard封包的底層網絡保持1500位元組的MTU,則將所有相關對等方的WireGuard介面組態為1420位元組的MTU是傳輸IPv6+IPv4流量的理想選擇。但是,當僅承載傳統的IPv4流量時,WireGuard介面的MTU可以設置為更高的1440位元組。[15]

從操作角度和網絡組態一致性來看,選擇為WireGuard介面組態1420MTU是有利的。這種方法確保了一致性,並促進了將來為WireGuard對等方和介面啟用IPv6的更平穩過渡。

注意事項

在某些情況下,例如,一個對等方位於MTU為1500位元組的網絡之後,而另一個對等方位於LTE等無線網絡之後,運營商通常會選擇遠低於1420位元組的MTU。在這種情況下,主機的底層IP網絡堆疊將對UDP封裝的封包進行分片並行送,但隧道內的包將保持一致,並且不需要分片,因為PMTUD英語Path MTU Discovery將檢測對等方之間的MTU(在本例中為1420位元組)並在對等方之間傳送固定大小的封包。

可延伸性

WireGuard旨在由第三方程式和指令碼進行擴充。這已被用於增強WireGuard的各種功能,包括更友好的管理介面(包括更輕鬆的金鑰設置)、紀錄檔記錄、動態防火牆更新、動態IP分配,[16]以及LDAP整合。[來源請求]

從最小的核心代碼庫中排除此類複雜功能可以提高其穩定性和安全性。為了確保安全性,WireGuard限制了實現加密控制項的選項,限制了金鑰交換過程的選擇,並將演算法[8] 對映到現代密碼基元英語Cryptographic primitive的一小部分。如果在任何原語中發現缺陷,可以發佈解決該問題的新版本。

反響

ArsTechnica的一篇評論發現,WireGuard易於設置和使用,使用了強大的加密演算法,並且代碼庫最小,攻擊面小。[17]

WireGuard已獲得開放技術基金會的資助,[18]並接受了MullvadPrivate Internet AccessIVPNNLnet基金會[19]和OVPN的捐贈。[20]

俄勒岡州參議員Ron Wyden已建議美國國家標準與技術研究院評估WireGuard作為現有技術的替代方案。[21]

可用性

實現

WireGuard協定的實現包括:

  • Donenfeld使用C語言和Go語言編寫的初始實現。[22]
  • Cloudflare的BoringTun,一個使用Rust語言編寫的用戶空間實現。[23][24]
  • Matt Dunwoodie為OpenBSD編寫的使用C語言的實現。[25]
  • Ryota Ozaki為NetBSD編寫的使用C語言的wg(4)實現。[26]
  • FreeBSD的實現是用C語言編寫的,並且與OpenBSD的實現共用大部分數據路徑。[27]
  • 自2021年8月起,名為「wireguard-nt」的原生Windows內核實現。[28]
  • 支援Fritz!OS 7.39及更高版本的AVM Fritz!Box調製解調-路由器。從7.50版本開始允許站點到站點的WireGuard連接。[29]

歷史

代碼庫的早期快照存在於2016年6月30日。[30] WireGuard的四個早期採用者是VPN服務提供商Mullvad[31] AzireVPN,[32] IVPN[33] 和cryptostorm。[34]

2019年12月9日,Linux網絡堆疊的主要維護者DavidMiller接受了WireGuard修補程式到「net-next」維護者樹中,以便包含在即將發佈的內核中。[35][36][37]

2020年1月28日,Linus Torvalds合併了David Miller的net-next樹,WireGuard進入了mainline Linux內核樹。[38]

2020年3月20日,Debian開發人員在其Debian 11版本(測試版)的內核組態中啟用了WireGuard的模組構建選項。[39]

2020年3月29日,WireGuard被納入Linux 5.6版本樹。Windows版本的軟件仍處於測試階段。[7]

2020年3月30日,Android開發人員在其通用內核映像中添加了對WireGuard的原生內核支援。[40]

2020年4月22日,NetworkManager開發人員BeniaminoGalvani在GNOME中合併了對WireGuard的GUI支援。[41]

2020年5月12日,Matt Dunwoodie提出了在OpenBSD中對WireGuard的原生內核支援的修補程式。[42]

2020年6月22日,在MattDunwoodie和Jason A. Donenfeld的努力下,WireGuard支援被匯入OpenBSD。[43]

2020年11月23日,Jason A. Donenfeld發佈了Windows軟件套件的更新,改進了安裝、穩定性、ARM支援和企業功能。[44]

2020年11月29日,WireGuard支援被匯入FreeBSD 13內核。[27]

2021年1月19日,在pfSense社區版 (CE)2.5.0開發快照中添加了對WireGuard的預覽支援。[45]

2021年3月,在FreeBSDWireGuard中緊急代碼清理無法快速完成之後,內核模式WireGuard支援從仍在測試中的FreeBSD13.0中刪除。[46] 基於FreeBSD的pfSense社區版 (CE)2.5.0和pfSense Plus 21.02也刪除了基於內核的WireGuard。[47]

2021年5月,WireGuard支援作為pfSense社區成員Christian McDonald編寫的實驗包重新引入pfSense CE和pfSense Plus開發快照中。pfSense的WireGuard軟件套件包含了最初由Netgate贊助的Jason A. Donenfeld正在進行的內核模式WireGuard開發工作。[48][49][50]

2021年6月,pfSense CE 2.5.2和pfSense Plus 21.05的官方軟件套件儲存庫都包含了WireGuard軟件套件。[51]

2023年,WireGuard從德國的主權科技基金英語Sovereign Tech Fund獲得了超過200,000歐元的支援。[52]

參見

註釋

參考來源

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads