Nano Pi R2S 上手,小小升級一下家庭網絡環境

最近想要解放裝置們的 CPU,讓科學上網的體驗變好一點點,順手實現一些雜七雜八的功能滿足折騰欲。在學校裏我有一台 OpenWRT 的普通路由器,用起來非常不錯,OpenWRT 基本可以實現所有我想要的功能,但畢竟是普通路由器,CPU 效能太弱,所以我的需求就定在了一款 CPU 效能更強的,能執行 OpenWRT 的 ARM 軟路由,於是 Nano Pi R2S 進入了我的視野。

要是軟路由有排名,那 R2S 絕對是經典中的經典。小到無論如何都可以塞進弱電箱的體積,足夠強大的效能和上手的容易程度都是軟路由裏數一數二的。雖然價格可能是49入國軍,就不放出來了,但是隻要我對這玩意有需求,那也不是不能接受。

上手

好了,現在我們搞到了這 R2S,簡單來上個手:

R2S本體

R2S網口側

R2S的USB2.0介面和Reset插口

R2S 外觀非常簡潔,沒有多餘的 IO,雖然原本不是作為軟路由設計,但在設計上卻給人一種天生為軟路由而生之感:一個 WAN 一個 LAN 兩個 RJ45 網口,一個 Micro SD 卡插槽,一個 USB 2.0 介面,完美覆蓋軟路由幾乎所有使用場景。

R2S 原本是作為邊緣伺服器設計,被我們硬生生的玩成了軟路由。

一體成型的金屬外殼,非常有高階感,很有工業風,手感不錯。由於 R2S 挑卡,挑電源(看到後面你就知道了)在購買機器時我直接買了已經經過測試的 Micro SD 卡和電源組合套餐,理論上來説,我不會遇到 SD 卡、電源與機器不相容的問題。

刷個 OpenWRT 跑起來!

先來看看這玩意兒的硬件規格:

  • CPU: Rockchip RK3328, Quad-core Cortex-A53
  • DDR4 RAM: 1GB
  • Network:
    • 10/100/1000M乙太網口 x 1
    • USB3.0轉10/100/1000M乙太網口 x 1
  • USB2.0 Host: Type-A x1
  • MicroSD Slot x 1
  • MicroUSB: 供電和Slave功能
  • Debug Serial Port: 3.3V TTL電平,3Pin 2.54mm間距排針
  • PC Size: 55.6 x 52mm
  • Power Supply: DC 5V/2A
  • Temperature measuring range: 0℃ to 80℃
  • OS/Software: U-boot,Ubuntu-Core,OpenWrt

這個硬件規格,裝 Ubuntu 當伺服器還是免了,但是跑個 OpenWRT 當路由器使綽綽有餘。

由於使用 Micro SD 卡作為啓動介質,R2S 的刷機非常容易:取出 SD 卡,用讀卡器接上電腦,把映象燒寫進 SD 卡,再把 SD 卡裝回 R2S,完成。對於用 Ultra ISO 刻過 Windows 系統盤的老油條來説全都是熟悉的操作,完全沒有任何難度可言,即使是新手也能很輕易的學會。讓我們快進到登入 OpenWRT 的後台:

R2S刷入OpenWRT後的後台介面

(此處應有Nice)

狗都不用 R2S 官方編譯的 OpenWRT,不僅沒有中文翻譯,沒有好看的主題,各種外掛還需要自行安裝。懶得在官方韌體上瞎折騰則可以直接選擇別人打包好的韌體。我使用了 BigDongDong 打包的帶 Docker 韌體,能滿足我的所有需求。

讓這玩意加入我的家庭網絡

要想讓 R2S 加入我的家庭網絡,有兩種大致的方案:第一種,也是最直截了當的辦法,即直接拿 R2S 當主路由使用;第二種方法稍微複雜,用 R2S 當旁路由,將原來主路由的閘道器指向旁路由。這兩種方案各有優缺點,將 R2S 當主路由配置簡單,只要你想,只需要將 R2S 接入光貓和原來的路由器之間,然後啓動路由器,什麼都不需要配置,直接開始上網。代價是這會讓網絡架構多一重出故障的機率,雖然這個機率很小。將 R2S 用作旁路由配置稍微複雜,但能實現某些裝置直接走主路由,其餘裝置走旁路由的效果,缺點就是某些只有作為主路由才能實現的功能(比如你要建站而你原來的主路由不支援埠轉發)無法實現。

我無法接受讓 R2S 作為旁路由的行為,想到資料包在兩個路由由之間來回竄個兩次才能被髮出去情景,我還是選擇了第一種方案——我不需要那麼穩定的網絡,大不了多重啓幾次。於是這就是新的網絡拓補圖:

加入R2S後的網絡拓補

圖片懶得自己畫所以來源於網絡,無線路由器那裏那個 WAN 請自行腦補成 LAN。

為了讓 R2S 能儘可能的與我的裝置互動(比如控制某個裝置是否啓用科學上網),以及儘可能的減少 NAT 和網段的套娃,我們需要對原來的路由器進行一些設定,首先檢視路由器是否有類似 AP模式(無線接入點模式)的功能,如果有那麼直接啓用這個模式就行。如果我的路由器有這個選項那我就不需要寫下面這個部分了,只可惜,這 TP-LINK 電子垃圾並沒有。

手動把原來的路由器設定成交換機

