用小米路由搭建外网可访问的个人网站

时间:2024-02-17 16:56:36

家里的小米路由R1D用了近一年,只是做一个普通的路由器使用,实在太浪费了。最近学习移动端编程,感觉和PC时代最大的不同就在于移动端产品更重云和端的配合。于是就花了一晚上捣鼓捣鼓,在小米路由上搭建了一套可从外网访问的web 服务,以便手机上做的玩意儿可以随时随地获得私有云的支持。把搭建路径备案记录下来:

  • 第一步、先把小米路由刷到开发版ROM。

后面ssh登录需要开发版ROM支持。注意:先保存路由器上的所有数据!!!比如宽带账号、密码信息,这些信息一般在装完宽带后就很少用到了,一定确保先找到这些数据,以便刷机完成后可以正常设置路由;刷机会导致路由上所有信息包括硬盘数据丢失,所以要做好数据备份。

去miwifi.com,点击“官网” - 下载 - ROM - 小米路由器(R1D) ROM开发版 - 下载

· 将下载好的ROM包放到U盘的根目录下,并命名为“miwifi.bin”;

· 开路由器的电源后,将U盘插入路由器的USB接口,按住reset,接通电源,待路由器指示灯变为黄灯闪烁时,松开reset

· 大约3-5分钟后,指示灯变成黄色常亮状态时可以拔掉U盘,此时刷机已经完成正在重启,稍等片刻路由器指示灯变蓝就可以正常使用了。

 

  • 第二步、开启SSH工具

还是刚刚的网站,点击“开放” - 开启SSH工具 - 下载工具包,按照网页指导和第一步类似地,将SSH工具刷入路由器。重启路由后即可登录,在PC上输入命令ssh root@192.168.31.1,输入密码即可看到如下信息:

palancedeMacBook-Pro:~ palance$ ssh root@192.168.31.1
The authenticity of host \'192.168.31.1 (192.168.31.1)\' can\'t be established.
RSA key fingerprint is SHA256:FEpnjo9ynkUI4LWu3ckjcEce7HCJoybOJqANYh6+hSM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added \'192.168.31.1\' (RSA) to the list of known hosts.
root@192.168.31.1\'s password:


BusyBox v1.19.4 (2015-12-11 15:58:27 CST) built-in shell (ash)
Enter \'help\' for a list of built-in commands.

 -----------------------------------------------------
    Welcome to XiaoQiang!
 -----------------------------------------------------
root@XiaoQiang:~#

搞定!

 

  • 第三步、安装llmp

下载llmp_install.bin(百度一下,这玩意很容易找到),然后执行

chmod +x /userdisk/data/llmp_install.bin&&/userdisk/data/llmp_install.bin in

看到

Install: unzip data llmp.tgz ok

Install: config llmp start ...

Install: config llmp complete

llmp start ! The wwwroot is in The shared disk !

Install: everything is ok, Try to open the url http://192.168.31.1:8080

搞定!访问http://192.168.31.1:8080即可看到欢迎页。llmp系统运行在沙盒之中,该沙盒ssh端口为3333,该沙盒下用户有root、www,密码都是admin,建议先修改密码。

ssh -p 3333 root@192.168.31.1

即可进入。www用户不能直接修改自己的密码,需要先root登录,再执行passwd www修改其密码。

mysql的root用户默认密码也为admin,假设要修改为ABCD,可执行:

mysqladmin -u root -p password ABCD

然后会提示输入原先的密码。

网站根目录在小米共享盘wwwroot下,ssh到路由上对应的位置在/userdisk/data/wwwroot。

好了,以上步骤就完成了在小米路由上搭建web服务,到目前为止,可以在局域网内正常访问了。目前从外网还访问不了,原因是被防火墙拦了,下一步我们添加防火墙例外,就可以做到从外网用ip访问该web 服务。需要说明的是,我发现联通运营商屏蔽了8080端口的访问,所以得先把web服务的端口改一下,比如改成8023。SSH到路由,

vi /userdisk/llmp/etc/lighttpd/lighttpd.conf,找到这一行,并把8080改为8023:

## bind to port (default: 80)
server.port = 8080    #把8080修改为8023

保存后执行如下命令,重启llmp服务:

sh /userdisk/llmp/manager/llmp_fix.sh

 

  • 第四步、添加防火墙例外

vi /etc/config/firewall,在文件最后添加如下内容:

config rule \'httpdwan\'
option src \'wan\'
option dest_port \'8023\'
option proto \'tcp\'
option target \'ACCEPT\'
option name \'\'\\'\'httpd wan accept tcp port 8023\'\\'\'\'

保存后执行如下命令,重启防火墙策略:

/etc/init.d/firewall restart

OK,现在从外网通过IP就能访问该web服务了,去小米路由的管理后台找到自己的外网IP:

然后在外网访问该IP,http://222.128.173.113:8023,如下:

可以小鸡冻一把了~~

 

  • 第五步、域名解析

最后一步就是最好能通过域名直接访问,一般家里的电脑都是动态IP,路由每次重启获得的IP是不同的,因此需要动态地把域名和这个IP实时绑定。在小米论坛上有教程讲怎么映射到花生壳的二级域名,这种域名是免费的,而且小米路由的后台管理支持该域名的动态解析DDNS。不过我手上有一个从阿里云购买的一级域名,在小米路由上又不能直接支持DDNS,所以还需要额外做一些事。大致分两个步骤:一、申请一个花生壳的二级域名,并动态解析到小米路由;二、将阿里云的一级域名再解析到花生壳的二级域名。

首先,去花生壳申请一个二级域名,这是免费的,如下:

然后在路由的管理后台中找到 高级设置 - DDNS - 添加服务,如下,输入花生壳登录的用户名密码以及刚刚申请的域名作为主机名称:

然后从外网访问http://palance.gicp.net:8023就能访问到自己的web服务啦~

最后,需要去阿里云上添加一条域名解析规则。去到阿里云的管理控制台,选择“域名”服务,找到自己的域名(我的域名是www.binglen.com),点击“解析”,添加如下记录:

 

注意,主要填写记录类型为CNAME,主机记录为www,记录值为在花生壳的二级域名palance.gicp.net,这样就可以通过www.binglen.com:8023访问小米路由的web服务。

还可以再添加一条:记录类型为CNAME,主机记录为@,记录值为palance.gicp.net,这样就可以通过binglen.com:8023访问了。

大功告成!