Linux中國

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

通過計算機網路從一個地方到另一個地方可能是一件棘手的事情。除了知道正確的地址和打開正確的埠之外,還有安全問題。 對於 Linux,SSH 是一種流行的默認方式,雖然你可以使用 SSH 做很多事情,但它仍然「只是」一個安全外殼(實際上,這就是 SSH 的含義)。用於加密流量的更廣泛的協議是「虛擬專用網路」,它創建了一個獨特的兩點之間的虛擬的專用網路。有了它,你可以登錄到另一個網路上的計算機並使用它的所有服務(文件共享、印表機等等),就像你坐在同一個房間里一樣,並且全部的數據都是從點到點加密的。

通常,為了使虛擬專用網路連接成為可能,進入每個網路的網關必須接受虛擬專用網路流量,並且必須偵聽目標網路上的某些計算機的虛擬專用網路流量。然而,你可以運行自己的帶有虛擬專用網路伺服器的路由器固件,使你能夠連接到目標網路,而無需擔心轉發埠或考慮內部拓撲。我最喜歡的固件是 OpenWrt,在本文中我將演示如何設置它,以及如何啟用虛擬專用網路。

什麼是 OpenWrt

OpenWrt 是一個使用 Linux 面向嵌入式設備的開源項目。它已經存在超過 15 年,擁有龐大而活躍的社區。

使用 OpenWrt 的方法有很多種,但它的主要用途是在路由器中。它提供了一個具有包管理功能的完全可寫的文件系統,並且由於它是開源的,你可以查看和修改代碼並為生態系統做出貢獻。如果你想對路由器進行更多控制,這就是你想要使用的系統。

OpenWrt 支持很多路由器,包括 思科華碩MikroTikTeltonika NetworksD-LinkTP-linkBuffaloUbiquiti 等知名品牌和 許多其他品牌

Wireguard 是什麼?

Wireguard 是開源的虛擬專用網路軟體,它比 OpenVPN 等其他選項更快、更簡單且更安全。它使用最先進的密碼學:用於對稱加密的 ChaCha20;用於密鑰協商的 Curve 25519(使用橢圓曲線),和用於散列的 BLAKE2。這些演算法的設計方式在嵌入式系統上是高效的。Wireguard 也可用於各種操作系統 平台

先決條件

對於這個項目,你需要:

  • Teltonika RUT955 或支持 OpenWrt 的其他路由器
  • 一個公網 IP 地址,用於從外部網路連接到虛擬專用網路
  • 一部安卓手機

安裝 OpenWrt

首先,下載路由器的 OpenWrt 鏡像。使用 固件選擇器 檢查 OpenWrt 是否支持你的路由器並下載固件。輸入你的路由器型號,將顯示選項:

![OpenWRT 固件選擇器](/data/attachment/album/202107/01/101639f1ozjz8o1pcpo8he.png "OpenWRT firmware selector")

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

下載出廠鏡像。

![下載出廠鏡像](/data/attachment/album/202107/01/101639y2hjuk3k7jtwjgy5.png "Downloading the Factory Image")

許多路由器允許你從 Web 界面刷入未經授權的固件,但 Teltonika Networks 不允許。要將 OpenWrt 固件刷入這樣的路由器,你需要使用引導載入器。為此,請按照下列步驟操作:

  1. 拔掉路由器的電源線。
  2. 按住重置按鈕。
  3. 插入路由器的電源線。
  4. 插入電源線後,繼續按住重置按鈕 5 到 8 秒。
  5. 將計算機的 IP 地址設置為 192.168.1.15,將網路掩碼設置為 255.255.255.0
  6. 使用乙太網電纜通過 LAN 埠連接路由器和計算機。
  7. 打開網頁瀏覽器並輸入 192.168.1.1:/index.html
  8. 上傳並刷寫固件。

刷機過程可能佔用三分鐘。之後,你應該可以通過在瀏覽器中輸入 192.168.1.1 來訪問路由器的 Web 界面。 默認情況下沒有設置密碼

![OpenWrt 授權](/data/attachment/album/202107/01/101640upwczwpczwc5cpp8.png "OpenWrt authorization")

配置網路連接

網路連接是必要條件。如果你的 Internet 服務提供商(ISP) 使用 DHCP 自動分配你的 IP 地址,你只需將乙太網電纜插入路由器的 WAN 埠。

如果你需要手動分配 IP 地址,導航至 「Network → Interfaces」。選擇 「Edit」 編輯你的 WAN 介面。從 「Protocol」 欄位中,選擇 「Static address」,然後選擇 「Switch protocol」。

