我的R1D是14年買的,原裝的硬盤已經不能用了,換了一塊從筆記本上退役下來的500G硬盤后繼續愉快的使用了……
當初買這款路由器的原因之一是看中了它的內置硬盤,可以用來備份手機相冊、存儲智能攝像機錄像、迅雷下載等輕NAS的功能。以前一直是在手機上用小米WiFi查看路由器中的硬盤資料,最近在外面用APP下載文件總是失敗,可能是小米的中轉服務器不給流量了,總之是不好用了,就想着自己可不可以搭建一個文件管理服務,可以在外網上傳下載甚至直接看硬盤存放的視頻。
一、安裝配置Caddy
之前在Padavan固件中用過“文件管理”的功能,是通過Caddy來部署的,感覺挺好用的,那就在R1D上也部署一下吧~
首先開啟SSH,去官網http://d.miwifi.com/rom/ssh按照教程操作就可以了
1.查看CPU信息
SSH登陸R1D,查一下CPU信息
cat /proc/cpuinfo
或者用以下命令查看系統架構
uname -a
查到是armv7處理器架構
可能是由於小米路由器內核的原因,使用Caddy官網“Linux arm 7”平台的二進制文件有問題,經測試“Linux arm 5”的二進制文件可以正常運行。
2.下載包含WebDAV插件的Caddy
那么我們就到Caddy官網下載包含WebDAV插件的二進制單文件,打開https://caddyserver.com/download,“Platform: ”選“Linux arm 5”,在下面找到包含WebDAV插件的PACKAGE勾選,再點擊右上角的“Download”
下載得到一個名為“caddy_linux_arm5_custom”的文件
3.部署配置Caddy並配置反向代理
在R1D中新建一個目錄
mkdir /userdisk/caddy
使用WinSCP的上傳功能或SecureCRT的rz命令將此文件上傳至“/userdisk/caddy”目錄中
修改caddy_linux_arm5_custom名稱為caddy
cd /userdisk/caddy mv caddy_linux_arm5_custom caddy
增加執行權限
chmod +x caddy
生成密碼(此處設置一個123456的密碼)
./caddy hash-password --plaintext 123456 JDJhJDE0JFhpQlFyTmJ5bGxwNDRsOExZQmZvVk9yWVFDTi9GclFoRjZ0bnZ3aTNZZXpiYzNkdThub25p
復制上面得到的一長串加密密碼備用
在當前目錄(/userdisk/caddy)創建一個名為Caddyfile的配置文件
vim Caddyfile
添加以下內容(按自己需求將開放的端口號、開放的訪問文件目錄、域名和內網HTTP服務地址改為自己的)
{ order webdav before file_server } # 此處以開放5005端口為例,可以自行修改 :5005 { # 設置/userdisk/data為可以被訪問的目錄,可自行修改為想要訪問的目錄 root * /userdisk/data encode gzip # 生成123456(此處明文密碼自己設置)的密碼 caddy hash-password --plaintext 123456 # 下面的username為用戶名(可自行更改),后面的長字符串為使用上面命令生成的密碼 basicauth { username JDJhJDE0JFhpQlFyTmJ5bGxwNDRsOExZQmZvVk9yWVFDTi9GclFoRjZ0bnZ3aTNZZXpiYzNkdThub25p } route { rewrite /webdav /webdav/ webdav /webdav/* { # 使用WebDAV訪問路徑的前綴 prefix /webdav } # HTTP文件服務,可以在瀏覽器中查看下載文件 file_server browse } } # 代理本機路由器Web頁面 # ly.xxxxxx.noip.cn是你注冊域名xxxxxx.noip.cn的子域名,因為每步DDNS啟用了泛域名,前面的子域(如ly)隨便起,只要不和其他子域重復即可 http://ly.xxxxxx.noip.cn:5005 { # localhost:80是本機Web頁面訪問地址 reverse_proxy localhost:80 { header_up Host {http.reverse_proxy.upstream.hostport} } } # 代理局域網中其他設備的服務 http://fw.xxxxxx.noip.cn:5005 { # http://192.168.128.180:8123為局域網內可訪問的HTTP服務地址 reverse_proxy http://192.168.128.180:8123 { header_up Host {http.reverse_proxy.upstream.hostport} } }
保存退出
以上配置就是運行了WebDAV和file_server服務,並使用Caddy代理了局域網中的其他HTTP服務。
4.前台啟動Caddy
在當前目錄嘗試啟動
./caddy run
5.內網訪問HTTP文件服務和WebDAV
(1)訪問HTTP文件服務
在瀏覽器地址欄輸入http://192.168.31.1:5005,用戶名和密碼為前面設置的username和123456,打開后效果如下
(2)訪問WebDAV服務
Win10添加WebDAV,“映射網絡驅動器”或者“添加一個網絡位置”都可以,此處以“添加一個網絡位置”為例。
打開“此電腦”,右鍵單擊空白處,選擇“添加一個網絡位置”,點擊兩次“下一步”后,輸入http://192.168.31.1:5005/webdav
點擊“下一步”,輸入之前用戶名和密碼后再“下一步”后點擊“完成”,這樣就可以在“Windows資源管理器”中訪問R1D硬盤文件了。
6.后台啟動Caddy
沒有問題的話可以在當前目錄后台啟動caddy服務
./caddy start
查看caddy服務進程
7.配置開機啟動Caddy
把WebDAV服務配置為開機后台啟動
vim /etc/rc.local
在exit 0上面添加以下內容:
cd /userdisk/caddy
./caddy start
這樣WebDAV的服務已經部署好了,重啟路由器后也會自己啟動。
二、使R1D中的文件能夠在外網訪問
但是我們為了方便不在家的時候訪問,需要開啟對應的外網端口,而且路由的IP地址在重新撥號后會變化,還要配置動態域名服務。
1.R1D獲取公網IPv6地址
我家用的是移動大內網寬帶,沒有公網IPv4地址,好在現在可以獲取到IPv6地址(前提是在光貓中設置好支持IPv6),那就可以使用支持IPv6的DDNS來解析了。
R1D默認是不支持IPv6的,下面我們來修改配置使其可以獲取到IPv6地址(此處以光貓橋接模式,R1D撥號為例),還是在SSH中操作
vim /etc/config/ipv6
修改為以下內容:
config ipv6 'settings' list if_on 'wan' option enabled '1' list if_on 'ipv6' option enabled '1'
保存退出
重新撥號后應該就可以獲取到IPv6地址了(下圖中2409開頭就是公網IPv6地址)
我們使用br-lan這個網絡接口的IPv6地址
2.配置動態域名服務
到http://www.meibu.com/這個網站注冊申請一個域名(如:xxxxxx.noip.cn)
SSH中新建一個目錄
mkdir /userdisk/meibu_ddns
下載文件meibu_ddns.sh
將第35行中xxxxxx.noip.cn和123456改為你自己申請的域名和密碼
將修改后的腳本上傳到/userdisk/meibu_ddns目錄中
增加腳本執行權限
cd /userdisk/meibu_ddns chmod +x meibu_ddns.sh
執行腳本
./meibu_ddns.sh
在當前目錄(/userdisk/meibu_ddns)會生成ip.txt文件,記錄的是br-lan網絡接口的IPv6地址
輸入以下命令(注意將xxxxxx.noip.cn改為自己申請的域名)查看解析到的IP地址
nslookup xxxxxx.noip.cn 8.8.8.8
解析出來的地址和br-lan網絡接口的IPv6地址一致則說明腳本執行成功
將此腳本添加到定時任務中
crontab -e
加入以下內容
*/1 * * * * /opt/bin/sh /userdisk/meibu_ddns/meibu_ddns.sh
保存退出
這樣每隔一分鍾就會執行一次腳本,查看IP地址是否變化,有變化再去更新動態域名IP地址
3.開啟外網訪問端口並配置開機自動開放端口
現在只剩下開啟外網端口了
在終端執行
ip6tables -I INPUT -p tcp --dport 5005 -j ACCEPT ip6tables -I OUTPUT -p tcp --sport 5005 -j ACCEPT
這樣就對外網放開了IPv6的5005端口
現在配置一下開機執行上面這兩條規則
vim /etc/rc.local
在exit 0上面添加以下內容
ip6tables -I INPUT -p tcp --dport 5005 -j ACCEPT ip6tables -I OUTPUT -p tcp --sport 5005 -j ACCEPT
到此就實現了開機自動開放端口
4.在外網訪問R1D文件
瀏覽器使用域名+端口就可以登陸訪問文件服務了
手機可以使用“ES文件瀏覽器”添加WebDAV
這樣即便不在家里,只要有網絡就可以用電腦或手機訪問R1D的硬盤資料了。