用小米路由搭建外网可访问的个人网站
家里的小米路由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访问了。
大功告成!