srun3000 PPPoE版 openwrt解决方案

很久很久以前为了应付深澜校园网做了个srun3000的php版,可以放在路由器里。后来学校的srun3000换认证方式了,改成了pppoe,原理是把用户名加密,然后原始用户名当心跳包,可惜加密手法比电信low多了,一眼就能看出来。于是捣鼓了一天,学了门新语言lua,然后继续愉快地用在了路由器里。

该方法相比于php更加简洁省资源,可以直接应用在openwrt的luci中,加上依赖总共不到100k大小。文后提供石大版,部分学校可能加密手法和心跳不一样,自己修改,至于如何获得加密的用户名和抓心跳包,不在本文讨论范围内。

继续阅读srun3000 PPPoE版 openwrt解决方案

使openwrt路由器支持带回车换行符的PPPoE用户名

可恶的电信校园宽带,强制使用客户端限制共享。其实也没什么技术含量,还是PPPoE协议,就是把用户名按一定算法加密,客户端大部分功能都用在了限制共享上,搞得电脑都不正常了。问了电信工作人员,还说这客户端花了几百万呢,西安信利真能赚钱,还不支持非win的系统,呵呵。

加密用户名好办,客户端强行结束就能看到真实用户名了。可恶的是这宽带用户名前面加了回车换行符(\r\n),不仅windows自带拨号无法输入,一般的路由器也无法输入进去。经过google,发现tp-link的有办法,可以post数据或者直接把输用户名的表单改成textarea。但是tp-link原厂固件功能少,又经常死机,于是想用openwrt。仿照tp-link的方法无效,又找了改拨号脚本修改ppp源码的方式,都没成功。最后无意中发现了可以通过ppp插件的方式修改用户名。通过参考此源码,成功解决了在openwrt中使用回车换行符。

将上述sxplugin.c文件的用户名加密部分删除掉就基本可以了,然后按照上述链接的说明编译并将so文件传到路由器上即可,拨号时就会在设定的用户名前加上回车换行符。

我这提供编译好了的bcm63xx和ar71xx的so文件,对应的openwrt版本是12.09,ppp是2.3.5,so文件放在/usr/lib/pppd/2.4.5/下。 继续阅读使openwrt路由器支持带回车换行符的PPPoE用户名

路由器简单解决dns污染问题

dns污染是个很头疼的问题,曾试过很多方法和软件,效果都不太好。最近得知opendns有非正常端口,于是想是否能够利用此来避免dns污染呢?经过搜索,得到了方法,现分享一下。

opendns有53, 443, 5353三个端口,其中53支持传统的udp和非传统的tcp,因为udp协议自身的原因,导致了墙有机可乘。而使用tcp协议在客户端上实现起来很麻烦,在路由器上实现也可以,不过也要额外装软件。而另外的端口在路由器上使用就很简单了,墙也不会干扰。现在你需要一个openwrt之类的路由器(需默认装有dnsmasq),然后修改/etc/config/dhcp文件:

config ‘dnsmasq’
#option ‘resolvfile’ ‘/tmp/resolv.conf.auto’
option ‘noresolv’ ‘1’
list ‘server’ ‘208.67.222.222#5353’
list ‘server’ ‘208.67.220.220#5353’

保存后重启dnsmasq即可。更多信息可参考此篇文章

openwrt路由器上实现ssh端口转发

宿舍路由器想实现个登录远程ssh(也是openwrt系统),然后转发,宿舍所有的人都可以使用这个端口上网了,在网上查了些资源,结合openwrt wiki这篇实现了。

1.Openwrt自带dropbear转发SSH只能监听本地端口,首先安装openssh客户端。

2.本地(路由器上)生成密钥

3.将密钥上传到远程服务器上。由于我的远程服务器的也是个openwrt,ssh服务端是dropbear,以此为例,可以实现私钥方式登录dropbear。其他ssh服务端路径等可能不同。

4.登录远程服务器,转发端口

5.如果网络断开或重新拨号SSH会断开,可新建shell脚本监控ssh自动重新连接:

你也可以将上面这个监控脚本(比如叫autossh.sh,放在etc里)加入到开机启动里(文件/etc/rc.local),就能开机启动、保持监控了:

有些工作可以在winscp软件和luci中操作。完成之后本地路由器的客户端就可以用路由器ip:7070直接使用这个socks5代理了.其他路由器系统如ddwrt也可以尝试一下。