首頁>技術>

一、wireguard簡單介紹

什麼是 WireGuard?

WireGuard 是一個易於配置、快速且安全的開源 Virtual Private Network,它利用了最新的加密技術。目的是提供一種更快、更簡單、更精簡的通用 Virtual Private Network,它可以輕鬆地在樹莓派這類低端裝置到高階伺服器上部署。

IPsec 和 OpenV*P*N 等大多數其他解決方案是幾十年前開發的。安全研究人員和核心開發人員 Jason Donenfeld 意識到它們速度慢且難以正確配置和管理。

這讓他建立了一個新的開源Virtual Private Network 協議和解決方案,它更加快速、安全、易於部署和管理。

WireGuard 最初是為 Linux 開發的,但現在可用於 Windows、macOS、BSD、iOS 和 Android。除了可以跨平臺之外,WireGuard 的最大優點之一就是易於部署。配置和部署 WireGuard 就像配置和使用 SSH 一樣容易

WireGuard 受到 Linus 本人的推薦,將整合到最新版Linux Kernel中,安裝部署更方便。WireGuard 總共幾千行程式碼,只需十分鐘就能搞定一臺WireGuard伺服器。

Wireguard安全性高。極佳的Virtual Private Network 漫有特性,裝置支援廣泛。核心級別的端對端隧道加密技術,擁有良好的加密特性。Wireguard配置檔案由兩部分組成:interface和peer。伺服器端、客戶端互為平等關係。支援預共享金鑰preshared key加密,防攻擊

當將 WireGuard 安裝為核心模組時,基本上需要你自行修改 Linux 核心並向其新增程式碼。從 5.6 核心開始,你無需手動新增核心模組。預設情況下它將包含在核心中

所以下面使用Fedora Server 33版本來配置Wireguard

(核心版本5.8.15,預設就支援wireguard)

參考如下連線完成

https://www.linode.com/docs/guides/set-up-wireguard-vpn-on-ubuntu/

拓撲如下

(圖片可放大檢視)

1) 左側內網A Fedora33機器的IP 192.168.233.128作為wireguard Server端

2) 在左側出口路由器上對映192.168.233.128的TCP 22(SSH)和UDP 51820(WireGuard Server通訊埠),對映後公網為10.20.90.193(模擬公網IP)

3) 右側內網B Fedora33機器的IP 192.168.198.131作為wireguard Client端

二、Wireguard Server端配置1、Server端安裝wireguard

內網IP 192.168.233.128

dnf install wireguard-tools

(圖片可放大檢視)

(圖片可放大檢視)

2、建立金鑰對
1、服務端的私鑰wg genkey | tee /etc/wireguard/server.keyyAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=2、服務端的公鑰cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pubBRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=3、客戶端的私鑰wg genkey | tee /etc/wireguard/client.key8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=4、客戶端的公鑰cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pubhXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=

(圖片可放大檢視)

3、建立wg0的介面配置檔案
ip addr或者ifconfig

先確認目前的網路介面名稱

如下圖所示網路介面名稱 為ens33

(圖片可放大檢視)

接下來編輯wg0.conf

vi /etc/wireguard/wg0.conf#新增如下內容[Interface]# specify generated private key for serverPrivateKey = yAQFm+E6gVBCG7c72lhRngaCZy+gVzCCpRbudPmuKms=# IP address for VPN interfaceAddress = 172.16.100.1# UDP port WireGuard server listensListenPort = 51820# possible to set any commands after WireGuard starts/stops# set routing rules like follows to access to local network via VPN session# [wg0] ⇒ VPN interface name# [eth0] ⇒ Ethernet interface namePostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE[Peer]# specify public key for clientPublicKey = hXhveUdRmz6uQEr+7fQOh1YQ1c56sTiIXfzHVTmeBGs=# clients' VPN IP addresses you allow to connect# possible to specify subnet ⇒ [172.16.100.0/24]AllowedIPs = 172.16.100.5
4、核心開啟IPv4轉發
vi /etc/sysctl.conf新增一行net.ipv4.ip_forward=1生效配置sysctl -p

(圖片可放大檢視)

5、啟動wg-quick服務
systemctl enable wg-quick@wg0systemctl start [email protected] addr 

(圖片可放大檢視)

三、路由器埠對映配置

1)對映192.168.233.128的TCP 22(SSH)——方便除錯

2)UDP 51820(WireGuard Server通訊埠)

對映後公網為10.20.90.193(模擬公網IP)

由於是使用VMwareWorkstation虛擬機器NAT模式搭建的環境,埠對映的配置方式如下

(圖片可放大檢視)

(圖片可放大檢視)

(圖片可放大檢視)

四、WireGuard客戶端配置1、安裝wireguard-tools
dnf install wireguard-tools 

(圖片可放大檢視)

(圖片可放大檢視)

2、新增wg0.conf配置檔案
vi /etc/wireguard/wg0.confcat /etc/wireguard/wg0.conf新增如下配置[Interface]# specify private key for client generated on WireGuard serverPrivateKey = 8F3bI2FydYhh8Ps9Xi2IenrdQrH9xXw6wzJaVrRSSHE=# IP address for VPN interfaceAddress = 172.16.100.5[Peer]# specify public key for server generated on WireGuard serverPublicKey = BRPmId4mnGBfCgmniDf3Ar+1cvXcS85pntqYH1w0jlM=# IP addresses you allow to connect# on the example below, set WireGuard server's VPN IP address and real local networkAllowedIPs = 172.16.100.1, 192.168.233.0/24# specify server's global IP address:port# (acutually, example of IP below is for private range, replace to your own global IP)EndPoint = 10.20.90.193:51820

(圖片可放大檢視)

3、nc探測埠是否通
nc -vuz 10.20.90.193 51820

(圖片可放大檢視)

4、若埠可通,啟動wg0介面
wg-quick up wg0#關閉則用wg-quick down wg0

(圖片可放大檢視)

5、wg show檢視連線狀況並測試是否可以訪問到Server端的網路
wg show

(圖片可放大檢視)

如下圖所示,測試OK,WireGuard虛擬專用網搭建成功

(圖片可放大檢視)

Tips

若Server端沒有關閉firewalld防火牆,可能會導致客戶端無法訪問Server端的LAN網路

需要在Server端關閉firewalld防火牆並重啟wg-quick服務

11
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • VSCode安裝和測試