干扰GFW的识别?

今天上午发现通过ssh访问国外的网站打不开(被reset),但也不是所有情况,访问https的网站可以打开,而访问http的网站却无法打开,之前有听说g-f-w已经有能力识别ssh是用于代理访问http,难道我被识别到了?

搜了一下,看到这里:http://www.v2ex.com/t/54518 这里有人说g-f-w匹配ssh里的数据,根据与http的相似度来判断,如果是http就做reset,并且提到干扰g-f-w的训练模型可以在ssh里增加一些别的操作,使之无法判断成功。

1) 建立有名管道

mkfifo -m 0666 pipe

2) 不停的产生随机数到有名管道

while : ; do sleep 0.5 && echo $RANDOM > pipe ; done

3) 消费有名管道的数据,重定向到ssh代理服务器端

tail -f /tmp/pipe | ssh hongjiang@ip-addr ">" /dev/null

这个方法并不灵,不知道是干扰不够,还是别的原因。

//补充
下午发现并不是所有的http网站被reset,只是http://wordpress.com 和 http://facebook.com被reset
其他的http网站还是可以访问,包括http://blogspot.com

注意sudo执行时的shell环境与当前不同

记录一次环境问题

$ jmap -perstat javapid

提示我没有权限,然后

$ sudo jmap -perstat javapid

提示 jvm版本不同,很奇怪明明jvm用的同一个版本;后才发现原来 sudo 之后所用的命令jmap已经不是当前环境(PATH)下的了

当前环境,我设置了profile里的PATH环境变量,优先用 /usr/alibaba/java/bin
而我的系统里还有一个openjdk,当使用sudo 时实际是用的 /usr/bin/jmap 而非 /usr/alibaba/java/bin/jmap

删除了openjdk-7-jdk 之后,发现sudo jmap会提示找不到jmap命令,确实因为其环境变量并没定义路径/usr/alibaba/java/bin。如何在用sudo的时候使用当前的环境呢?使用-i参数:

$ sudo -i jmap javapid