OpenWrt:一個開源的家用路由器固件替代品
如果你在家里閱讀這篇文章,你可能是用一個 LTE/5G/DSL/WIFI 路由器聯(lián)網(wǎng)的。這種設(shè)備通常負(fù)責(zé)在你的本地設(shè)備(智能手機(jī)、PC、電視等)之間路由數(shù)據(jù)包,并通過內(nèi)置的調(diào)制解調(diào)器提供對 WWW 的訪問。你家里的路由器很可能有一個基于網(wǎng)頁的界面,用于配置該設(shè)備。這種界面往往過于簡單,因?yàn)樗鼈兪菫槠胀ㄓ脩糁谱鞯摹?/p>
如果你想要更多的配置選項,但又不想花錢買一個專業(yè)的設(shè)備,你應(yīng)該看看其他的固件,如 ??OpenWrt??。
OpenWrt 的特點(diǎn)
OpenWrt 是一個基于 Linux 的、針對嵌入式網(wǎng)絡(luò)設(shè)備的開源操作系統(tǒng)。它主要用于替代各種家用路由器上的原始固件。OpenWrt 具備一個好的路由器應(yīng)該具備的所有有用功能,如 DNS 服務(wù)器(??dnsmasq??),WiFi 接入點(diǎn)(AP)和客戶端功能,用于調(diào)制解調(diào)器功能的 PPP 協(xié)議,而且,與標(biāo)準(zhǔn)固件不同,這一切都是可以完全配置的。
LuCI 網(wǎng)頁界面
OpenWrt 可以通過命令行(SSH)或使用 GUI 配置界面(??LuCI??)進(jìn)行遠(yuǎn)程配置。LuCI 是一個用 ??Lua?? 編寫的輕量級、可擴(kuò)展的網(wǎng)頁 GUI,它可以精確地配置你的設(shè)備。除了配置,LuCI 還提供了很多額外的信息,如實(shí)時圖表、系統(tǒng)日志和網(wǎng)絡(luò)診斷。
LuCI 網(wǎng)頁界面
LuCI 有一些可選的擴(kuò)展,以增加更多的配置選擇。
可寫文件系統(tǒng)
它的另一個亮點(diǎn)是可寫文件系統(tǒng)。原有的固件通常是只讀的,而 OpenWrt 配備了一個可寫的文件系統(tǒng),這要?dú)w功于一個巧妙的解決方案,它將 OverlayFS 與 SquashFS/JFFS2 文件系統(tǒng)相結(jié)合,允許安裝軟件包以增強(qiáng)功能。在 ??OpenWrt 文檔?? 中可以找到更多關(guān)于文件系統(tǒng)架構(gòu)的信息。
擴(kuò)展
OpenWrt 有一個相關(guān)的軟件包管理器,??opkg??,它允許安裝額外的服務(wù),比如 FTP 服務(wù)器、DLNA 媒體服務(wù)器、OpenVPN 服務(wù)器、用于實(shí)現(xiàn)文件共享的 Samba 服務(wù)器、控制電話的 Asterisk 等等。當(dāng)然,有些擴(kuò)展需要適當(dāng)?shù)牡讓佑布Y源。
動機(jī)
你可能想知道為什么要冒著對你的設(shè)備造成不可修復(fù)的損害和失去保修的風(fēng)險,而嘗試更換路由器制造商的固件。如果你的設(shè)備以你想要的方式工作,那么你可能不應(yīng)該。永遠(yuǎn)不要碰一個正在運(yùn)行的系統(tǒng)!但是,如果你想增強(qiáng)功能,或者你的設(shè)備缺乏配置選項,那么你應(yīng)該看看 OpenWrt 是否可以成為一種補(bǔ)救措施。
在我的例子中,我想要一個旅行用的路由器,當(dāng)我在露營地的時候,我可以把它放在一個合適的位置,以便讓其它設(shè)備與這個本地 WiFi 接入點(diǎn)(AP)保持良好連接。該路由器將作為一個普通的客戶端連接到互聯(lián)網(wǎng),并廣播它的 WiFi 接入點(diǎn)讓我的其它設(shè)備連接到它。這樣我就可以配置我的所有設(shè)備與這個路由器的接入點(diǎn)連接,當(dāng)我在其他地方時我只需要改變路由器的客戶端連接。此外,在一些露營地,你只能得到一個單一設(shè)備的訪問代碼,我可以通過這種設(shè)置來加強(qiáng)。
作為我的旅行路由器,我選擇 TP-Link TL-WR902AC 的原因如下:
- 很小
- 兩根 WiFi 天線
- 5V 電源(USB)
- 低功耗
- 成本效益高(你以 30 美元左右的價格得到它)
為了了解它的尺寸,這里是它在樹莓派 4 旁邊的樣子:
TP-Link TL-WR902AC 在樹莓派旁邊
盡管這個路由器帶來了我所需要的所有硬件功能,但我很快發(fā)現(xiàn),默認(rèn)的固件并不能讓我按照我想要的方式配置它。該路由器主要是作為一個 WiFi 接入點(diǎn),它可以復(fù)制現(xiàn)有的 WiFi 網(wǎng)絡(luò)或通過板載以太網(wǎng)接口將自己連接到網(wǎng)絡(luò)。默認(rèn)的固件對于這些使用情況是非常有限的。
(LCTT 譯注:此型號國內(nèi)沒有銷售,它的特點(diǎn)之一是可以通過插入 3G/4G USB 網(wǎng)卡連接到互聯(lián)網(wǎng),但由于它不在國內(nèi)銷售,所以沒有支持哪種國內(nèi) 3G/4G USB 網(wǎng)卡的說明,我 ??查下來?? 似乎華為的 E3372h-320 是可用的。有相關(guān)實(shí)踐的同學(xué)可以分享一下經(jīng)驗(yàn)。
國內(nèi)銷售的其它類似型號只能通過以太網(wǎng)口或 WiFi 連接到互聯(lián)網(wǎng),這種情況下,如果只能通過 3G/4G 連接互聯(lián)網(wǎng),那需要另外買一個隨身 WiFi /移動路由器。)
幸運(yùn)的是,該路由器能夠運(yùn)行 OpenWrt,所以我決定用它來替換原來的固件。
安裝
當(dāng)你的 LTE/5G/DSL/WiFi 路由器符合 ??最低要求?? 時,很有可能在它上面運(yùn)行 OpenWrt。下一步,你要查看 ??硬件表??,檢查你的設(shè)備是否被列為兼容,以及你要選擇哪個固件包。OpenWrt 的 ??TP-Link TL-WR902AC?? 的頁面還包括安裝說明,其中描述了如何刷入內(nèi)部存儲器。
刷入固件的過程在不同的設(shè)備之間可能會有所不同,所以我就不詳細(xì)介紹了。簡而言之,我必須通過將設(shè)備連接到一個具有特定 IP 地址的網(wǎng)絡(luò)接口上的 TFTP 服務(wù)器,重命名 OpenWrt 固件文件,然后按復(fù)位按鈕啟動設(shè)備。
配置
一旦刷入成功,你的設(shè)備現(xiàn)在應(yīng)該用新的固件啟動了?,F(xiàn)在啟動可能需要更長的時間,因?yàn)榕c默認(rèn)固件相比,OpenWrt 具有更多的功能。
為了開始配置,需要在你的 PC 和路由器之間建立一個直接的以太網(wǎng)連接,OpenWrt 在此充當(dāng)了一個 DHCP 服務(wù)器,并將你的 PC 的以太網(wǎng)適配器配置為一個 DHCP 客戶端。
在 Fedora Linux 上,要激活你的網(wǎng)絡(luò)適配器的 DHCP 客戶端模式,首先你必須通過運(yùn)行找出連接的 UUID:
選擇你要修改的連接的 UUID,然后運(yùn)行:
你可以在 ??Fedora 聯(lián)網(wǎng)維基?? 中找到更多關(guān)于這些命令的信息。
在你連接到路由器后,打開一個網(wǎng)頁瀏覽器并導(dǎo)航到 ??http://openwrt/???,F(xiàn)在你應(yīng)該看到 LuCI 的登錄管理器:
LuCI 登錄
使用 ??root?
? 作為用戶名,并將密碼留空。
配置 WiFi 和路由
要配置你的 WiFi 天線,請點(diǎn)擊 “網(wǎng)絡(luò)Network” 菜單并選擇 “無線Wireless”。
LuCI 無線配置
在我的設(shè)備上,上面的天線 ??radio0?
? 工作在 2.4GHz 模式,并連接到名為 ??MOBILE-INTERNET?
? 的本地接入點(diǎn)。下面的天線 ??radio1?
? 工作在 5GHz,有一個相關(guān)的接入點(diǎn),SSID 為 ??OpenWrt_AV?
?。通過點(diǎn)擊 “編輯Edit” 按鈕,你可以打開設(shè)備配置,以決定該設(shè)備屬于 LAN 還是 WWAN 網(wǎng)絡(luò)。在我的例子中,接入點(diǎn) ??OpenWrt_AV?
? 屬于 LAN 網(wǎng)絡(luò),客戶端連接 ??MOBILE-INTERNET?
? 屬于 WWAN 網(wǎng)絡(luò)。
LuCI 配置屏幕
配置的網(wǎng)絡(luò)在 “接口Interfaces” 面板的 “網(wǎng)絡(luò)Network” 下列出。
設(shè)備列表
為了獲得我想要的功能,網(wǎng)絡(luò)流量必須在 LAN 和 WWAN 網(wǎng)絡(luò)之間進(jìn)行路由。路由可以在 “網(wǎng)絡(luò)Network” 面板的 “防火墻Firewall” 部分進(jìn)行配置。我沒有在這里做任何改動,因?yàn)樵谀J(rèn)情況下,網(wǎng)絡(luò)之間的流量是被路由的,而傳入的數(shù)據(jù)包(從 WWAN 到 LAN)必須通過防火墻。
防火墻設(shè)置
因此,你需要知道的是一個接口是屬于 LAN 還是 (W)WAN。這個概念使它相對容易配置,特別是對初學(xué)者來說。你可以在 ??OpenWrt 聯(lián)網(wǎng)基礎(chǔ)?? 指南中找到更多信息。
專屬門戶
公共 WiFi 接入點(diǎn)通常受到 ??專屬門戶?? 的保護(hù),你必須輸入一個訪問代碼或類似的代碼。通常情況下,當(dāng)你第一次連接到接入點(diǎn)并試圖打開一個任意的網(wǎng)頁時,這種門戶就會出現(xiàn)。這種機(jī)制是由接入點(diǎn)的 DNS 服務(wù)器實(shí)現(xiàn)的。
默認(rèn)情況下,OpenWrt 激活了一個安全功能,可以防止連接的客戶端受到 ??DNS 重新綁定攻擊??。OpenWrt 的重新綁定保護(hù)也阻止了專屬門戶網(wǎng)站被轉(zhuǎn)發(fā)到客戶端,所以你必須禁用重新綁定保護(hù),以便你可以到達(dá)專屬門戶網(wǎng)站。這個選項在 “網(wǎng)絡(luò)Network” 菜單的 “DHCP 和 DNSDHCP and DNS” 面板中。
嘗試 OpenWrt
由于升級到 OpenWrt,我得到了一個基于商品硬件的靈活的旅行路由器。OpenWrt 使你的路由器具有完全的可配置性和可擴(kuò)展性,而且由于其制作精良的網(wǎng)頁 GUI,它也適合初學(xué)者使用。甚至有一些 ??精選路由器?? 在出廠時已經(jīng)安裝了 OpenWrt。你還可以用很多 ??可用的軟件包?? 來增強(qiáng)你的路由器的功能。例如,我正在使用 ??vsftp?? FTP 服務(wù)器,在連接的 U 盤上托管一些電影和電視劇。看看該 ??項目主頁??,在那里你可以找到許多切換到 OpenWrt 的理由。
圖片來自: Stephan Avenwedde,??CC BY-SA 4.0??