分类 Network 下的文章

对 firewalld 终于失去信心了

各种坑,比如 iptables 命令执行一旦出错,后面的不会执行,如果内核少个模块,就会导致防火墙完全封死外面进不去的状态。在 openvz 主机上面简直是灾难。

从其他 fw 框架里面随便挑了一个 shorewall 把他替换掉,一下就清净了。

数据安全,从异地备份开始

话说我的 blog 也 down 了有数次了,每次 down 掉以后都好久起不来,其中很大程度上是 blog 的数据没有及时备份出来,用以前的备份开的话,中间的就都丢了,回头合并又是个麻烦事情。

最近有点时间,在北京机器上的 MySQL 配置了一下,让他作为从库从唐山机器的 MySQL 同步下来 blog 的数据,只要网络不是太烂,基本可以做到实时备份了。

当然,从公网上用 MySQL 复制存在各种风险,不过实际能做的事情不多,只能用 iptables 保护,只对同步机器开放 MySQL 端口;关闭除同步账户之外其他所有用户的网络访问权限;同时使用 MySQL 内建的 SSL 功能防止监听;最后复制用的账户要求 SSL 发行者校验,只相信北京机器发过来的 SSL 连接请求。

不过现在异地备份还是太近,不满足 1000km 的基本要求,无法抵抗华北平原地震,要不要再在美国买个便宜空间专门定期上载打包后 gpg 加密的备份数据呢?

郁闷,折腾了这么久,才发现居然是双工的问题

这个机器最早刚拿到机房的时候,发现不知道为啥,启动时候总是协商成 10M 半双工,但是交换机和网卡显然都是 100M 的,于是只好在 rc.local 里面加了一条 mii-tool -F 100baseTx-FD eth0 , 这么一直用了一年多也没有太大问题。后来因为一些原因,这个机器 down 了又有一年多,再起来以后就总觉得这个机器网络慢,在 shell 上面执行比较大输出的操作,都会一卡一卡的,一直没搞明白是为什么。这段时间为了解决访问 blog 慢的问题,对 web 进行了不少优化,gzip, expire 啥的都设了一遍,有一点提升,但是没有特别明显的效果。因为没有太多时间,所以就懒得管了。

今天稍微清闲了一点,就仔细研究了下这个问题,发现从同一内网用 ab 压 17K 的静态文件最好情况下只能到 40 个每秒左右,大文件则是只能到 1.8MB/s,这明显有问题。但是 ping 也看不到什么丢包。

习惯性的看 dmesg 的时候,发现网卡每次启动时候还是会协商成 10M 半双工,这就奇怪了,机器经过这两次倒腾,机箱换了,网卡也换了,网线也换了,交换机上网口也换了,为啥还是 10M 半双工,莫非这个交换机其实只能上半双工?于是 mii-tool 重新调整为 10M 半双工,马上 shell 就不卡了。

但是 10M 半双工虽然 shell 不卡,带宽实在比较不能够接受,于是尝试了一下 100M 半双工,貌似效果很好, HTTP 大文件同一内网能到 8MB/s, ab 那个 17K 的静态文件可以压到 400 个左右,这样看起来就还算凑合了,虽然总的来说不是很高,但对这个破机器,还是可以接受的结果。

最后的结果就是 rc.local 里面改了一行

mii-tool -F 100baseTx-HD eth0

至于为什么不能上百兆全双工,这问题也懒得研究了,先这样用着好了,我要求不高。

另,这机器以前的网卡是 3C905B(3c59x),后来用了几天 8139(8139too), 现在是 DFE-530TX(via_rhine),都不是什么特别好的网卡,不过都协商成 10M 半双工也真是够那个的了。。

在 Fedora 9 下面配置 ISATAP IPV6 tunnel

Fedora 9 终于换成了 2.6.25 kernel,2.6.25 支持 ISATAP 方式的 ipv6 tunnel 接入。于是把自己的机器简单配置了一下支持 IPV6

1: 保证 kernel 支持 ipv6
2: 编辑 /etc/sysconfig/network ,增加下面这行

IPV6_DEFAULTGW=your ipv6 gateway

3: 编辑 /etc/sysconfig/network-scripts/ifcfg-sit1, 内容如下

DEVICE=sit1
ONBOOT=yes
IPV6INIT=yes
IPV6TUNNELIPV4=your isatap tunnel IP
IPV6TUNNELIPV4LOCAL=your local ipv4 ip
IPV6ADDR=your ipv6 address

4: ifup sit1

UPDATE: 我还没有试验过这个在 F9 上重启是否有效,但在 centos 5.1 上面不好用,似乎 ifup-sit 不会创建对应的 sit1 设备,先得手动创建以后才有效。

启用 reCAPTCHA

CAPTCHA 这名字听起来很诡异,其实中文里面我们管他叫图片认证码,是用来防机器人注册发帖的。现在互联网上面机器人遍地都是,没有个认证码挡着,用不了多久就会被灌满垃圾广告。这东西最早似乎是卡内基梅隆大学的人研制的,然后把技术提供给了 Yahoo 之类的地方。如今 CAPTCHA 可谓是遍地开花,各种开源的商业的实现一把一把,还有 QQ 的中文认证码之类扩展版本。

这个小 blog 也尝试过一些图形认证码插件,比如 SecureImage 之类,但是最后还是放弃了,SecureImage 的性能实在是不敢恭维,Yodao 和 Baidu 不知道为什么看上生成图片的那个链接了,总是没完没了地抓它,虽然频率并不是非常高,大概也就每秒一次,但是系统的负载已经很高了。最后我终于无法忍受,换成了另外一个基于 Javascript 计算的 WP-HashCash。然后我就发现原来支持 Javascript 的机器人已经很多了,以前用 SecureImage 的时候,几乎没有 spam,WP-HashCash 用了以后每天进来我都要从一大堆留言里面捡出来有用的批准。实在是非常不爽。

reCAPTCHA 是卡内基梅隆大学的一帮人搞出来的,它的技术并没有什么先进之处,但是创意有点意思。世界上面有很多将图书电子化的计划,基本是把书籍扫描了以后用 OCR 软件识别。有些情况下面 OCR 软件自己觉得某些词的识别结果并不是非常有把握。通常情况下面是通过雇佣劳力来肉眼校对。reCAPTCHA 项目认为这个工作不妨交给全世界大量填写认证码的人来完成。

一般图形认证码系统都是只生成一个单词的,reCAPTCHA 生成的图片里面有两个单词,其中一个是机器生成的,有正确结果的单词,另一个则是扫描出来的有问题的单词,这个词没有正确结果。如果用户提交上来的结果里面机器生成的那个是对的,那么系统就认为另外一个也很有可能是对的。一幅扫描图片展示给多个用户如果结果都是一样的,他就将这个结果作为最终校对结果。这样就实现了利用人力来分布式校对文稿的目的。更具体的细节可以看 http://recaptcha.net/learnmore.html

reCAPTCHA 对一般用户使用没有限制,但是为了防止滥用,也要像 Google Maps API 那样用一个 Key 来限制一下,在 recaptcha.net 上面可以免费申请。同时还有常见系统的认证插件,比如这个 blog 使用的就是那里提供的 wordpress 插件。

PS: 各位留言的时候要注意一下,因为 reCAPTCHA 的目标是校对书籍,因此认证码是大小写敏感的,有时候你还能看到里面有标点符号,这时候也麻烦你把标点符号输入了。虽然这时候基本能判断出来有标点符号的那个是扫描图片,就算填错也可以过认证,但是出于校对书籍的需要,还是填写全面比较好一些了。

最近评论

时光机

其他