想入手NAS很久了,元旦時看了看羣暉,還是一如既往的貴。想想還是覺得腎疼,還是想辦法把家裏的小米路由器折騰折騰,之前買了個硬盤版本(1T硬盤)。所以決定先獲取一下路由器的高級管理權限。
對了,我的路由器長這個樣子:
公網訪問效果
小米路由安裝好frp之後,配置相應的端口映射,就可以外網訪問了。
FTP服務測試
使用FileZilla的被動模式進行測試:
iPhone上也能訪問,槓槓的:
博客效果測試
外網實測,可以登錄admin賬號來創建文章:
在開始配置之前,首先獲取路由器的高級管理權限:
開啓SSH工具
登錄如下地址,下載開啓SSH工具需要的bin文件。
http://d.miwifi.com/rom/ssh
工具包使用方法:
請將下載的工具包bin文件複製到U盤(FAT/FAT32格式)的根目錄下,保證文件名爲miwifi_ssh.bin;
斷開小米路由器的電源,將U盤插入USB接口;
按住reset按鈕之後重新接入電源,指示燈變爲黃色閃爍狀態即可鬆開reset鍵;
等待3-5秒後安裝完成之後,小米路由器會自動重啓,等待片刻之後就可以登錄了)
# ssh [email protected]
-----------------------------------------------------
Welcome to XiaoQiang!
-----------------------------------------------------
$$$$$$\ $$$$$$$\ $$$$$$$$\ $$\ $$\ $$$$$$\ $$\ $$\
$$ __$$\ $$ __$$\ $$ _____| $$ | $$ | $$ __$$\ $$ | $$ |
$$ / $$ |$$ | $$ |$$ | $$ | $$ | $$ / $$ |$$ |$$ /
$$$$$$$$ |$$$$$$$ |$$$$$\ $$ | $$ | $$ | $$ |$$$$$ /
$$ __$$ |$$ __$$< $$ __| $$ | $$ | $$ | $$ |$$ $$<
$$ | $$ |$$ | $$ |$$ | $$ | $$ | $$ | $$ |$$ |\$$\
$$ | $$ |$$ | $$ |$$$$$$$$\ $$$$$$$$$ | $$$$$$ |$$ | \$$\
\__| \__|\__| \__|\________| \_________/ \______/ \__| \__|
root@XiaoQiang:~#
下載frp對應版本:https://github.com/fatedier/frp/releases/tag/v0.24.1
因爲我硬盤上有數據,官方也有說明刷開發版本會清空硬盤數據。
下載小米路由各個版本ROM地址如下:
http://miwifi.com/miwifi_download.html
安裝Vsftpd
下載小米路由器VSFTP安裝工具 綠色版:http://www.downza.cn/soft/269898.html
注:此工具要求路由器網關IP爲192.168.31.1。
登錄路由管理後臺,進入”常用設置“->“局域網設置”->"設置局域網IP地址"爲 192.168.31.1,否則會安裝失敗。
如上步驟操作完畢之後,局域網就可以訪問了。
打通ftp公網訪問
內網穿透
如果自己有購買雲主機的話,藉助frp的內網穿透能力,可以將路由器的端口映射到公網上去。操作看官方文檔介紹:https://github.com/fatedier/frp
https://github.com/fatedier/frp
先在雲主機上搭建frps服務端,然後在本地配置端口映射。當然雲主機上安全組上將對應的端口都放開。
查看小米路由的CPU:
root@XiaoQiang:~# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 0 (v7l)
...
下載找到對應的frp版本到路由器上:
https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_linux_arm.tar.gz
解壓後修改配置文件:
root@XiaoQiang:~# vim /usr/local/frp_0.24.1_linux_arm/frpc.ini
[common]
server_addr = **.**.**.** # 此處填寫雲主機IP,或者關聯到主機的域名
server_port = 7000
### SMB使用137、138 udp端口,139,445 tcp端口,感興趣的可以配置
[MI-Route-llmp-8095] # 自定義llmp端口爲8095(經測試,默認的8080無法使用,重啓防火牆時發現8080被其他功能使用了,沒有具體再追下去分析。防火牆開通端口例外,見後面防火牆部分說明)
type = tcp
local_ip = 127.0.0.1
local_port = 8095
remote_port = 22026
[MI-Route-ftp-21]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port = 10021
[range:Mi-Route-ftp-30000-30005] # 公網訪問需要設置vsftp的passive port區間,映射之後,公網就可以訪問了。
type = tcp
local_ip = 127.0.0.1
local_port = 30000-30005
remote_port = 30000-30005
啓動frp客戶端:
root@XiaoQiang:/usr/local/frp_0.24.1_linux_arm# ./frpc -c ./frpc.ini
# 編寫後臺啓動腳本
# cat /usr/local/frp_0.24.1_linux_arm/start.sh
nohup /usr/local/frp_0.24.1_linux_arm/frpc -c /usr/local/frp_0.24.1_linux_arm/frpc.ini &
# 配置開機啓動腳本
## 添加開機啓動 putty或winscp修改/etc/rc.local文件,在exit 0之前添加一行
cat /etc/rc.local
# 加入啓動命令
/usr/local/frp_0.24.1_linux_arm/start.sh
題外話:
藉助小米路由的端口轉發功能,也可以通過公網訪問內網PC的一些服務。
以常見的情況爲例,買個最低配置的ECS linux版本雲主機,本地搭建Tomat服務,再買個域名。就可以低成本發佈自己開發的一些Demo項目哈。
最近有面試一些同學,都說有做過一些項目,但是如果能把自己平時學習時的一些東西展示出來。效果會更好一些。
配置ftp被動模式,以便公網訪問
如果要公網訪問,則可以配置被動模式,關於被動模式的一些資料,可以見我之前的一篇文章《FTP客戶端對接開發旅記》:
https://mp.weixin.qq.com/s/Gs5vBTZu0e3xGGXqEoATVg
修改vsftp配置文件,開啓被動訪問模式
# vim /etc/vsftpd.conf
# Add by bianxh:20200105
#guest_enable=YES
#guest_username=bianxh
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30005
小米路由搭建簡易博客
安裝llmp
參考:http://www.miui.com/thread-1842334-1-1.html
安裝llmp到小米路由的硬盤上:
chmod +x /userdisk/data/download/llmp_install.bin&&/userdisk/data/download/llmp_install.bin in
修改默認端口:
# vi /userdisk/llmp/etc/lighttpd/lighttpd.conf
## bind to port (default: 80)
#server.port = 8080
server.port=8095
重啓llmp服務:
# sh /userdisk/llmp/manager/start_llmp.sh
添加防火牆例外:
# vim /etc/config/firewall
config rule
option name 'Allow-bianxh-Config'
option src 'wan'
option dest_port '139 445 8080 8095'
option proto 'tcp'
option family 'ipv4'
option target 'ACCEPT'
# /etc/init.d/firewall restart # 重啓防火牆
如果需要修復:SSH到路由器22端口,執行sh /userdisk/llmp/manager/llmp_fix.sh
本地訪問:
公網訪問:
修改mysql密碼
1.網站目錄在小米路由器硬盤的根目錄下的wwwroot
文件夾
2.默認數據庫用戶名 root,密碼 admin
3.系統運行於沙盒系統中,沙盒SSH端口爲3333,用戶有root、www、admin,密碼默認都爲admin
4.修改數據庫密碼,newpasswd爲新密碼,請自行替換mysqladmin -u root -p password newpasswd
執行命令後要求輸入舊密碼(admin)即可。
登錄小米路由器(默認密碼admin):
ssh -p 3333 [email protected]
## 修改MySQL數據庫密碼
~ # mysqladmin -u root -p password newpasswd
## 創建blog數據庫,blog是創建的數據庫名稱,請自行替換。要求輸入密碼,請輸入修改之後的密碼
mysqladmin -u root -p create blog
安裝typecho
http://typecho.org/
下載後解壓到 /userdisk/data/wwwroot,
效果圖如下:
下一步配置一些參數:
數據庫適配器: MySQL原生函數適配器
數據庫地址: localhost
數據庫端口: 3306
數據庫用戶名: root
數據庫密碼: admin
數據庫名: blog
數據庫前綴: typecho_
創建您的管理員帳號
網站地址:http://192.168.31.1:8095
用戶名:admin
登錄密碼:admin
配置成功截圖:
只能訪問主頁,f12可以看出是端口的原因。https://segmentfault.com/q/1010000008401554
修改/userdisk/data/wwwroot/var/Typecho/Request.php文件218行開始
public static function getUrlPrefix()
{
if (empty(self::$_urlPrefix)) {
self::$_urlPrefix = (self::isSecure() ? 'https' : 'http')
. '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
// . (in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']);
;
}
return self::$_urlPrefix;
}
參考文檔:https://sixu.life/xiaomi-router-r2d-llmp-typecho.html/comment-page-1
其他收穫
一些命令
查看3306端口占用:
netstat -anp |grep 3306
查看進程佔用什麼端口:
netstat -nap | grep 進程pid
OpenWrt軟件源
執行如下安裝命令不生效,於是尋找軟件包源:
opkg update
opkg install vsftpd
軟件包安裝源:
root@XiaoQiang:/usr/local# cat /etc/opkg.conf
src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09/brcm4709/R2D/packages
# 下面是尋找的3個其他源,經測試也失敗。
src/gz chaos_calmer_base http://downloads.openwrt.org/chaos_calmer/15.05/bcm53xx/generic/packages/base
src/gz chaos_calmer_packages http://downloads.openwrt.org/chaos_calmer/15.05/bcm53xx/generic/packages/packages
src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages
防火牆設置
修改規則配置,放開部分端口
# vim /etc/config/firewall
添加內容:
config rule
option name 'Allow-bianxh-Config'
option src 'wan'
option dest_port '139 445 8080 8095' ## 自定義一些例外端口
option proto 'tcp'
option family 'ipv4'
option target 'ACCEPT'
讓規則生效:
# /etc/init.d/firewall restart
疑問
SMB共享失敗
小米路由smb配置文件如下,但是經測試,這個文件每次修改後,重啓路由後會恢復。smb使用139和445端口,但是這個端口通過frp映射出去後,始終無法訪問。
root@XiaoQiang:~# cat /etc/samba/smb.conf
異地訪問測試總是會被拒絕,防火牆已經配置過了:
$ smbclient -p 22022 //test.bianxh.top/XiaoMi
Unable to initialize messaging context
protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED
工具包下載
本文涉及的所有工具包下載:
鏈接:https://pan.baidu.com/s/115ZQwKEvJvgCZHsTytR0BA
提取碼:adtw