智匯華云 | Wireguard VPN 介紹與使用

智匯華云

Wireguard作為新一代VPN的代表,可能很多同學都不太了解。和其它 VPN 技術一樣,我們可以使用它在家庭網(wǎng)絡和公司網(wǎng)絡之間搭建一條安全的信道,由此可以訪問「內網(wǎng)」的數(shù)據(jù)和應用。本期智匯華云,我們?yōu)榇蠹規(guī)怼禬ireguard VPN 介紹與使用》。

Wireguard是目前使用起來最方便的,入門最快(內核代碼只有4000行),性能最強的l3 vpn,即使是在樹莓派這種入門級嵌入式平臺上也能跑到600Mb/s的速度,并且配置wireguard比其他vpn都要方便的多,配置參數(shù)基本看上去就能理解,如果你以前配置過ipsec vpn,那一定會對一大堆參數(shù)感到莫名的頭疼,常常會因為連不上而查看log并調整參數(shù)。

Wireguard工作原理

智匯華云

內核會創(chuàng)建出對應的wireguard接口,這里取名為wg0,接口上配置了雙方通信的地址,這樣當物理機上的程序使用10.66.66.1地址進行訪問10.66.66.2地址時,內核就會進行數(shù)據(jù)包加密,并把加密之后的報文封包為udp報文,發(fā)送給對方,對方內核會進行報文解密,并把解密之后的數(shù)據(jù)包發(fā)送給用戶,完成vpn隧道的功能。

Wireguard概念介紹

Wireguard vpn中涉及到幾個基本概念:

Peer:wireguard中的節(jié)點。

私鑰(Private key):每個節(jié)點自己的私鑰,可以使用wg genkey生成。

公鑰(Public key):每個節(jié)點自己的公鑰,可以使用wg pubkey生成。

allowed-ips:定義每個節(jié)點允許通過的ip地址段。

這里公鑰使用的Curve25519的Diffie-Hellman函數(shù),由Daniel J. Bernstein教授設計。在密碼學中,它是最快的ECC曲線之一,并未被任何已知專利所涵蓋。并且wireguard為了防止被以后的量子計算機破解,還可以額外使用wg genpsk產(chǎn)生與共享密鑰來保證安全。考慮的真的是周到。

Wireguard 隧道創(chuàng)建流程非常簡單,用一句話來說就是,通過curve25519進行ecdh密鑰交換得到雙方的對稱密鑰,之后所有報文通過該密鑰進行加解密。

其實所有的vpn都是為了雙方協(xié)商一個密鑰進行通信,但是能做到如此簡單的還只有wireguard,不像ipsec,協(xié)商個密鑰真的是復雜,ikev1就有野蠻模式和主模式,之后又來了個ikev2版本,讓人頭暈,就看libreswan中光pluto目錄下代碼就有10萬行。

Wireguard使用

安裝wireguard:

如果內核大于5.6就不需要安裝內核模塊了,只要安裝wireguard-tools工具就行。舊版本內核可以安裝wireguard-dkms內核模塊。

# apt install wireguard-tools wireguard-dkms

了解前面幾個基本概念之后,就可以通過ip命令創(chuàng)建一個最簡單的wireguard vpn。

在12.13.11.10機器上執(zhí)行如下命令:

智匯華云

在12.13.11.13上執(zhí)行如下命令:

?

智匯華云

查看wireguard連接狀態(tài):

智匯華云

這里可以看到wireguard vpn建立正常,已經(jīng)可以ping通對方地址。

這里的wg0設備里面顯示了NOARP,也就是說不支持2層mac地址查找,因此wireguard只能封裝三層包。

要停止手工創(chuàng)建的wireguard隧道也很簡單,直接刪除就行了:

# ip link del dev wg0

上面演示的是純手工創(chuàng)建wireguard隧道,還有另一種方式,可以事先把配置先寫入/etc/wireguard/wg0.conf文件中,然后wg-quick up wg0啟用起來就可以。

12.13.11.10節(jié)點:

智匯華云

12.13.11.13節(jié)點:

智匯華云

wg-quick-up命令除了會自動創(chuàng)建wg0設備并配置好wireguard的參數(shù)之外,還會處理路由表相關的東西,特別是當AllowedIPs設置為0.0.0.0/0時,就會通過ip rule添加額外的路由表,來讓本機出去的流量都從wg0設備走,不然這些規(guī)則都要手動設置。

從上面的介紹可以看出,wireguard真的是簡單,配置參數(shù)也少,但是就是這樣一個vpn最純正功能的軟件,卻直到最近才被開發(fā)出來,當然wireguard缺點也是有的,比如沒辦法加密兩個節(jié)點之間本來的流量,wireguard只有在新接口上的流量才能被加密,而ipsec卻可以做到^^。

(免責聲明:本網(wǎng)站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內容可能涉嫌侵犯其知識產(chǎn)權或存在不實內容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )