使用開源工具創建私有的虛擬專用網路

通過計算機網路從一個地方到另一個地方可能是一件棘手的事情。除了知道正確的地址和打開正確的埠之外,還有安全問題。 對於 Linux,SSH 是一種流行的默認方式,雖然你可以使用 SSH 做很多事情,但它仍然「只是」一個安全外殼(實際上,這就是 SSH 的含義)。用於加密流量的更廣泛的協議是「虛擬專用網路」,它創建了一個獨特的兩點之間的虛擬的專用網路。有了它,你可以登錄到另一個網路上的計算機並使用它的所有服務(文件共享、印表機等等),就像你坐在同一個房間里一樣,並且全部的數據都是從點到點加密的。
通常,為了使虛擬專用網路連接成為可能,進入每個網路的網關必須接受虛擬專用網路流量,並且必須偵聽目標網路上的某些計算機的虛擬專用網路流量。然而,你可以運行自己的帶有虛擬專用網路伺服器的路由器固件,使你能夠連接到目標網路,而無需擔心轉發埠或考慮內部拓撲。我最喜歡的固件是 OpenWrt,在本文中我將演示如何設置它,以及如何啟用虛擬專用網路。
什麼是 OpenWrt?
OpenWrt 是一個使用 Linux 面向嵌入式設備的開源項目。它已經存在超過 15 年,擁有龐大而活躍的社區。
使用 OpenWrt 的方法有很多種,但它的主要用途是在路由器中。它提供了一個具有包管理功能的完全可寫的文件系統,並且由於它是開源的,你可以查看和修改代碼並為生態系統做出貢獻。如果你想對路由器進行更多控制,這就是你想要使用的系統。
OpenWrt 支持很多路由器,包括 思科、華碩、MikroTik、Teltonika Networks、D-Link、TP-link、Buffalo、Ubiquiti 等知名品牌和 許多其他品牌。
Wireguard 是什麼?
Wireguard 是開源的虛擬專用網路軟體,它比 OpenVPN 等其他選項更快、更簡單且更安全。它使用最先進的密碼學:用於對稱加密的 ChaCha20;用於密鑰協商的 Curve 25519(使用橢圓曲線),和用於散列的 BLAKE2。這些演算法的設計方式在嵌入式系統上是高效的。Wireguard 也可用於各種操作系統 平台。
先決條件
對於這個項目,你需要:
- Teltonika RUT955 或支持 OpenWrt 的其他路由器
- 一個公網 IP 地址,用於從外部網路連接到虛擬專用網路
- 一部安卓手機
安裝 OpenWrt
首先,下載路由器的 OpenWrt 鏡像。使用 固件選擇器 檢查 OpenWrt 是否支持你的路由器並下載固件。輸入你的路由器型號,將顯示選項:

使用搜索框右側的下拉輸入選擇要下載的固件版本。
下載出廠鏡像。

許多路由器允許你從 Web 界面刷入未經授權的固件,但 Teltonika Networks 不允許。要將 OpenWrt 固件刷入這樣的路由器,你需要使用引導載入器。為此,請按照下列步驟操作:
- 拔掉路由器的電源線。
- 按住重置按鈕。
- 插入路由器的電源線。
- 插入電源線後,繼續按住重置按鈕 5 到 8 秒。
- 將計算機的 IP 地址設置為
192.168.1.15
,將網路掩碼設置為255.255.255.0
。 - 使用乙太網電纜通過 LAN 埠連接路由器和計算機。
- 打開網頁瀏覽器並輸入
192.168.1.1:/index.html
。 - 上傳並刷寫固件。
刷機過程可能佔用三分鐘。之後,你應該可以通過在瀏覽器中輸入 192.168.1.1
來訪問路由器的 Web 界面。 默認情況下沒有設置密碼

配置網路連接
網路連接是必要條件。如果你的 Internet 服務提供商(ISP) 使用 DHCP 自動分配你的 IP 地址,你只需將乙太網電纜插入路由器的 WAN 埠。
如果你需要手動分配 IP 地址,導航至 「Network → Interfaces」。選擇 「Edit」 編輯你的 WAN 介面。從 「Protocol」 欄位中,選擇 「Static address」,然後選擇 「Switch protocol」。

在 「IPv4 address」 欄位中,輸入你的路由器地址。設置 「IPv4 netmask」 以匹配你的網路子網;輸入你將用於連接到網路的 「IPv4 gateway」 地址; 並在 「Use custom DNS servers」 欄位中輸入 DNS 伺服器的地址。保存配置。
就是這樣!你已成功配置 WAN 介面以獲得網路連接。
安裝必要的包
默認情況下,該固件不包含很多包,但 OpenWrt 有一個包管理器和可選安裝的軟體包。導航到 「System → Software」 並通過選擇 「Update list...」 更新你的包管理器。

