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

发布于 2024-03-13 02:54:22 字数 12988 浏览 38 评论 0

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

对了,我的路由器长这个样子:
在这里插入图片描述

小米路由对应的是 OpenWRT 系统,是一个嵌入式的 Linux 发行版。

公网访问效果

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

FTP 服务测试

使用 FileZilla 的被动模式进行测试(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 root@192.168.31.1
 -----------------------------------------------------
       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 root@127.0.0.1
## 修改 MySQL 数据库密码
~ # mysqladmin -u root -p password newpasswd
## 创建 blog 数据库,blog 是创建的数据库名称,请自行替换。要求输入密码,请输入修改之后的密码
mysqladmin -u root -p create blog

# 登录数据库
~ # mysql -h 127.0.0.1 -uroot -padmin

安装 typecho

http://typecho.org/

下载后解压到 /userdisk/data/wwwroot,(最新的版本测试不通过),实测如下安装包可以用。

# typecho 下载 稳定版为 1.0 (14.10.10),并解压到 wwwroot 内
wget https://github.com/typecho/typecho/releases/download/v1.0-14.10.10-release/1.0.14.10.10.-release.tar.gz

解压后,访问效果图如下:

在这里插入图片描述

下一步配置一些参数:

数据库适配器: 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

最后,觉得每次都使用端口号比较麻烦的话,可以用 ngnix 进行处理。这个本篇就不提了。简单说下我的配置参数:

# cat /etc/nginx/nginx.conf
...
server {
    listen       80;
    server_name  mi.bianxh.top;
    location / {
        proxy_pass http://test.bianxh.top:22026/; # 22026 映射到 8095 端口
    }
}
...

修改首页地址

# 登录沙盒
ssh -p 3333 root@127.0.0.1
# 登录数据库
~ # mysql -h 127.0.0.1 -uroot -padmin
mysql> use blog;
mysql> show tables;
mysql> select * from typecho_options;
## 查看表结构
mysql> desc typecho_options;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| name  | varchar(32)      | NO   | PRI | NULL    |       |
| user  | int(10) unsigned | NO   | PRI | 0       |       |
| value | text             | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
## 查看表数据,找到首页地址设置
mysql> select * from typecho_options where name = 'siteUrl';
+---------+------+--------------------------+
| name    | user | value                    |
+---------+------+--------------------------+
| siteUrl |    0 | http://192.168.31.1:8095 |
+---------+------+--------------------------+
## 修改首页地址
mysql> update typecho_options set value = 'http://mi.bianxh.top' where name = 'siteUrl';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from typecho_options where name = 'siteUrl';
+---------+------+----------------------+
| name    | user | value                |
+---------+------+----------------------+
| siteUrl |    0 | http://mi.bianxh.top |
+---------+------+----------------------+

其他收获

一些命令

如果报错无法编辑文档,则重新挂载

mount -o remount rw /

查看 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

安装 Shadowsocks

https://github.com/monlor/MIXBOX

mixbox install shadowsocks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

呆橘

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文