Linux中國

OpenWrt:一個開源的家用路由器固件替代品

OpenWrt 是一個基於 Linux 的開源操作系統,主要針對嵌入式網路設備。

如果你在家裡閱讀這篇文章,你可能是用一個 LTE/5G/DSL/WIFI 路由器聯網的。這種設備通常負責在你的本地設備(智能手機、PC、電視等)之間路由數據包,並通過內置的數據機提供對 WWW 的訪問。你家裡的路由器很可能有一個基於網頁的界面,用於配置該設備。這種界面往往過於簡單,因為它們是為普通用戶製作的。

如果你想要更多的配置選項,但又不想花錢買一個專業的設備,你應該看看其他的固件,如 OpenWrt

OpenWrt 的特點

OpenWrt 是一個基於 Linux 的、針對嵌入式網路設備的開源操作系統。它主要用於替代各種家用路由器上的原始固件。OpenWrt 具備一個好的路由器應該具備的所有有用功能,如 DNS 伺服器(dnsmasq),WiFi 接入點(AP)和客戶端功能,用於數據機功能的 PPP 協議,而且,與標準固件不同,這一切都是可以完全配置的。

LuCI 網頁界面

OpenWrt 可以通過命令行(SSH)或使用 GUI 配置界面(LuCI)進行遠程配置。LuCI 是一個用 Lua 編寫的輕量級、可擴展的網頁 GUI,它可以精確地配置你的設備。除了配置,LuCI 還提供了很多額外的信息,如實時圖表、系統日誌和網路診斷。

LuCI 網頁界面

LuCI 有一些可選的擴展,以增加更多的配置選擇。

可寫文件系統

它的另一個亮點是可寫文件系統。原有的固件通常是只讀的,而 OpenWrt 配備了一個可寫的文件系統,這要歸功於一個巧妙的解決方案,它將 OverlayFS 與 SquashFS/JFFS2 文件系統相結合,允許安裝軟體包以增強功能。在 OpenWrt 文檔 中可以找到更多關於文件系統架構的信息。

擴展

OpenWrt 有一個相關的軟體包管理器,opkg,它允許安裝額外的服務,比如 FTP 伺服器、DLNA 媒體伺服器、OpenVPN 伺服器、用於實現文件共享的 Samba 伺服器、控制電話的 Asterisk 等等。當然,有些擴展需要適當的底層硬體資源。

動機

你可能想知道為什麼要冒著對你的設備造成不可修復的損害和失去保修的風險,而嘗試更換路由器製造商的固件。如果你的設備以你想要的方式工作,那麼你可能不應該。永遠不要碰一個正在運行的系統!但是,如果你想增強功能,或者你的設備缺乏配置選項,那麼你應該看看 OpenWrt 是否可以成為一種補救措施。

在我的例子中,我想要一個旅行用的路由器,當我在露營地的時候,我可以把它放在一個合適的位置,以便讓其它設備與這個本地 WiFi 接入點(AP)保持良好連接。該路由器將作為一個普通的客戶端連接到互聯網,並廣播它的 WiFi 接入點讓我的其它設備連接到它。這樣我就可以配置我的所有設備與這個路由器的接入點連接,當我在其他地方時我只需要改變路由器的客戶端連接。此外,在一些露營地,你只能得到一個單一設備的訪問代碼,我可以通過這種設置來加強。

作為我的旅行路由器,我選擇 TP-Link TL-WR902AC 的原因如下:

  • 很小
  • 兩根 WiFi 天線
  • 5V 電源(USB)
  • 低功耗
  • 成本效益高(你以 30 美元左右的價格得到它)

為了了解它的尺寸,這裡是它在樹莓派 4 旁邊的樣子:

TP-Link TL-WR902AC 在樹莓派旁邊

儘管這個路由器帶來了我所需要的所有硬體功能,但我很快發現,默認的固件並不能讓我按照我想要的方式配置它。該路由器主要是作為一個 WiFi 接入點,它可以複製現有的 WiFi 網路或通過板載乙太網介面將自己連接到網路。默認的固件對於這些使用情況是非常有限的。

(LCTT 譯註:此型號國內沒有銷售,它的特點之一是可以通過插入 3G/4G USB 網卡連接到互聯網,但由於它不在國內銷售,所以沒有支持哪種國內 3G/4G USB 網卡的說明,我 查下來 似乎華為的 E3372h-320 是可用的。有相關實踐的同學可以分享一下經驗。

國內銷售的其它類似型號只能通過乙太網口或 WiFi 連接到互聯網,這種情況下,如果只能通過 3G/4G 連接互聯網,那需要另外買一個隨身 WiFi /移動路由器。)

幸運的是,該路由器能夠運行 OpenWrt,所以我決定用它來替換原來的固件。

安裝

