OpenWRT

OpenWRT误删uhttpd服务配置导致LuCI管理页面无法访问问题

自己编译的OpenWRT固件带了uHTTPd的LuCI设置UI,在研究服务器映射时点了右上角的删除,并且应用了:

结果发现LuCI界面无法访问了,才意识到原来刚才删除的配置就是通过uhttpd支撑的LuCI管理页面的web服务器,重启了几次后发现路由器功能还是正常的,只是无法访问web管理,dropbear的ssh还是能正常连上的,本来都做好了重新刷机的准备了,后来查了下,发现下面论坛里说的方法:

https://forum.openwrt.org/t/cannot-access-luci-after-messing-with-settings/147903

通过执行下面的命令:

cp /rom/etc/config/uhttpd /etc/config/uhttpd

即可将默认uhttpd配置文件还原回来,然后重启uhttp服务:service uhttpd restart,或者直接重启路由器即可恢复管理页面,不需要刷机,快速救回LuCI管理页面。

关于OpenWrt的log level问题(k2p)

最近在调试k2p官改( V2.0D )的ipv6时,发现怎么都看不到pppoe拨号时的详细信息,无奈之下发现了pppd的写文件log的方式,修改/etc/config/network中的wan接口(或对应uci设置方式):

config interface ‘wan’
option ifname ‘eth1.2’
option peerdns ‘1’
option ignore ‘1’
option dns_opt ‘0’
option pppoe_dns_mode ‘0’
option dhcp_dns_mode ‘0’
option macoperate ‘1’
option DiaMode ‘0’
option mtu ‘1500’
option ipv6 ‘1’
option pppd_options ‘debug logfile /var/log/ppp.log’
option status ‘up’
option proto ‘dhcp’
option ignore_mtu_change_pppoe ‘0’

加入 option pppd_options ‘debug logfile /var/log/ppp.log’ 这行,从而让pppd的调试信息输出到单独指定的日志文件/var/log/ppp.log中,这样便可看到pppd拨号时的详细log了。但是,之前的y1s同样是OpenWrt系统,却不需要写文件的方式,直接加上debug这个option就可以了,后来一通搜索后发现了原来是系统的log level设置所致:

Continue reading…

k2p官改固件的端口转发问题(远程桌面UDP协议开启)

最近把无线路由从y1s换到了k2p,虽然cpu没啥飞跃,反而还没了usb,内存也小了一半,但k2p的无线信号确实是碾压了y1s,据说比newifi3也好些。其实这些年用y1s后总结出的个人对路由器的需求基本就是DDNS动态域名,WOL远程唤醒,端口映射(包括UPNP),再来个某种方式的远程管理路由器(web或者ssh),仔细看看,其实没有什么功能是吃cpu或内存的,真有特别耗资源的应用也不是现在一般水平路由硬件能抗的住的,而且还要平衡功耗,散热等连带问题。

好了,回到正题,这次的问题就是路由换完以后,虽然都是OpenWRT的定制系统(k2p是官改 定制版本: V2.0D 软件版本: 99.8.5.189),但对于我常用的3389远程桌面控制局域网电脑需要的端口映射还是发现了点问题:

Continue reading…

DNSPod API升级TLS 1.2导致ArDNSPod脚本失效问题

博主我常年在路由器的OpenWRT系统上以crontab方式跑ArDNSPod:https://github.com/anrip/ArDNSPodl来实现DNSPod上解析域名的DDNS功能,但是今天突然发现在出口IP变化以后,DDNS域名没有像往常一样正常更新(以往反应都是很快的),检查了下也不是以前出现的又被ISP变回内网IP导致的,于是ssh登上路由器的局域网IP,手动执行了下crontab里sh的命令,发现提示这个:

root@xCloud:/opt/usr/ardnspod/ddnspod.sh
Linux
Updating Domain: xxxx.k-res.net
hostIP: xxx.xx.xxx.xxx
Get Record Info Failed!

Continue reading…

OpenWRT下libv4l的编译问题(uClibc++、stdc++相关)

最近研究路由器上的摄像头监控,要用到libv4l2的库,结果用OpenWRT SDK编译时却遇到了问题,路由器cpu是MT7620A,用的SDK是OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2,用./scripts/feeds安装了libv4l后,直接make报错:

In file included from v4l2-compliance.cpp:37:0:
v4l2-compliance.h:25:18: fatal error: cerrno: No such file or directory
 #include <cerrno>

看了下,是c++写法下的errno头文件找不到,V=s看了详细日志,-I的头文件搜索路径里确实没有cerrno,但是这个文件确实存在于这里:staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include/uClibc++/,也就是说-I少了个带uClibc++的路径,看了半天sdk里的各种.mk,也没找到什么配置参数方面的玄机,可又不想傻加上个-I,或者都改成errno.h,于是开始搜索…
Continue reading…

OpenWRT软件包Makefile的recursive dependency问题

试验MT7620A路由器OpenWRT系统软件开发时遇到了如下的问题:

[admin@localhost OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2]$ make
Collecting package info: done
tmp/.config-package.in:7:error: recursive dependency detected!
tmp/.config-package.in:7: symbol PACKAGE_helloworld depends on PACKAGE_libpthread
Config-build.in:1745: symbol PACKAGE_libpthread is selected by PACKAGE_helloworld
#
# configuration written to .config
#
make[1] world
make[2] package/compile
make[3] -C package/helloworld compile
make[2] package/index

看意思是引用的libpthread导致了递归依赖问题,检查hellowolrd中的Makefile,Depends属性是这样设置的:
Continue reading…