我们来打洞:转发DNS包

基于某些众所周知的原因,在天朝上网非常需要勇气和技术。 今天在跟某人聊天时了解到Chrome竟然没办法使用proxy进行DNS查询<1>, 导致DNS查询结果持续被污染。 虽然用proxychains能把一切流量塞进代理里面, 不过用proxychains启动浏览器的话,各种自动代理插件就失效了,所以这是个得不偿失的方法。 青蛙晚上的时候突然想到iptables是不是可以把DNS查询流量转发进ssh tunnel呢? 上网google一番之后,发现这是可行的,而且其实用不到iptables,只要nc就够了。

要用SSH Tunnel转发DNS流量,最大的问题是要把DNS协议使用的UDP协议转换为TCP协议,然后在proxy端还要转换回来。 所以目前青蛙想到的方案有一个很大的缺陷,就是如果ssh服务器上不提供nc命令的话,下面的操作是没法完成的。

首先,用SSH连接ssh服务器,这里青蛙打了一套组合拳,ssh -L + -D组合,分别负责DNS流量和普通数据流量:

ssh -D1080 -L5353:127.0.0.1:5353 user@ssh-server

-L 参数的目的是在本地机器上打开一个5353端口,发送到这个端口的数据都会被转发到ssh服务器上的5353端口上。

然后,在ssh服务器上执行:

server$ mkfifo /tmp/fifo
server …
more ...

procmail + kdialog 构建邮件提醒脚本

Mutt真的是神器,越用越觉得爽。 可惜命令行模式的工具都有个弊端:跟X交互能力比较弱, 例如Mutt就木有邮件提醒功能。

之前在Gnome2的年代里还有 mail-notification 可以对付用(这玩意占用系统资源狂多,似乎是通过监视文件更改来提醒的), 在Gnome3之后这个工具就完全不工作了,而且又没有后续版本。

青蛙抛弃Gnome,换成KDE之后,也没有找到KDE下的邮件提醒工具,于是一直酝酿着自己写一个。

实现邮件提醒功能,无非就是监控邮箱变更,可以在几个点检查:

  • 直接使用POP/IMAP协议检查服务器端
  • 监视MTA动作
  • 监视MDA动作
  • 监视MUA动作
  • 监视邮箱文件/目录更改

直接访问服务器是最直接的办法,但是既然MTA都把邮件收下来了, 再去监视服务器就有点绕腾了,这种方法监视gmail/hotmail之类的邮箱还是很不错的。

监视MUA的动作, adam8157同学 就是这么做的, 监视Mutt startusbar的特殊字符串,通过Mutt的filter发送notify消息。

监视邮箱文件/目录变化就是 mail-notification 的做法了,但是如果不想轮询的话,大概需要内核开启inotify支持。

监视MTA动作,青蛙没有仔细研究,似乎还是需要MDA的某些行为处理, 所以青蛙直接用了在MDA里加入提醒脚本的方法。

监视MDA动作,就是青蛙的做法 …

more ...


无聊时的消遣:JavaScript性能测试

闲着无聊,在某邮件列表上发现一个测试js脚本性能的网页。 用Chrome进去一试,85ms。Google浏览器的js性能还真是彪悍。

多余的不说,上图。

js-performance-chrome

Google Chrome的测试结果。

js-performance-ie6

IE6的测试结果,中间还弹出了脚本执行时间过长的警告。

差距,就是这么明显。

more ...

像Linux一样的Windows

谁说Windows的易用性好!?

用惯了Linux,换到Windows上真的是超级不适应。 别的不说,就说复制粘贴都需要^C、^V的按个不停, 就是一种很影响效率的方式。 还有那个傻呼呼的cmd窗口,怎么能比的上bash简洁?

这次换到windows平台,装好系统干的第一件事就是把 Cygwin 装上,有了熟悉的命令行,熟悉的VIM,才有工作的动力。:P

然后再把explorer换成 bbLean ,恩,这次跟linux比较像了! 但是还是没找到怎么样把窗口置顶的方法, 没法像在Linux里那样方便的把一个窗口钉在顶端。 (bbLean的更多图片可以参考 青蛙以前的日志

实际上,被Windows惯坏的人太多了!

desktop

more ...

在debian sid上面安装eva

debian-ubuntu

自从青蛙人品爆发,在pidgin上面死活登录不上QQ以后,青蛙都是在wine上面跑QQ。 在wine上面速度慢不说,QQ时不时的来一下非法操作就把青蛙折磨的死去活来。 据说最近eva又升级了,于是青蛙决定换用eva。

Debian的apt里面是没有eva的。 青蛙上网搜了一圈,也没有发现eva的升级包,连 它的主页 上也都还是很久很久以前的版本(大概eva已经转入地下了)。

青蛙最后在ubuntu的源里面终于翻倒了eva的deb包了。

eva在ubuntu源的universe里面,随便找一个ubuntu的镜像(青蛙用的是 中科大的源 ),在/pool/universe/e/eva目录里找到 eva_0.4.9+svn20080215-0ubuntu1_i386.deb ,下载回来备用。

在正式安装eva之前,青蛙还要搞定它的依赖性问题。

ubuntu里面的eva是依赖于kdelibs4c2a这个包的。 但是debian里面的kdelibs4c2a存在一个依赖性的bug:

它依赖于包libopenexr2ldbl,但是这个包在debian的i386源里面竟然没有。

于是青蛙再从ubuntu源里把 libopenexr2ldbl 给抓回来,dpkg -i安装之,然后执行# aptitude install kdelibs4c2a,安装一系列的依赖包。

顺便说一句,debian跟ubuntu这两个兄弟有时候还真不错,互相谁也不挑谁的 …

more ...

pidgin中群名称变为NULL的解决办法

前阵子pidgin从2.x版本升级到了2.3.1以后, 青蛙的QQ的群名称就全部变成了NULL, 然后所有群的消息都跑到了一起,看的我眼花缭乱。 于是青蛙就眼巴巴的等着pidgin的升级。

这不,它终于升级到了2.4.0了,结果这个问题还是没改!

看来老外是靠不住的,只能靠自己了。 青蛙拿起google一划拉,还真找到点东西。

这不, Linuxsir上的linuxahah同学说 ,这是因为死TX修改了协议导致的,并且放出了一个补丁。

但是这个补丁需要打到pidgin的源码里面重新编译,鉴于青蛙前N次编译pidgin的结果都是失败而告终,这个方法还是放弃了。

于是青蛙继续google,发现 Linuxsir的marklf大牛说 ,这个问题还是因为pidgin中的libqq.so引起的, 只要用以前版本的libqq.so替换现在的版本就可以了。

这个方法很好很强大,只要找到2.x版本的libqq.so文件就,然后把它复制到/usr/lib/purple-2/就可以了。

困扰了青蛙好久的问题解决了,终于可以开心的聊QQ了 :D

更新: [2008-03-02 11:33] 放上日志里提到的补丁文件和libqq.so。

qq …

more ...