在「Filter」輸入中,鍵入 「Wireguard」,等待系統找到所有包含該關鍵字的包。找到並安裝名為 「luci-app-wireguard」 的包。

該軟體包包括一個用於配置 Wireguard 的 Web 界面,並安裝 Wireguard 所必需的所有依賴項。
如果你在安裝 Wireguard 軟體包之前收到一個軟體包丟失的警告並且在存儲庫中找不到,請忽略它並繼續。
接下來,找到並安裝名為 「luci-app-ttyd」 的包。這將用於稍後訪問終端。
安裝這些軟體包後,重新啟動路由器以使更改生效。
配置 Wireguard 介面
接下來,創建 Wireguard 介面。導航到 「Network → Interfaces」 並選擇左下角的 「Add new interface...」。在彈出窗口中,輸入你想要的介面名稱,從下拉列表中選擇 「WireguardVPN」,然後選擇右下角的 「Create interface」。

在新彈出的窗口中,選擇 「Generate Key」 為 Wireguard 介面生成私鑰。在 「Listen Port」 欄位中,輸入所需的埠。我將使用默認的 Wireguard 埠,「51820」。在 「IP Addresses」 欄位中,分配將用於 Wireguard 介面的 IP 地址。在這個例子中,我使用了 10.0.0.1/24
。數字 「24」 表明我的子網的大小。

保存配置並重啟介面。
導航到 「Services → Terminal」,登錄到 shell,然後輸入命令 wg show
。你將看到有關 Wiregaurd 介面的一些信息,包括其公鑰。複製公鑰——稍後你將需要它來創建對等點。

配置防火牆
導航到 「Network → Firewall」 並選擇 「Traffic Rules」 選項卡。在頁面底部,選擇 「Add」。在彈出窗口的 「Name」 欄位中,為你的規則命名,例如 「Allow-wg」。接下來,將 「Destination zone」 從 「Lan」 更改為 「Device」,並將 「Destination port」 設置為 「51820」。

保存配置。
手機上配置 Wireguard
從 Google Play 在你的手機上安裝 Wireguard 應用程序。安裝後,打開應用程序並從頭開始創建一個新介面。在 「Name」 欄位中,輸入要用於介面的名稱。在 「Private key」 欄位中,按右側的雙向箭頭圖標生成密鑰對。你將需要上面的公鑰來在你的手機和路由器之間創建一個對等點。在 「Addresses」 欄位中,分配你將用於通過虛擬專用網路訪問電話的 IP 地址。我將使用 10.0.0.2/24
。在 「Listen port」 中,輸入埠;我將再次使用默認埠。

保存配置。
要向配置中添加對等點,請選擇 「Add peer」。在 「Public key」 欄位中,輸入路由器的 Wireguard 公鑰。在 「Endpoint」 欄位中,輸入路由器的公共 IP 地址和埠,以冒號分隔,例如 12.34.56.78:51820
。在 「Allowed IP」 欄位中,輸入要通過 Wireguard 介面訪問的 IP 地址。 (你可以輸入路由器的虛擬專用網路介面 IP 地址和 LAN 介面地址。)IP 地址必須用逗號分隔。你還可以定義子網的大小。

保存配置。
配置中還剩下最後一步:在路由器上添加一個對等點。
在路由器上添加一個對等點
導航到 「Network → Interfaces」 並選擇你的 Wireguard 介面。轉到 「Peers」 選項卡並選擇 「Add peer」。在 「Description」 欄位中,輸入對等方的名稱。在 「Public Key」 欄位中輸入手機的 Wireguard 介面公鑰,在 「Allowed IPs」 欄位中輸入手機的 Wireguard 介面 IP 地址。選中 「Route Allowed IPs」 複選框。

保存配置並重啟介面。
測試配置
在手機上打開 Web 瀏覽器。在 URL 欄中,輸入 IP 地址 10.0.0.1
或 192.168.1.1
。你應該能夠訪問路由器的網站。

你自己的虛擬專用網路
這些天有很多虛擬專用網路服務商在做廣告,但是擁有和控制自己的基礎設施還有很多話要說,尤其是當該基礎設施僅用於提高安全性時。無需依賴其他人為你提供安全的數據連接。使用 OpenWrt 和 Wireguard,你可以擁有自己的開源虛擬專用網路解決方案。
via: https://opensource.com/article/21/5/open-source-private-vpn
作者:Lukas Janėnas 選題:lujun9972 譯者:stevenzdg988 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive