使用以下方式設定簡單的 VPN WireGuard 以及用作伺服器的樹莓派

自 WireGuard 將成為 未來核心 Linux 5.6,我決定研究如何最好地將此 VPN 與我的系統整合。 Raspberry Pi 上的 LTE 路由器/存取點.

Оборудование

  • 帶有 LTE 模組和公用 IP 位址的 Raspberry Pi 3。這裡會有一個VPN伺服器(以下簡稱 邊緣行者)
  • 電話 Android必須使用 VPN 進行所有通信
  • 筆記本 Linux只應只在網路內部使用 VPN

每個連接到 VPN 的裝置都必須能夠連接到所有其他裝置。例如,如果兩台裝置都是 VPN 網路的一部分,那麼手機應該能夠連接到筆記型電腦上的 Web 伺服器。如果設定足夠簡單,您可以考慮將您的桌面連接到 VPN(透過乙太網路)。

鑑於有線和無線連接隨著時間的推移變得越來越不安全(有針對性的攻擊, KRACK 攻擊破解 WPA2 и 針對 WPA3 的 Dragonblood 攻擊我正在認真考慮使用 WireGuard 適用於我的所有設備,無論它們在何種環境下運作。

軟件安裝

WireGuard 提供 預編譯套件 對於大多數分佈 Linux, Windows и macOS申請 Android iOS 系統透過應用程式商店發布。

我使用的是最新版的 Fedora 系統。 Linux 31,安裝前我懶得看說明書,直接就找到軟體包了。 wireguard-tools,安裝了它們,然後卻無法弄清楚為什麼什麼都不起作用。進一步調查顯示我沒有安裝該軟體包。 wireguard-dkms (帶有網路驅動程式),但它不在我的發行版的儲存庫中。

如果我有讀過說明,我就會採取正確的步驟:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

在我的 Raspberry Pi 上,我安裝了 Raspbian Buster 發行版,其中已經有一個軟體包 wireguard,我們安裝它:

$ sudo apt install wireguard

在電話上 Android 我安裝了該應用程式。 WireGuard VPN 取自 Google App Store 官方目錄。

安裝金鑰

對節點進行身份驗證 Wireguard 使用簡單的私鑰/公鑰方案對 VPN 節點進行身份驗證。您可以使用以下命令輕鬆產生 VPN 金鑰:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

這給了我們三個密鑰對(六個檔案)。我們不會引用配置中的文件,而是將內容複製到這裡:每個鍵在 base64 中佔一行。

為 VPN 伺服器建立設定檔(Raspberry Pi)

配置非常簡單,我創建了以下文件 /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

一些評論:

  • 您需要將文件中帶有鍵的行插入到適當的位置
  • 我的 VPN 使用內部範圍 10.200.200.0/24
  • 對於團隊 PostUp/PostDown 我指定的是外部網路介面 wwan0,你可能有另一個(例如,eth0)

使用以下命令可以輕鬆設定VPN網路:

$ sudo wg-quick up wg0

一個小細節:作為 DNS 伺服器,我使用 dnsmasq 具有網路介面綁定 br0,我還添加了設備 wg0 到允許的設備清單。在 dnsmasq 中,這是透過在設定檔中新增帶有網路介面的新行來實現的 /etc/dnsmasq.conf例如:

interface=br0
interface=wg0

我還添加了一個 iptable 規則以允許流量到監聽 UDP 連接埠(51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

現在一切正常,我們可以設定 VPN 隧道的自動啟動:

$ sudo systemctl enable wg-quick@wg0.service

筆記型電腦上的客戶端配置

在筆記型電腦上我們建立一個設定檔 /etc/wireguard/wg0.conf 使用相同的設定:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

注:

  • 您需要指定 VPN 伺服器的公共 IP 或主機,而不是 edgewalker
  • 已安裝 AllowedIPs10.200.200.0/24,我們僅使用VPN來存取內部網路。到所有其他 IP 位址/伺服器的流量將繼續通過「正常」開放通道。筆記型電腦上預先設定的 DNS 伺服器也將被使用。

對於測試和自動啟動,我們使用相同的命令 wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

為客戶端進行設定 Android-電話

對於電話 Android 我們創建一個非常類似的配置(我們稱之為 mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

與筆記型電腦上的配置不同,手機應該使用我們的 VPN 伺服器作為 DNS 伺服器(線路 DNS),並透過 VPN 隧道傳輸所有流量(AllowedIPs = 0.0.0.0/0).

您無需將檔案複製到行動設備,而是可以將其轉換為二維碼:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

二維碼將以ASCII格式輸出到控制台。可以透過應用程式掃描該二維碼。 Android VPN並自動設定VPN隧道。

產量

調整 WireGuard 簡直太神奇了 OpenVPN.

來源: www.habr.com

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster