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

智匯華云

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

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

Wireguard工作原理

智匯華云

內(nèi)核會創(chuàng)建出對應(yīng)的wireguard接口,這里取名為wg0,接口上配置了雙方通信的地址,這樣當(dāng)物理機(jī)上的程序使用10.66.66.1地址進(jìn)行訪問10.66.66.2地址時,內(nèi)核就會進(jìn)行數(shù)據(jù)包加密,并把加密之后的報文封包為udp報文,發(fā)送給對方,對方內(nèi)核會進(jìn)行報文解密,并把解密之后的數(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教授設(shè)計。在密碼學(xué)中,它是最快的ECC曲線之一,并未被任何已知專利所涵蓋。并且wireguard為了防止被以后的量子計算機(jī)破解,還可以額外使用wg genpsk產(chǎn)生與共享密鑰來保證安全。考慮的真的是周到。

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

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

Wireguard使用

安裝wireguard:

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

# apt install wireguard-tools wireguard-dkms

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

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

智匯華云

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

?

智匯華云

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

智匯華云

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

這里的wg0設(shè)備里面顯示了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設(shè)備并配置好wireguard的參數(shù)之外,還會處理路由表相關(guān)的東西,特別是當(dāng)AllowedIPs設(shè)置為0.0.0.0/0時,就會通過ip rule添加額外的路由表,來讓本機(jī)出去的流量都從wg0設(shè)備走,不然這些規(guī)則都要手動設(shè)置。

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

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