自 WireGuard 未來核心 Linux 5.6,我決定研究如何最好地將此 VPN 與我的系統整合。 .
Оборудование
- 帶有 LTE 模組和公用 IP 位址的 Raspberry Pi 3。這裡會有一個VPN伺服器(以下簡稱 邊緣行者)
- 電話 Android必須使用 VPN 進行所有通信
- 筆記本 Linux只應只在網路內部使用 VPN
每個連接到 VPN 的裝置都必須能夠連接到所有其他裝置。例如,如果兩台裝置都是 VPN 網路的一部分,那麼手機應該能夠連接到筆記型電腦上的 Web 伺服器。如果設定足夠簡單,您可以考慮將您的桌面連接到 VPN(透過乙太網路)。
鑑於有線和無線連接隨著時間的推移變得越來越不安全(, и 我正在認真考慮使用 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 我安裝了該應用程式。 取自 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
- 已安裝
AllowedIPs上10.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
