小米路由器开发版及配置-小米路由器开发版及配置参数
在千兆級別的無線路由器里,小米路由器3G的硬件配置是強于小米路由器4的。路由3G的RAM是256MB(而路由4是128MB),而且多一個USB3.0。 也許是因為不支持USB,路由4根本就不提供開發版了。所以路由3G是性價比和可玩性最高的。
為什么使用開發版ROM
小米路由器的Web管理界面很簡潔,基本只有核心功能(但對絕大多數用戶都是夠用的)。對于愛折騰的用戶,則略顯不足。比如我要加一個開機腳本,或者想在路由器上用tcpdump抓包,默認的ROM是不能實現的。
而開發版ROM可以ssh登錄路由器,就像進入一個小的Linux系統,可控程度不可同日而語。
當然,OpenWRT也是靈活強大的,在3G上也可以刷。不選擇它的原因一方面是官方的開發版已經足夠強大了,兩者是類似的(官方ROM本身也是改自OpenWRT);另一方面是官方ROM支持手機管理,多了一個選擇。比如有一次我的動態域名更新失敗,通過手機界面,遠程找到了路由器的IP。
下載開發版ROM
從小米官網(http://www1.miwifi.com/miwifi_download.html)下載開發版ROM。
開發版的版本似乎比穩定版要低,最后更新于2018年10月。
刷機
很多人都是通過U盤刷機,其實這并不是必須的。網頁的管理界面上就可以刷機。點右上角的“系統升級”,選擇下載的ROM,然后點“手動升級”即可。
獲取初始root密碼
下載開啟ssh的工具(https://d.miwifi.com/rom/ssh)。這個頁面同時也是獲取root密碼的界面。但前提條件是登錄小米賬號,并(通過手機客戶端“小米WiFi”)綁定/管理對應的路由器。
開啟ssh則需要USB的支持了。根據官方的說明,主要流程是:將miwifi_ssh.bin拷到U盤根目錄,關路由器插U盤,按reset鍵上電,黃燈閃爍后松reset。
開啟ssh完成,路由器重啟后,就可以用這個密碼登錄路由器了。
登錄后可以用passwd命令修改root的密碼。
用密鑰登錄
用ssh-copy-id建立密鑰的信任關系會失敗,可能是因為dropbear和openssh密鑰存儲的位置不同。所以需要手動加一下。
PC端運行
scp ~/.ssh/id_rsa.pub root@10.7.3.1:/etc/dropbear/authorized_keys
路由器上運行下面的命令重啟ssh服務。
/etc/init.d/dropbear restart
再重新登錄就可以了。
文件系統
登錄路由器后,先看看文件系統,以便合理使用。
可以看到:
- /extdisks/sda1 對應于USB存儲。因為我有NAS,再加上使用USB有可能影響2.4G WiFi,所以我并不打算使用路由器上的USB存儲。
- /tmp是內存虛擬的文件系統,所以里面的內容關機/重啟后會丟失;另外,/var是/tmp的符號鏈接,所以也不會永久保存。
- /etc, /data, /userdisk 是同一塊Flash,里面的內容會永久保存。結合目錄內容來看,/etc, /userdisk其實是/data的子目錄。
如保我們想保存永久性的log,就不能像普通Linux系統保存在/var/log里了,而/userdisk看起來是小米路由器App在用,我也不想動它,那么,保存在/data/usr/log可能是一個合理的選擇。
啟動腳本
/etc/rc.local是可以用的,所以可以在這里作為啟動腳本的入口。腳本本身可以保存在/etc目錄或/data/usr/bin目錄。
下面是我的/etc/rc.local。調用/data/usr/bin里的腳本是我加的。
# restore phy config
speed=$(uci -q get xiaoqiang.common.WAN_SPEED)
[ -n "$speed" ] && /usr/sbin/phyhelper swan "$speed"
/data/usr/bin/log-ip.sh
/data/usr/bin/ddns.sh
exit 0
log-ip.sh 用于記錄每次啟動拔號得到的IP地址,內容如下:
#!/bin/sh
logdir=/data/usr/log
test -d $logdir || mkdir -p $logdir || exit 1
addr=$(ip addr show pppoe-wan | grep -w inet | awk '{print $2;}')
echo "$(date '+%Y/%m/%d %a %H:%M:%S') - $addr" | tee -a $logdir/wanip.log
dnsmasq及本地名稱解析
dnsmasq是小型網絡的全家桶。它既是路由器的DHCP服務器,也可以用于本地域名解析,甚至還支持tftp。通過版本信息可以看到它具體支持/不支持哪些特性。
它不支持DNS安全擴展,暗示了它支持普通的DNS解析。我想用名稱來訪問局域網內的主機時,就需要用到本地域名服務器。
在有的路由器上,DHCP設定的名稱會自動用于DNS解析。比如,
- 把pc1的IP設定為10.9.8.11
- pc2的IP自動分配為10.9.8.102
在同一個網絡內,通過名字pc1即可以訪問10.9.8.11這臺主機,通名字pc2即可以訪問10.9.8.102這臺主機。
這個過程是可以(部分)自動化的。但小米路由器里沒有這么做。所以要找一個解決辦法。
dnsmasq的配置文件是/tmp/etc/dnsmasq.conf,位于/tmp目錄說明它是一個動態生成的文件,而配置文件內部也說明了這一點。
# auto-generated config file from /etc/config/dhcp
conf-dir=/tmp/etc/dnsmasq.d/
dhcp-authoritative
addn-hosts=/tmp/hosts
...
所以,源頭的配置文件是/etc/config/dhcp。我們可以通過修改這個文件,加入靜態地址配置(網頁配置界面上也會同步更新)。因為我需要把幾十條華碩路由器里的DHCP靜態配置重新設定到小米路由器中,于是用腳本做格式轉換,然后寫入這個文件。
從這個配置文件里還可以看到,/tmp/hosts內的主機名會用于域名解析。所以,解決辦法就是把需要解析的主機名及其IP地址加入這個目錄。類似于下面:
10.7.3.1 router
10.7.3.2 nas
10.7.3.3 nuc
10.7.3.4 kodi
10.7.3.6 3dprint
10.7.3.7 printer
10.7.3.8 radio
由于/tmp目錄下的內容不是永久保存的,所以需要將這個主機列表放在/data/usr/etc目錄,在啟動腳本里將其拷貝到/tmp/hosts目錄。
經過這翻折騰后,小米路由器3G就比較完美了。基本上超過我以前使用的千元級別的華碩路由器了。
總結
以上是生活随笔為你收集整理的小米路由器开发版及配置-小米路由器开发版及配置参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CUDA学习(六十三)
- 下一篇: 如何关闭 iOS 13 中的搜索建议