小米路由R1D使用Caddy搭建WebDAV服務並反向代理局域網內的其他HTTP服務


我的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的硬盤資料了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM