境外DNS解析缓慢

在阿里云部署了自己的服务器,一直使用Linode做DNS解析。当初使用Linode的原因是不想去做备案,不过最近遇到了新的问题。

原本Linode的DNS解析速度还是很快的,从没想过访问服务速度缓慢是名称解析的问题。最近两天访问自己的开发服务器以及git服务器非常缓慢,ping值破千ms,在服务器上top看下来,也找不到任何性能问题,满头疑惑。

后来测试支付宝接口的时候,发现原本可以走通的支付宝接口,在成功支付的情况下,支付宝服务器没有给我们调用回调函数,反复查找原因都没有找到。

多种异状结合在一起,终于开始想到,会不会是名称解析的问题。果然,测试代码改用IP而不是域名作为接口后,速度大大加快,支付宝的回调也成功接收到了。更为可观的是,由于测试用例中大量使用域名作为数据库地址,原本10分钟才能跑完的测试用例,现在仅需几秒钟就能完成。

这才意识到名称解析对于提高服务性能的重要性,开始考虑切换到使用国内名称解析了。不想做免费广告,就不提目前试用的是哪家的服务了。总之先试一试,看一看服务的情况如何,再做进一步的考虑。

新的革命:自由网络 vs. 安全网络

我起了一个巨大的标题。我本不该的。我希望用这样的标题党引起更多人注意这个问题,共同来解决这个世界性的世纪难题。

这篇bo的内容起始于我关于网络实名制的一些想法。但是不成熟,所以没有抛出来。很快就遇到的CSDN以及其他诸多著名网站密码流出事件,更是证明了网络安全问题其实是长久以来悬而未决的难题。后来美国又发起了SOAP的论战,当时俺兴趣不在这个上,也没有仔细去读新闻。过年回来后知后觉地追踪了下时下火热的方韩大战的新闻旧闻,说来这故事跟网络自由和安全其实有些相关性,那就是拷问网络言论究竟应不应该受到责任约束的问题。今天上午在公司无事,反过头来详细阅读了译言翻译的上许多对SOAP和PIPA的详细分析和报道。再反思以前一直思考着的,互联网未来发展的趋势;该不该实名制;用什么方式帮助大家公平地排队买火车票;怎样有效地分发和贩售知识,这种新世纪的财富;怎样有效地让人们在互联网上能够公平自由地发表言论,同时又能切实地为自己的言论负责;怎样保证信息流动性的同时还保证他的可靠性。因为一直思考着这些,发现这些问题其实源于同宗,于是就有了今天这个标题。

经过半个世纪的发展,互联网正走向新世纪,新革命。互联网极大便利人们的同时,也极大地改变,甚至可以说是,毁灭着人类。因为他的便利性地下藏着的是巨大的漏洞,无尽的陷阱。互联网最初的设计来自于学校,而目的是用于军事。也就是说,最早的互联网使用者,是科研机构和政府部门,是用于组织内部,是互相信任的不同机构的通讯网。互联网,从其设计之初的基础来看,就是一个信任网络。互联网是一个明码通信网络。当然,VPN,SSL等技术从不同层次改进了网络的安全性,但VPN并不是互联网的一部分,只是一个局域安全网,而SSL则会遇到密钥分发这个密码学永远要面对的难题,中间人攻击仍然是他的软肋。目前网络常用的用户名-密码验证机制,有着他的巨大漏洞。这绝不是说网站增强自己数据库的安全性就能解决的问题。举例而言,假如我是黑客,我完全可以建立一个用明码存储用户名密码的网站,然后用吸引眼球的东西引诱大家来注册。例如说糟糕图床,例如说二次元漫画,例如说盗版游戏下载,例如说灵异事件讨论和照片分享,等等。你会说我不沾游戏不看盗版电影不上糟糕站,那你会不会订打折机票,会不会团购旅游?恭喜你,你又中招了。黑客世界除了能逆向工程软件和系统,还有逆向社会工程学。你会说我每个网站都用不同的用户名不同的密码。但是这个世界有几个你这样的聪明人,十几亿网民中有千分之一的密码泄漏,就够养活一个师的黑客大军了。

强调绝对的网络自由的后果就是,网络不存在任何安全性可言。那就会陷入无政府主义的痛苦深渊。每个上网的人都必须是黑客,否则就是黑客押镖保护下的惊慌旅客,再不然就是待宰羔羊。网站安全要靠站长自身素质、纪律和技术支持;上网安全要靠网民自身武艺高超。那将会是一个骗子横行的世界。例如我可以开发一个720软件,密码存我这,包你上网无忧。结果实际我是地下黑客组织的大后台,我一边大肆兜售安全软件,一边就把所有人的私人信息插标出售。那你还敢信银行专用防火墙吗?那你还敢信全自动保安系统吗?那你还敢信网上银行吗?自动操盘bot?天哪没有网络安全的世界是不可想象的。

那么,反其道而行之呢?建立强有效的安全网络?问题是如何去做,问题是技术水平是否足够,问题是国际政治环境是否允许,问题是新的政策新的法律新的技术将如何影响现有的利益集团。

实名制:毫无疑问,实名制会给网络减少不少乐趣。用一个名字拉风的马甲胡吹海泡的时代一去不复返了。但是好处呢?每个人都要为自己说的话负责;或者仍然允许匿名,但是如果你用的是匿名,则你说的话根本没人搭理。谩骂、水军、造谣、煽动、这些毫无营养的网络垃圾终于可以省省了。更多的空间让给建设性的建议和评审,让给知识的有效流动。同时,实名制的信息签名制度使得一个人说的话在被复制和传播的时候他的签名被同时传播,于是制止了匿名转载,保证了CC实现。另外如果有一个强有力的独立部门承担网络ID的认证工作,则任何其他网站都不需要保存用户的密码了,于是再也没有密码泄漏问题。当然前提是那个独立认证部门必须切切实实的强有力,值得信赖。
技术难度:签名的不可复制性需要密码学的严谨论证;公民的网络ID将成为他的新一代身份证,同时也是他全部虚拟财产的钥匙,需要强有力的安全部门保证这个帐号的安全。

默认加密:现代互联网仍然是默认明文的。使用一些简易设施,任何人都能截取局域网或者wifi中传递的私人信息。加密应该在网络的底层实现,而不是依赖应用程序提供者的道德约束。问题是想要从底层修改网络协议,影响面太广,不是一日可完成的任务。并且这要求世界各国的网站齐心合力一同做到。新的IPV6协议中包含更多的安全部件,但仍然是可选项。强制安全的网络协议是未来人类的必然选择。
技术难度:向后兼容

异构云系统:这是我的独立发明。未来互联网就是云系统。但是现在的云系统都是同构的,同一个系统内部的无数并行运算组件其实是运行在同一个机房几乎完全相同硬件上的完全相同的软件。这也就是说,无论你的安全机制多么严密,只要黑客攻克了你那么一点点,那么所有的机器,所有的组件,全都被攻克了。我认为真正安全的系统必须是异构复合的。同样是处理邮件,同一个服务,在云端由不同的并行组件,就可能由成千上万种完全不同的方式处理掉(当然结果是相同的,异曲同工嘛)。这在自然界,就是称作“物种多样性”的杰作。这样黑客就算创造出一种病毒,也仅仅能摧毁某种特定类型的细胞,而其他的细胞完全不受影响。那种特定类型的细胞灭绝之后,这种病毒也就跟着一起灭绝了。要如何实现异构复合的云计算系统?毫无疑问要依赖遗传编程。啊伟大的人工智能,创造奇迹吧,改变软件工程的历史性大手笔!
技术难度:遗传编程的工程应用。于此相比,更大的难度在于安全性对于服务提供商而言是附加题,他们不会在没有利益驱动的前提下自动花大笔的精力去做。因此此事的推动需要等待互联网的进一步进步。

