欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小米路由硬盘版搭建ftp服务和博客

程序员文章站 2022-03-24 15:27:37
...

想入手NAS很久了,元旦时看了看群晖,还是一如既往的贵。想想还是觉得肾疼,还是想办法把家里的小米路由器折腾折腾,之前买了个硬盘版本(1T硬盘)。所以决定先获取一下路由器的高级管理权限。

对了,我的路由器长这个样子:
小米路由硬盘版搭建ftp服务和博客

公网访问效果

小米路由安装好frp之后,配置相应的端口映射,就可以外网访问了。

FTP服务测试

使用FileZilla的被动模式进行测试:

小米路由硬盘版搭建ftp服务和博客
iPhone上也能访问,杠杠的:

小米路由硬盘版搭建ftp服务和博客

博客效果测试

外网实测,可以登录admin账号来创建文章:

小米路由硬盘版搭建ftp服务和博客


在开始配置之前,首先获取路由器的高级管理权限:

开启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

小米路由硬盘版搭建ftp服务和博客

注:此工具要求路由器网关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

本地访问:

小米路由硬盘版搭建ftp服务和博客

公网访问:

小米路由硬盘版搭建ftp服务和博客

修改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,

效果图如下:

小米路由硬盘版搭建ftp服务和博客

下一步配置一些参数:

数据库适配器: MySQL原生函数适配器
数据库地址: localhost
数据库端口: 3306
数据库用户名: root
数据库密码: admin
数据库名: blog
数据库前缀: typecho_

创建您的管理员帐号
网站地址:http://192.168.31.1:8095
用户名:admin
登录密码:admin

配置成功截图:

小米路由硬盘版搭建ftp服务和博客

只能访问主页,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

相关标签: 技术