因為 WireGuard
Оборудование
- 具有 LTE 模組和公用 IP 位址的 Raspberry Pi 3。 這裡會有一個VPN伺服器(下文稱為 邊緣行者)
- 必須使用 VPN 進行所有通訊的 Android 手機
- Linux 筆記型電腦只能在網路內使用 VPN
連接到 VPN 的每台裝置都必須能夠連接到所有其他裝置。 例如,如果筆記型電腦和手機都屬於 VPN 網絡,那麼手機應該能夠連接到筆記型電腦上的 Web 伺服器。 如果設定非常簡單,那麼您可以考慮將桌面連接到 VPN(透過乙太網路)。
考慮到有線和無線連接隨著時間的推移變得越來越不安全(
軟件安裝
WireGuard 提供
我有最新的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 對等方進行身份驗證。 您可以使用以下命令輕鬆建立 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 [email protected]
筆記型電腦上的客戶端配置
在筆記型電腦上建立設定檔 /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
注:
- 您需要指定公用 IP 或 VPN 伺服器主機,而不是 Edgewalker
- 已安裝
AllowedIPs
上10.200.200.0/24
,我們只使用VPN來存取內部網路。 到所有其他 IP 位址/伺服器的流量將繼續通過「正常」開放通道。 它還將使用筆記型電腦上預先配置的 DNS 伺服器。
對於測試和自動啟動,我們使用相同的命令 wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
在 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
QR 碼將以 ASCII 形式輸出到控制台。 可以從 Android VPN 應用程式進行掃描,並自動設定 VPN 隧道。
產量
與 OpenVPN 相比,設定 WireGuard 簡直是神奇。
來源: www.habr.com