我写了好多,但还是太少了。但是很明显的,再多写也没有意义。推动网络革命需要的技术进步,远远比不上他所需要的社会进步那么急切。如果互联网不能进一步前进,进一步暴露他的问题,给各利益方以驱动,则即使技术摆在那里,也没有人想要去用。结果又变成了,技术拯救人类和技术毁灭人类的死亡竞速。

因此纸尽言犹,先就此收笔,静候网络发展的佳音吧。

远程解析DNS躲避DNS污染

我发现我前两天发的博nslookup-解决ssh隧道无法访问twitter很受大家的欢迎,sjw同学也说到,其实使用OpenDNS就可解决这个问题。

因为我之前尝试过OpenDNS仍然发现问题,才出此下策的,因此专门去研究了一下,发现其实@williamlong有一篇老文,早就可以解决这个问题。OpenDNS不能解决DNS解析错误,而这文的解决方案,比我提出的要简单许多,就是使用远程解析DNS。

关于如何使用远程DNS解析,月光博客提到了firefox的启动参数。至于我所喜爱的chrome,网上的讨论也很多。具体的方法就是使用sock代理和switchy扩展的自动模式(auto switch mode)。当然,正如sjw同学提到的,使用vpn的同学直接使用墙外dns就可以了,有些客户端似乎是默认使用本地dns,可能是需要配置一下的。因为我不用vpn所以不是很了解。
我找到的比较好的参考是这篇chrome 扩展: Proxy Switchy!之图解使用方法和这篇在 Chrome + Switchy 下使用 AutoProxy gfwList PAC这篇正是来自autoproxy的博,下面回复讨论很多,很值得看。而这一篇关于 SOCKS 代理的远端 DNS 解析的讨论则可让我们把一些原理搞得更清楚。

php nslookup 安全性检查

昨天做了这个http://pp.hawkwithwind.net/nslookup.php之后,忽然想到,其实完全可以做一个网页版的命令行,远程控制服务器,其实相当于网页版的ssh了。转念一想,不行,因为那样的话安全性没有保障,等于是把自家后院交给人家随意践踏了。

想到这里,忽然意识到,自己写的那个nslookup.php,其实只是简单的把用户提交的字符串前面加一个"nslookup "然后给系统调用,这样其实是非常危险的。例如我尝试在输入框里面输入twitter.com & whoami,结果除了返回twitter的ip信息,也返回了我在服务器上的用户名。这种可怕的缺陷给黑客太多可趁之机了。立刻修改。

我目前的想法是,字符串里包含后台符号 &,分号 ; , 管道符号 | , 重定向符号 > 或者选项符号 – 的时候,就拒绝服务。另外也禁止了字符串内部的空格或者换行符。这样的话,似乎就没有其他的问题了吧?我在这方面不是很熟,估计还会有问题,欢迎黑客及爱好者们赐教~

后来又发现了好多其他可能的符号会导致插入语句。。现在我禁止的符号更多了。。包括大括号{}还有问号冒号等等都被我禁掉了。。

另外,虽然只有几行代码,我把他放到了github上,希望能给大家提供一点帮助~
https://github.com/hawkwithwind/phpNetTools

nslookup – 解决ssh隧道无法访问twitter

我最近发现,即使使用ssh隧道,有时也会无法访问twitter, facebook等知名网站,但查询自己的ip地址已经在美国,并且另外一些被墙的网站如blogger等,却又能访问。想到应该是最近GFW的新动作造成的。网上查了查,在google的实时搜索中发现了很多关于最近GFW升级的传闻,很多人抱怨自己ssh或者VPN开始不好用了。

只要能够连上ssh或者vpn,GFW就无法真正对我们造成威胁。仍然无法访问这些网站,极有可能是dns污染造成的。只要能获取到正确的ip地址,就可以访问到对应的网站。然而,网上搜索到的ip地址,往往比较旧,可能已经失效。想要得到最新最正确的dns对应ip地址,最好的方法是通过墙外的主机ping得的ip地址。将其写入自己的hosts文件就好了。

