小米路由硬盘版搭建ftp服务和博客
想入手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 aaa@qq.com
-----------------------------------------------------
Welcome to XiaoQiang!
-----------------------------------------------------
$$$$$$\ $$$$$$$\ $$$$$$$$\ $$\ $$\ $$$$$$\ $$\ $$\
$$ __$$\ $$ __$$\ $$ _____| $$ | $$ | $$ __$$\ $$ | $$ |
$$ / $$ |$$ | $$ |$$ | $$ | $$ | $$ / $$ |$$ |$$ /
$$$$$$$$ |$$$$$$$ |$$$$$\ $$ | $$ | $$ | $$ |$$$$$ /
$$ __$$ |$$ __$$< $$ __| $$ | $$ | $$ | $$ |$$ $$<
$$ | $$ |$$ | $$ |$$ | $$ | $$ | $$ | $$ |$$ |\$$\
$$ | $$ |$$ | $$ |$$$$$$$$\ $$$$$$$$$ | $$$$$$ |$$ | \$$\
\__| \__|\__| \__|\________| \_________/ \______/ \__| \__|
aaa@qq.com:~#
下载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:
aaa@qq.com:~# 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
解压后修改配置文件:
aaa@qq.com:~# 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客户端:
aaa@qq.com:/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 aaa@qq.com
## 修改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
软件包安装源:
aaa@qq.com:/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映射出去后,始终无法访问。
aaa@qq.com:~# 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
上一篇: 系统登录/注册模块(Android app)的开发
下一篇: python解释器怎么运行
推荐阅读