緣起#
~ 家裡裝了台式機不用也是閒著,想遠程訪問分享文件跑一些程序之類,其實最根本的原因就是 xray 需要客戶端安每個手機都要安裝 app 才能用
所以很繁瑣,想著能不能把準備一台設備然後在上面跑代理,然後其他的客戶端就能直接配置地址,config.json 統一管理,剛開始用的是手機 app 開啟允許局域網訪問但是這樣手機要全天開機,而且延遲好像也比較高,也就是所有的請求走手機,然後手機進行分流繞了一大圈,
然後了解到了 Openwrt
可以直接在上面跑程序,xray 又是 golang 編寫的 可以直接編譯到嵌入式上運行!🐓 nice!
準備材料#
- 小米 4A 路由器 (千兆版 V1)
- ssh 破解工具 用最新版直接一把過
- Openwrt 固件
- 參考資料
操作步驟#
先把 openwrt 固件上傳到 tmp 下,刷完之後等待重啟即可
cd /tmp
mtd -e OS1 -r write openwrt-21.02.3-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin OS1
注意事項#
- 千萬不要刷 breed (不死鳥) 這裡面參數和小米 4A 固件根本不一致,刷入 breed 之後會導致刷進去的固件無限重啟,直接使用 mtd 命令刷入即可,想要恢復官方的固件使用官方的恢復工具直接就恢復了,很簡單
- 如果刷入了 breed, 使用 breed 刷入導致無限重啟,開機的時候長按 rest 按鈕 可以通過 ssh 連接到 breed 然後在 breed 下也能使用 mtd 刷入 Openwrt 固件,最開始的時候不知道,以為變磚了拼夕夕買了個土豪金 ch341 編程器 夾住 flash 上直接刷的
- 開啟端口轉發之後會有很多的國外 ip 嘗試登錄,因為我的是讓光貓橋接,路由器撥號 ip 暴露在公網上面,就很煩,把相關的用不到的配置全都關掉,端口限制 mac 地址或者指定 ip 訪問,路由器配置禁用密碼登錄,開啟 ssh 密鑰登錄能預防很多的攻擊
公網訪問#
網站常用的 443 和 80 端口根本用不了,這兩個端口直接從運營商那邊攔截掉了
-
想要公網訪問怎麼操作?
一般來說普通人肯定是推薦 DDNS, 路由器內置的也有,比如花生殼 DDNS , 但是這個免費的 DDNS 域名非常長很難記住,所以我買一個好記的域名
-
DDNS 大致原理
因為使用路由器撥號是動態 IP, 當你重啟路由器後會重新撥號,這個時候就會變成一個新的 IP , 域名綁定了就會失效,DDNS 就是每間隔 10 分鐘或者 5 分鐘,檢查一下當前的 ip 和域名解析的 ip 是否對得上,對不上時執行重新解析,明白了這個原理就簡單了
寫個程序運行在路由器上面,設置開機啟動,每間隔 5 分鐘檢查一次,如果不同則調用解析接口更新下域名解析,(騰訊雲買的域名是支持的) -
訪問家裡的設備
通過端口轉發,比如 192.168.1.1:22 是樹莓派,然後可以綁定公網 domain.com:2222 通過路由器轉發到 192.168.1.1:22 就能直接訪問家裡的設備了,設備記得開啟防火牆,密碼設置難破解一些,openwrt 防火牆轉發那裡配置好一些安全限制,避免被攻擊
運行 xray#
~ 刷完之後肯定要運行 xray 了畢竟這個才是主要需求,然後想要通過 openwrt 官方的軟件安裝總是提示內存不足,很奇怪,一看我的路由器 運行內存有 128M 存儲只有 16M, 裝完 openwrt 之後就剩 8M 了,xray 即使使用 upx 壓縮之後還有將近 9M 根本放不下
還有一點。路由器的/tmp
其實就是內存的映射。這裡面的文件在設備重啟之後就會清空,雖然硬盤只有 16M 你在 tmp 下 放入 80M 的文件也沒問題無非是重啟後丟失,當然為了精簡節省內存能小一點自然最好
/overlay
這個目錄是持久存儲,路由器重啟也不會丟失,可以把 xray 放在這裡之後配置開機自啟動
- 精簡 xray-core 根據官方的 1.8.4 版本 把能刪的都刪了就保留基本功能 在 op 下使用
ls -lh
查看僅有 4.2M, 這個是 upx 之後的
之後在手機上 wifi 內直接配置手動代理,填上路由器的地址和 xray 對應的端口號就能訪問油管了