我不得不手動設定這個路由器,不過還好這並不是一件難事:首先把原本接在路由器 WAN 口的網線插到 LAN 口裏,你沒看錯,LAN 口。然後登入原路由器的後台,關掉原路由器的 DHCP 伺服器,開啓原路由器的 LAN 口設定把原路由器的 LAN 口 IP 設定成與 R2S同一網段下的一個IP,例如:我的 R2S 的 IP 是 192.168.2.1 ,所以我將原路由器的 LAN 口 IP 設定成 192.168.2.2 。設定好以後重啓路由器,所有裝置就和 R2S 同一個網段了,在 R2S 的後台也可以看到這些裝置。這些操作的本質是把路由器變成一個帶無線功能的交換機。

在TP-LINK路由器的後台關閉路由器的DHCP伺服器

將路由器變成交換機後OpenWRT的後台可以看到所有裝置

至此,基礎的網絡配置已經全部完成了,本來就很亂的弱電箱更亂了

終於可以正式開始折騰了

現在折騰的基礎已經有了,那就開始折騰吧。

Passwall 科學上網

其實原本想用 Clash,不過 Clash 有多吃資源上網一搜就知道。

關於 Passwall 怎麼使用網上一搜一大把,這裏我直接寫我的用法:

  • 匯入機場的訂閲開啓自動更新訂閲,每天一更新
  • 選擇一個位於香港的節點作為主節點
  • 開啓自動切換,設定新加坡和美國的節點為 Fallback 節點(故障轉移)
  • 開啓 ChinaDns-NG 過濾被污染的 DNS 結果

最後把之前所有裝置上設定的 DoH 和 DoT 取消,讓他們的 DNS 伺服器直接指向 R2S,萬事大吉,所有裝置都可以科學上網了。出於強迫症我將家用攝像頭排除在代理列表外,搞定。

青龍面板

既然這韌體自帶 Docker,那總得用起來吧?Docker 能幹嘛?青龍面板安排。操作其實也很簡單:把青龍面板的映象拉取到 SD 卡上,然後部署啓動容器啓動就行。

另外需要額外安裝一些依賴,例如 Python 的 requests 庫,Node.js 的 base64 庫等,這裏我隨意貼一份依賴列表,可以自行取用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Node.js 下的依賴
crypto-js
prettytable
dotenv
jsdom
date-fns
tough-cookie
tslib
ws@7.4.3
ts-md5
jsdom -g
jieba
fs
form-data
json5
global-agent
png-js
@types/node
require
typescript
js-base64
axios
moment
# Python3 下的依賴
requests
canvas
ping3
jieba
PyExecJS
aiohttp

至於其他依賴基本可以看指令碼執行的錯誤日誌對症下藥地安裝,這裏就不貼出來了。

那麼現在青龍面板有了,拿他幹什麼呢?

充滿任務的青龍面板定時任務介面

青龍面板刷京豆

目前只是拿它跑跑指令碼拿京豆,佛系看到什麼功能就加上,雖然用的是家用 IP,被風控的機率比較低,但我還是儘量不多開指令碼,且不説會不會被風控,畢竟這東西還是主路由,總不能一天到晚太佔效能導致我的上網體驗變差吧?如果真是這樣那就捨本逐末了。

至於指令碼從哪裏來,可以自行在 Github 上搜尋依賴庫拉庫安裝,説不定以後還要去 Gitee 上再找找,只能説,但願 Github 不要被完全阻斷導致一部分大佬往 Gitee 上跑。這裏貼一個我用的庫

https://github.com/okyyds/yydspure/tree/master

直接用定時任務拉庫就行。

1
ql repo https://github.com/okyyds/yydspure.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "master"

穩定性、效果和問題

為了穩定,暫時就折騰這麼多了。

那麼穩定性怎麼樣?目前來看很好,沒有遇到網上的各種燒壞,重啓之類的問題,設定 Crontab 每週重啓一次,非常穩定,這裏有一個坑點: R2S 使用 Type-C 介面供電,卻不支援 PD 協議。並且,雖然官方的技術規格里只需要 5V2A 的電源,但實際上需要儘量選擇高於這個規格的電源,比如我的電源是 5V3A 的非 PD 協議電源,這就導致 R2S 的配套電源選擇範圍很窄,儘量選擇店家 R2S 套餐裏配好的電源。以下是一些網友的情況:

什麼值得買裏燒壞的R2S和不穩定的R2S

前面也提到了 R2S 挑卡的問題,出於一些原因,R2S 與某些SD卡的相容性欠佳,可以去 R2S 官方 Wiki 上找找相容的 SD 卡列表。

效果如何?不需要多説,因為家裏的寬頻只有 100 兆,任何一個軟路由都可以輕鬆跑滿。因為我的機場遮蔽了意義不大的測速,晚高峯(大概是晚高峯,週六下午六點半) Youtube 的話可以輕鬆跑到 12 萬。

晚高峯Youtube可以跑到12萬

非晚高峯速度可到26萬

這個速度和機場有比較大的關係,不過,只要5萬以上,4k 就能隨便拖着看,再往上意義不大。再就是青龍面板的效果,前面大家也都看到了。

那麼問題?其實問題主要集中在 IPV6 上,換上 R2S 後,哪怕我將所有 IPV6 相關的服務全都設成中繼模式也沒有辦法正常使用 IPV6,而原來的路由器只要設定成橋模式即可,這個問題暫時沒有找到解決方案。

最後

總體上,R2S 達到了我的預期,基本滿足了我的需求,是一件我相對滿意的產品。折騰樂趣無窮,但切莫上頭,軟路由這種東西,搞清自己的需求,不要忘記折騰原本的目的,夠用就好,否則就是一個痛苦的無底洞。至於這個尚未解決的 IPV6 問題,佛系解決,實在不行看看能不能用 IPV6 NAT。