移动神器RAX3000M路由器不刷固件变身家庭云之四:解锁LuCI全能后台,构建轻量级Web服务
1. 解锁RAX3000M的隐藏技能重新启用LuCI管理界面很多朋友可能不知道移动RAX3000M路由器其实内置了OpenWRT系统只是出厂时隐藏了LuCI这个强大的管理界面。我第一次发现这个秘密时感觉就像找到了游戏里的隐藏关卡。LuCI界面比原厂固件提供的功能丰富得多可以精细控制防火墙规则、查看实时流量统计、管理软件包等等。要重新启用这个界面我们需要通过SSH连接到路由器。这里有个小技巧如果你还没开启SSH可以先用原厂管理界面开启开发者模式具体位置在系统设置的高级选项里。连接成功后我们需要修改uhttpd的配置文件这个服务负责路由器的网页界面。vi /etc/config/uhttpd找到config uhttpd main这一段把option enabled 0改成option enabled 1。这个数字开关控制着LuCI界面是否启用。同时我建议把默认端口从80改成8080这样可以避免和可能存在的其他服务冲突。修改后的配置应该是这样的config uhttpd main option enabled 1 list listen_http 0.0.0.0:8080 list listen_http [::]:8080 list listen_https 0.0.0.0:8443 list listen_https [::]:8443保存修改后别忘了重启uhttpd服务让配置生效service uhttpd restart现在打开浏览器访问http://192.168.10.1:8080记得把IP换成你路由器的实际地址熟悉的LuCI界面就出现了。我第一次看到这个界面时感觉像是打开了新世界的大门 - 原来路由器还能做这么多事情2. 安全配置让外网也能访问你的管理界面既然我们已经启用了LuCI界面下一步就是考虑如何安全地从外网访问它。这里要特别注意安全问题因为直接把管理界面暴露在公网上是有风险的。我刚开始玩这个的时候就差点因为配置不当导致路由器被入侵。首先我们需要在防火墙开放8080端口。OpenWRT使用uci命令来配置防火墙这个命令比直接编辑配置文件更安全因为它会自动检查语法uci add firewall rule uci set firewall.rule[-1].nameAccept_ssh8080 uci set firewall.rule[-1].srcwan uci set firewall.rule[-1].dest_port8080 uci set firewall.rule[-1].prototcp uci set firewall.rule[-1].targetACCEPT uci commit firewall service firewall restart如果你有动态域名服务比如花生壳现在就可以通过你的域名:8080从外网访问了。但这样还不够安全我有两个建议第一把默认的8080端口改成其他不常见的端口第二设置强密码。在LuCI界面的系统-管理权里可以修改登录密码。还有个更安全的做法是只允许特定IP访问管理界面。在防火墙规则里加上这几行uci set firewall.rule[-1].src_ip你的固定IP uci set firewall.rule[-1].familyipv4这样就只有指定IP能访问管理界面了。我在公司电脑上设置了固定IP这样就能安全地从办公室管理家里的路由器了。3. 网站服务与管理界面共存方案现在我们的路由器既能当家庭云又能通过LuCI管理接下来我想分享如何在这台设备上搭建网站服务。这个过程中我踩过不少坑特别是关于目录结构的配置希望能帮你避开这些陷阱。首先我们要创建一个新的网站根目录。我习惯放在/w3下这样和默认的/www区分开mkdir /w3 cd /w3 ln -s /www admin ln -s /www/luci-static .然后修改uhttpd配置把网站根目录指向/w3option home /w3 option cgi_prefix /admin/cgi-bin list lua_prefix /admin/cgi-bin/luci/usr/lib/lua/luci/sgi/uhttpd.lua这样配置后LuCI管理界面会被移动到/admin子目录下网站根目录就空出来可以放你自己的内容了。我第一次尝试时犯了个错误忘了创建符号链接结果管理界面完全打不开了不得不通过SSH重新配置。为了让网站更专业我建议至少安装PHP支持opkg update opkg install php7 php7-cgi然后在uhttpd配置里启用PHPoption interpreter_pre .php/usr/bin/php-cgi重启服务后你就能运行PHP网站了。我在这里放了一个简单的家庭相册程序家人在外网也能看到家里的照片。4. 高级隐藏技巧保护你的管理界面把管理界面放在/admin虽然方便但安全性还不够。我后来发现了一个更好的方法使用随机字符串作为目录名。这个方法是我从一个安全论坛上学到的效果非常好。首先生成一个随机字符串作为目录名RANDOM_DIR$(cat /dev/urandom | tr -dc a-zA-Z0-9 | fold -w 8 | head -n 1) mkdir /w3/$RANDOM_DIR ln -s /www/cgi-bin /w3/$RANDOM_DIR/cgi-bin ln -s /www/luci-static /w3/$RANDOM_DIR/luci-static然后修改所有配置文件中的/admin为/$RANDOM_DIR。这样除非别人知道这个随机字符串否则很难找到你的管理界面入口。我每隔几个月就会更换一次这个目录名增加安全性。另一个重要技巧是禁用目录列表。默认情况下如果访问一个不存在的路径uhttpd会显示目录结构这会泄露信息。解决方法是在/w3下创建一个index.htmlecho !DOCTYPE htmlhtmlheadtitleWelcome/title/headbodyNothing to see here/body/html /w3/index.html最后我强烈建议启用HTTPS。虽然自签名证书会有警告但比明文传输密码强多了。在LuCI界面的系统-软件包里安装luci-sslopkg install luci-ssl安装完成后在uhttpd配置里启用HTTPS并使用8443端口因为很多ISP会屏蔽443list listen_https 0.0.0.0:8443 list listen_https [::]:8443 option cert /etc/uhttpd.crt option key /etc/uhttpd.key现在你的管理界面就同时具备了隐蔽性和加密传输安全性大大提升。我在实际使用中发现这套配置既满足了功能需求又不会给路由器带来太大负担RAX3000M完全能够胜任。