![手動分配 IP 地址](/data/attachment/album/202107/01/101640xgk7ggzhgolskkos.png "Assigning IP address manually")

在 「IPv4 address」 欄位中,輸入你的路由器地址。設置 「IPv4 netmask」 以匹配你的網路子網;輸入你將用於連接到網路的 「IPv4 gateway」 地址; 並在 「Use custom DNS servers」 欄位中輸入 DNS 伺服器的地址。保存配置。

就是這樣!你已成功配置 WAN 介面以獲得網路連接。

安裝必要的包

默認情況下,該固件不包含很多包,但 OpenWrt 有一個包管理器和可選安裝的軟體包。導航到 「System → Software」 並通過選擇 「Update list...」 更新你的包管理器。

![OpenWrt 包管理器](/data/attachment/album/202107/01/101640c0szpe6xax3cfltd.png "OpenWrt package manager")

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

![luci-app-wireguard 包](/data/attachment/album/202107/01/101641zjx09njjg50jze60.png "luci-app-wireguard package")

該軟體包包括一個用於配置 Wireguard 的 Web 界面,並安裝 Wireguard 所必需的所有依賴項。

如果你在安裝 Wireguard 軟體包之前收到一個軟體包丟失的警告並且在存儲庫中找不到,請忽略它並繼續。

接下來,找到並安裝名為 「luci-app-ttyd」 的包。這將用於稍後訪問終端。

安裝這些軟體包後,重新啟動路由器以使更改生效。

配置 Wireguard 介面

接下來,創建 Wireguard 介面。導航到 「Network → Interfaces」 並選擇左下角的 「Add new interface...」。在彈出窗口中,輸入你想要的介面名稱,從下拉列表中選擇 「WireguardVPN」,然後選擇右下角的 「Create interface」。

![創建 Wireguard 介面](/data/attachment/album/202107/01/101641l5enwic0uie5siwa.png "Creating Wireguard interface")

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

![創建 Wireguard 介面](/data/attachment/album/202107/01/101641yuoc3z0leh3tlzl0.png "Creating Wireguard interface")

保存配置並重啟介面。

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

![Wireguard 公鑰](/data/attachment/album/202107/01/101642l1r88obvu8iliaij.png "Wireguard public key")

配置防火牆

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

![Wireguard 防火牆設置](/data/attachment/album/202107/01/101642an0o6jj6f0xws0ja.png "Wireguard firewall setup")

保存配置。

手機上配置 Wireguard

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

![在 Android 上設置虛擬專用網路介面](/data/attachment/album/202107/01/101642vixlctrpr5lfitl6.png "Setting up V interface on Android")

保存配置。

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

![在 Android 上添加虛擬專用網路對等點](/data/attachment/album/202107/01/101643k4k1kc4hidveckky.png "Adding a V peer on an Android")

保存配置。

配置中還剩下最後一步:在路由器上添加一個對等點。

在路由器上添加一個對等點

導航到 「Network → Interfaces」 並選擇你的 Wireguard 介面。轉到 「Peers」 選項卡並選擇 「Add peer」。在 「Description」 欄位中,輸入對等方的名稱。在 「Public Key」 欄位中輸入手機的 Wireguard 介面公鑰,在 「Allowed IPs」 欄位中輸入手機的 Wireguard 介面 IP 地址。選中 「Route Allowed IPs」 複選框。

![在路由器上添加一個對等點](/data/attachment/album/202107/01/101643cq08xcxcfimfw2fi.png "Adding a peer on the router")

保存配置並重啟介面。

測試配置

在手機上打開 Web 瀏覽器。在 URL 欄中,輸入 IP 地址 10.0.0.1192.168.1.1。你應該能夠訪問路由器的網站。

![從 Android 登錄 虛擬專用網路](/data/attachment/album/202107/01/101643c0fvs88k32uei3e2.png "Logging into the V from Android")

你自己的虛擬專用網路

這些天有很多虛擬專用網路服務商在做廣告,但是擁有和控制自己的基礎設施還有很多話要說,尤其是當該基礎設施僅用於提高安全性時。無需依賴其他人為你提供安全的數據連接。使用 OpenWrt 和 Wireguard,你可以擁有自己的開源虛擬專用網路解決方案。

via: https://opensource.com/article/21/5/open-source-private-vpn

作者:Lukas Janėnas 選題:lujun9972 譯者:stevenzdg988 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國