當你的 LTE/5G/DSL/WiFi 路由器符合 最低要求 時,很有可能在它上面運行 OpenWrt。下一步,你要查看 硬體表,檢查你的設備是否被列為兼容,以及你要選擇哪個固件包。OpenWrt 的 TP-Link TL-WR902AC 的頁面還包括安裝說明,其中描述了如何刷入內部存儲器。

刷入固件的過程在不同的設備之間可能會有所不同,所以我就不詳細介紹了。簡而言之,我必須通過將設備連接到一個具有特定 IP 地址的網路介面上的 TFTP 伺服器,重命名 OpenWrt 固件文件,然後按複位按鈕啟動設備。

配置

一旦刷入成功,你的設備現在應該用新的固件啟動了。現在啟動可能需要更長的時間,因為與默認固件相比,OpenWrt 具有更多的功能。

為了開始配置,需要在你的 PC 和路由器之間建立一個直接的乙太網連接,OpenWrt 在此充當了一個 DHCP 伺服器,並將你的 PC 的乙太網適配器配置為一個 DHCP 客戶端。

在 Fedora Linux 上,要激活你的網路適配器的 DHCP 客戶端模式,首先你必須通過運行找出連接的 UUID:

$ nmcli connection show
NAME          UUID         TYPE      DEVICE 
Wired Conn 1  7a96b...27a  ethernet  ens33
virbr0        360a0...673  bridge   virbr0
testwifi      2e865...ee8  wifi     --
virbr0        bd487...227  bridge   --
Wired Conn 2  16b23...7ba  ethernet --

選擇你要修改的連接的 UUID,然後運行:

$ nmcli connection modify <UUID> ipv4.method auto

你可以在 Fedora 聯網維基 中找到更多關於這些命令的信息。

在你連接到路由器後,打開一個網頁瀏覽器並導航到 http://openwrt/。現在你應該看到 LuCI 的登錄管理器:

LuCI 登錄

使用 root 作為用戶名,並將密碼留空。

配置 WiFi 和路由

要配置你的 WiFi 天線,請點擊 「 網路 Network 」 菜單並選擇 「 無線 Wireless 」。

LuCI 無線配置

在我的設備上,上面的天線 radio0 工作在 2.4GHz 模式,並連接到名為 MOBILE-INTERNET 的本地接入點。下面的天線 radio1 工作在 5GHz,有一個相關的接入點,SSID 為 OpenWrt_AV。通過點擊 「 編輯 Edit 」 按鈕,你可以打開設備配置,以決定該設備屬於 LAN 還是 WWAN 網路。在我的例子中,接入點 OpenWrt_AV 屬於 LAN 網路,客戶端連接 MOBILE-INTERNET 屬於 WWAN 網路。

LuCI 配置屏幕

配置的網路在 「 介面 Interfaces 」 面板的 「 網路 Network 」 下列出。

設備列表

為了獲得我想要的功能,網路流量必須在 LAN 和 WWAN 網路之間進行路由。路由可以在 「 網路 Network 」 面板的 「 防火牆 Firewall 」 部分進行配置。我沒有在這裡做任何改動,因為在默認情況下,網路之間的流量是被路由的,而傳入的數據包(從 WWAN 到 LAN)必須通過防火牆。

防火牆設置

因此,你需要知道的是一個介面是屬於 LAN 還是 (W)WAN。這個概念使它相對容易配置,特別是對初學者來說。你可以在 OpenWrt 聯網基礎 指南中找到更多信息。

專屬門戶

公共 WiFi 接入點通常受到 專屬門戶 的保護,你必須輸入一個訪問代碼或類似的代碼。通常情況下,當你第一次連接到接入點並試圖打開一個任意的網頁時,這種門戶就會出現。這種機制是由接入點的 DNS 伺服器實現的。

默認情況下,OpenWrt 激活了一個安全功能,可以防止連接的客戶端受到 DNS 重新綁定攻擊。OpenWrt 的重新綁定保護也阻止了專屬門戶網站被轉發到客戶端,所以你必須禁用重新綁定保護,以便你可以到達專屬門戶網站。這個選項在 「 網路 Network 」 菜單的 「 DHCP 和 DNS DHCP and DNS 」 面板中。

嘗試 OpenWrt

由於升級到 OpenWrt,我得到了一個基於商品硬體的靈活的旅行路由器。OpenWrt 使你的路由器具有完全的可配置性和可擴展性,而且由於其製作精良的網頁 GUI,它也適合初學者使用。甚至有一些 精選路由器 在出廠時已經安裝了 OpenWrt。你還可以用很多 可用的軟體包 來增強你的路由器的功能。例如,我正在使用 vsftp FTP 伺服器,在連接的 U 盤上託管一些電影和電視劇。看看該 項目主頁,在那裡你可以找到許多切換到 OpenWrt 的理由。

圖片來自: Stephan Avenwedde,CC BY-SA 4.0

via: https://opensource.com/article/22/7/openwrt-open-source-firmware

作者:Stephan Avenwedde 選題:lkxed 譯者:wxy 校對: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中國