为此,我自己写了一个小小的服务,用美国主机nslookup你想问的域名,给出对应的ip。
pp.hawkwithwind.net/nslookup.php
我还提供了他的api版本,只要使用如下格式的命令,就可得到 json 格式的返回包:
pp.hawkwithwind.net/nslookup.php?server=google.com
返回形式如下
['74.125.224.176', '74.125.224.177', '74.125.224.178', '74.125.224.179', '74.125.224.180']
相信还是蛮有用的。至于原理,非常简单,用php的exec函数执行nslookup命令就可以了。

php网页代理实现原理笔记

去年冬天我说过要改一改phproxy让他能够正常浏览twitter和facebook。到现在马上要一年过去了我还没动静。。作出承诺而不执行实在糟糕。这里先做个笔记希望接下来能继续做下去。假如有同学愿意帮助我的话则极其欢迎!!

这里用访问网页的流程作为引子说明一下php网页代理的简单原理。
首先用户提交一个url给服务端。这里有个trick就是这个url以name为q的一个GET方法传入服务端。后面这个trick有很有效的应用。
服务端接到请求后读取这个url,需要做url的parse。这个在php里有现成的函数parse_url。需要解析的东西是很多的。比如要知道他是http还是https。要拆分出主机名和后面的路径。假如有端口号要记录下来,否则http赋以80端口,https赋以443端口。等等。
分析完成之后需要建立连接,然后发送请求。建立连接使用的是fsockopen。之后需要根据http协议建立请求。http协议其实是用\r\n分隔的一系列文本行。要说明的东西很多,比如GET还是POST方法,访问域名和路径是什么,cookie和session定义等等涉及到方方面面非常细节的东西。我还没有完全看完,不过如果只是想要读取一个简单的页面的话只需最基本的几个项目定义好就可以了。将这些内容做成一个字符串,然后使用fwrite写入到前面打开的socket中去。
发送请求之后就使用fread读取socket等待响应。需要用一个while循环不断读取,因为他可能一次发送不完。前面发送的东西是一个http头,跟上面提到的内容一样也是一系列\r\n分隔的文本项。需要根据协议依次处理这些内容。我在实验中完全忽略了这些内容只是将后面的网页显示出来。但phproxy的代码里面已经将处理http头的工作做得非常细致了。
理论上来说读取到的网页信息(也就是<html>标签包含的那一堆东西)只需直接echo出来就可以在页面上显示了。做到这里最原始的一个网页代理就做完了。但事实上这是远远不够的。首先发现的就是很多链接无法打开,css和js文件没能加载,很多图片也显示不了。为什么呢,因为他们使用了相对路径,而现在的主机域名已经变成phproxy架设的域名了。即使他们使用了完整路径,但是由于不经过代理的缘故客户端很可能还是无法加载。
因此必须将那些资源依次下载到服务器上,并将路径改成服务器上的路径,才能使用户正确的读取。
这里就用到了最开始的那个trick了。最佩服作者的地方就在这里。直接遍历下载下来的html脚本代码,找出所有可能出现网络路径的位置,例如src=啦,url(啦,background-image啦等等。并直接在这些路径前面加上phproxy路径加?q=就可以了。也就是本来

http://twitter.com/api/

这个路径就变成

http://phproxy.host.net/index.php?q=http://twitter.com/api/

这个形式。从而递归的调用了自己,将网站需要的资源全部下载下来。

当然这个简述简化了太多细节,尤其是http头的处理部分。但那些并不是我关心的。我关心的东西主要有两个。一个是为什么他不能访问facebook,一个是他为什么打开twitter之后无法发推(新版twitter只能显示标题栏)。

不能访问facebook原因很简单,问题出在用户通过form发送请求时使用的是明码传输。即使使用了base64编码也无济于事,因为那并不是一个加密算法。必须在用户输入url地址后通过javascript在客户端加密之后发送到服务端才能解决问题。这很简单,我昨晚尝试了一下,仅仅使用了每个字符的ascii码减1这种方式,就轻松穿过了防火墙。而服务端发回的数据$_response_body也使用某种简单算法加密,然后urlencoding之后放到一段javascript代码里面。

<script language="javascript">
function my_decode(body){...}
document.write(my_decode(decodeURIComponent("$_response_body")));
</script>

上面这个是拼接完的效果省略了很多单引号和字符串连接。当是伪代码来看吧。
这样客户端接收到数据后就会先解密然后显示出来。加密算法本身没有必要很复杂,只用最弱智的加密就可以。至少目前是这样。需要注意的是$_response_body里面的东西必须urlencoding,否则它里面有双引号啥的的话就会把整个javascript毁掉了。

但后续的工作并不轻松。因为前文提到整个网页中的全部资源都必须重新下载,因此必须修改代码中每一处可能用到url的地方,调试工作还需要一些时间。这两天正好是秋学期期末考试,考完试的空闲时间应该可以搞定。

另外一个问题是他为什么能上推但是不能发推。原因很简单那就是他还不支持ajax。要让他支持ajax稍微有点难度。当然说起来很容易那就是去parse 全部javascript代码,发现ajax的code就给他加上一前述proxy前缀就好了。但问题没那么简单。javascript实在太灵活了,任何地方都可能出现url。换句话说,要想完成这个功能要做javascript的语义分析。我想说那个工作的复杂度已经远远超出做网页代理的范围了。当然什么时候有空可以搜搜看有没有开源的js分析工具。但我不清楚有没有php版本的。假如有js版本的也可以,嵌一段js code到网页里在客户端解析。但无论如何是个大工程。至少对目前的我来说是。(假如有人愿意帮忙的话非常欢迎~~~)

如果totally放弃这个思路换一个想法呢?能不能在客户端发起ajax请求的时候去劫持他到另外一个服务器呢?那当然难度就简化多了,但那就不是一个网页代理可以做的事情了。需要我们自己写一个浏览器才行。。但,只是再多想一步,是不是做一个浏览器插件可以解决问题呢?说不定真可以!可惜我没有做浏览器插件的经验,目前还不好说。假如哪位同学有兴趣欢迎讨论~~

以上

再论谷歌“退出”中国

不断在网上和推上看到各种各样的对谷歌和中国的评论,本来不想写傻逼文章找骂的,不过越看越手痒,于是不得不写了。

言多必失,我尽可能简短(好吧,说出这句话证明我要开始长篇大论了。。。囧)。

首先,谷歌没有退出中国。

今天聊天的时候,5+提醒我,其实谷歌自己从来都没说自己退出中国。他说的是,他会尽可能寻求留在中国的方法,并且他找到了,那就是香港。退出完全是国人的炒作。或者五毛,或者过于亲谷歌以至于以此用词,或者跟风受到“煽动”(谁说无知群众少了呢,其实群众是极其容易被“煽动”的)。谁说香港不属于中国对不对,况且谷歌的所有原有面向大陆的服务都仍然照常运作,唯独搜索离开大陆。有人说谷歌纯爷们,放着中国这么大一块市场不要了,纯为了不做恶的信仰做不可思议的事情。请这些人三思。首先考虑谷歌中国之前在国内与百度竞争是否成功,再考虑谷歌继续沿用旧有的方针与百度或者其他搜索引擎竞争中国市场有什么前途。李开复离开谷歌的时候怎么说的,“搜索市场的扩展已经没有大幅增加的可能性了,继续留在谷歌没有激情”。最后考虑,谷歌在中国用户是哪个群体,有潜力的是哪个群体,再想想这个“退出”中国的方案能最大程度的增加哪个群体对谷歌的忠诚度,加深对哪个群体的知名度,又对哪个群体来说其实是无关紧要的。你就可以发现或许短期来说退出中国是失败,可是长远来看他可能有深远的经济价值。

第二,谷歌“退出”与邮件系统遭受黑客攻击无关

Gmail从来就没有引进中国市场,邮件服务器本来就不在中国。并且“退出”之后仍然有中国员工在北京上海工作。假如原来谷歌邮件服务器会遭受攻击,“退出”之后仍然会。这有什么区别呢?况且,正如谷歌自己所说,发现二十多家(忘记具体数字)公司都受到不同程度的黑客攻击。别的公司掩饰这个问题都来不及,拼命说自己公司的数据没受什么影响,为什么唯独谷歌反应这么强烈?这是一个借口,一个导火索,还是一个暗示,他明确说明是“人权人士”的邮件帐户遭受攻击(为什么?为什么知道是人权人士,又为什么要说?)。这明确的暗示这件事情的政治意义。当然同时这也有着他的商业价值。加上上条所述的为了加深中国精英人群对谷歌的知名度和忠诚度,采取自由民主等等口号是非常有效的。最后不要忘记美国有爱国者法案,中国审不审查你的邮件先不讨论,美国可是随时都在看着你的邮件以及一切通讯呢。不要掩耳盗铃。

第三,谷歌一点也不低调。

之前一段时间,自谷歌上一篇关于中国的博客至昨日作出最终决定的一段时间之内,很多人都在说其实谷歌是非常低调的完全不想放大这件事情,一切炒作都是五毛发起用于抹黑谷歌名声的。五毛究竟是否特意炒作这件事情不得而知,但是谷歌写了义正言辞的博客,一度关闭北京员工的访问代码权限等等,绝不是低调的表现。谷歌想要低调的话,你根本就不会知道(他们开发android和chromium OS的早期,有谁知道这些事情?)。假如这些还没有说服力,想想看最后,谷歌搬服务器到香港,他近乎讽刺的在下面写着“欢迎来到谷歌在中国的新家”,假如他很低调,他完全可以把网页做得跟原来一模一样,不注意都看不出来,对用户来说这完全是无痛的。他甚至可以继续用google.cn的域名,因为按照谷歌的说法,搬家到香港去就完全合法了,因此理应备案通过(当然也有可能是政府不批准,这个我不了解了)。可是他做了明显的动作让用户明显的注意到区别。他一直在展示自己的姿态。他在利用自己的口碑和用户忠诚度跟政府战斗。我不评论这种战斗的正确性,谷歌看似正义但目的不纯,政府一无正义而无逻辑更别提法律那就更不必说了。甚至他故作深沉发动舆论力量都是老练的公关技巧。评论说谷歌不懂得危机公关的人不是骗子就是傻瓜。在这场战斗中永远显得低劣愚蠢又遮遮掩掩找东西遮羞的反而是另外一方。

本来不想讨论政府的做法的,不过都说到这了就一起评一评。我们先不考虑政府是不是该为民服务(不要幻想政府为民服务,尤其是大国。说美国政府是为人民服务的政府的人们请三思)。我们只是从一个政府如何能够健康合理的发展的角度去看问题,都会发现目前政府做的事情都是“很傻很天真”。他们的目的其实很明确,仅从政府存活的角度来说也是对的。比如要控制舆论,比如要应对国际压力,比如要控制经济命脉和政治地位。但问题是,他们采取的方式幼稚,手段低劣,又因为好面子的关系不断找东西掩饰自己的错误。最后终于变得集权,不透明,封锁舆论。例子的话,近有朝鲜,远有苏联。为什么同样是冰冷的国家机器,美国政府就看上去那么美好,让那么多人追求。就是因为他有成熟的执政手腕。他同样控制舆论,不过人家有大禹治水的本领,用不着用堵的;他同样审查言论,但是更多的是被动监听,禁止言论的尺度也正适合,不会让人产生反感情绪。一切的一切,他本质上同样是压榨劳动人民的剥削机器,但是经历了世界大战和国内战争,经历了政治动荡和经济危机,他们学到并掌握了最好的压榨劳动人民,又让劳动人民被压榨的非常幸福的一种手腕。

那就是法律。

中国没有(有效的)法律,是中国执政水准无法提高的重要原因。为什么说没有,先不说这所谓的法律制定的自相矛盾互相冲突原本就是没打算认真执行才这么设计的,单说中国的立法者,执法者,司法者,是同一个体系的,他们之间都是官官相护勾连在一体的。自己定的规矩自己做然后自己给自己打分。假如这仅仅是一个人,那还好,只需他非常优秀是有道明君一代圣人,就完全没问题。但是如果是一个有上千万人构成的庞大臃肿的结构呢。毕竟圣人是少数。我们尚且假设这个世界是存在圣人的,并且所有的圣人都在政府工作。即使这样,也仅仅是千万分之一吧。不过以中国的现状并不适合多党执政,这点我不讨论了,不过至少应该在现有的一党框架下实现民主和政治公开。其实这并不矛盾。发动群众的力量来监督政府,这其实老百姓已经自发在做了。如果政府想要活命,其实应该鼓励。如果打压舆论,那反而是给自己挖坟了。防民之口胜于防川,老祖宗的话都不记得了。手术刀摆在面前,宁可护着肿瘤也不肯忍半点痛,那结果真是可想而知的。

最后再来阴谋论一下谷歌和美国政府的关系吧。究竟有没有关系谁知道呢。但是美国政府一直利用中国的人权问题对中国施压,与这次谷歌提到人权人士有没有关系呢?谷歌提出要退出中国美国立刻站出来全力支持这之间有没有关系呢?我有一次跟5+提到,为什么谷歌哪怕顶着各国的强烈反对也要做街景。假如他真的跟美国有关系呢?全世界的街景啊!那是多么重要的战略数据。又比如谷歌的月球和火星,从NASA重金买来这些毫无经济价值的数据(好吧这点是我瞎说的了,这个数据是免费的吗),然后免费给大家当玩具?

当然了,即使谷歌和美国政府完全没有关系,但是美国有爱国者法案,美国想要调查谷歌任何数据都一定可以调查。而谷歌则要尽可能使数据更自由更迅速的流通以获得经济价值。两者即便是被动的,也有着完全的默契。

总之我依然是各打五十大板充老好人(好吧其实是两面不讨好),然后今天斗胆愤青了一把希望不要被请喝茶才好。。苏格拉底还是柏拉图说的来着,不关心政治的人都是没有责任感的人嘛。。我也假装有点责任感一回。。在这个大家都日夜期盼着改国籍换种族的年代(怎么貌似WOW换服务器换种族。。)

说了这么多负面的,最后来点建设性的东西吧。(啊话说说了这么多话怎么还不赶紧结尾啊,不知道台下观众都跑光了吗?)(无所谓反正跑光了,那就继续自言自语呗)

中国的崛起,如果可能的话,希望在于教育。不要想着这么快完成封建到民主的转变。这不仅仅是政府的问题。这是每一个人的问题。有人在推特上提到“政府跟国家”的区别。好吧,我们假设换一个政府,执政的人从哪里来?还不是从这个社会里来?这个社会本身是封建的是污浊的,那么怎么可能希望政府就是完美的是圣洁的。。

为什么说社会是封建的。看看这个社会的森严的等级制度,看看从小学开始的一道杠-两道杠-三道杠,一级压一级,老师说的话就是圣旨不能违抗,更不要说到了大学学生会团委里面已经是官僚腐化得跟啥啥县委一样了,从学生会就开始公款吃喝,官僚,瞧不起“不当官”的其他同学。当然是这帮人以后去政府工作,结果可想而知。从小学开始,幼儿园开始,就已经定下的病根!就是鲁迅说的劣根!就是对“下面”的人蛮横而对“上面”的人吹捧,就是欺软怕硬,就是不出头。这就是封建的劣根。封建这种东西,绝不是拆几座庙,炸几处文物可以搞定的。正相反。要去除封建,需要文化的洗礼,需要学习从古至今所有的文化,需要“文艺复兴”,需要追求纯粹的美德。勇气,正义,公平,诚信,宽容,智慧。。。等等等等。。。

很可惜,这可能不符合很多人(至少是很多愤青)追求的想在今生看到中国崛起的梦想。这样的复兴需要很长很长时间。我们从世界大战和内战的荒蛮中走出来,把文明都毁灭了。要重建这种文明需要好几代人的努力。现在政府搞的高度紧张,到了文字狱甚至接近白色恐怖的程度,其实也正是愤青们过于激进急于求成。这样对任何人都没有好处(况且前面也说了换了政府其实还是一样,想想孙中山再纯洁还不是失败了)。反而是通过温和的教育,提高社会整体的素质,才是真正的救国道路。再重复一遍,最后政府里的人是哪里来的?都是从这个社会里来。社会是黑暗冷漠的,强求政府是光明伟大的不可能(也许一两个人还行,但是总体,总体摆在那里不是一人之力可以解决的)。社会是温暖正义的,政府想黑暗也黑暗不了。所以关键的关键在于教育!教育哟!

吐槽完毕。。这么愤青的文章以后不可能再写了吧。。算是绝笔留念。。

中伊网战和DNS

今天见识到了国家级的网战较量。结果也不过于DNS攻击和DDOS。

硬件的问题是没办法说了,那个相当于军备竞赛,蛮无聊的说。DNS劫持就比较有趣。毕竟DNS只不过是一个电话簿。攻击了电话簿既没影响网站也没影响用户和中间的信道质量,其实影响力本不会这么大的。要说直接攻击一个网站,要破解服务器密码,或者通过系统漏洞拿到系统操作权限,对于成规模的企业级应用已经相当不易,更不要说国家级网站。不能钓鱼成功或者通过所谓“社会工程学”得到一些情报的话,直接攻破异常困难。像今天这样几个小时搞定一个网站估计是不太现实了。由于DNS服务器不断监听网络DNS报并且不断更新自己数据的这个“易变”的特点,才使得DNS攻击变得异常容易。

其实之前GFW不也是大量采用DNS劫持的手段嘛。那时候我就想过,如果DNS服务器能够分成动态和静态两套互补的体系,则安全性更强不易遭受攻击。(当然政府直接施压你就没辙了。。这个属于“社会工程学”范畴。。)静态DNS是记录长期稳定的DNS路由,不能轻易更新,也不会遭受突如其来的DNS污染。因为新来的DNS不会被他识别为“稳定”的,因此他会拒绝更新。而动态DNS部分则如传统DNS般不断更新。这样一旦出现DNS不稳定的情况,可以通过人工介入的方法(除了可以让管理员手动开启外,也可以考虑让访问用户举报这种方式。但是举报者又可使用DDOS来进行攻击,但攻击结果也不过是转成静态路由而已,对他们的好处不大),强制使用静态路由。当然使用了较为稳定的静态路由的缺点就是速度可能会严重下降。但这也是为了安全性而做的一点牺牲嘛。DNS机制没有仔细研究过,没办法直接在这里提出相应算法和解决方案。不过相信这个思路肯定是可行的。如果研究生期间还没出现类似产品或论文的话,我可以考虑做这方面的研究哈哈。。

另外,除了公共DNS服务可以静态化之外,个人host也可以静态化。这个我也很早就在想了,可惜一直没实际做出来。就是不断读取浏览器访问的域名和IP,然后全都记录下来。一旦发现域名劫持,可以把过去记录下来的域名/IP对导入host中去做一些尝试。一般来讲,封锁IP的速度会慢于域名劫持。所以在域名劫持之后原来的这些IP或许还有可以访问到的。当然啦,如果政府真的下力打击的话,这些IP早晚也还是会封光。。不过,至少。。还有喘息的机会嘛留一丝丝。。

对了对了,补充一点,本地记录IP,对一些公共DNS崩溃造成网络拥堵的情况也能缓解不少问题。甚至每个PC都可以成为一台小型DNS服务器。这样就像p2p的思路一样,大家互帮互助来进行DNS解析。当然大型公共DNS服务还是主力啦。

好吧今天看到DNS争夺战这么激烈,忽然想到以前想过的一些idea,算是做个记录吧。