Nov 30, 2010

OpenDNS和Google DNS,不一定真的适合我们

为什么不用?用了解析速度快,能防ISP劫持,能翻墙,能这能那。真的是这样吗?

1.大家最关注的,翻墙,防止DNS被劫持。

资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果

正常请求一个被劫持的域名,当然是劫持没商量了

$ dig hen.bao.li 
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15 
;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Mon Dec  7 23:18:48 2009 
;; MSG SIZE  rcvd: 44

$ dig hen.bao.li
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hen.bao.li. IN A
;; ANSWER SECTION:
hen.bao.li. 85697 IN A 78.16.49.15
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec  7 23:18:48 2009
;; MSG SIZE  rcvd: 44

然后再看用了Google Public DNS后,照样劫持你没商量
$ dig @8.8.8.8 hen.bao.li 
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485 
;; flags: qr aa rd ra
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15 
;; Query time: 75 msec 
;; SERVER: 8.8.8.8#53(8.8.8.8) 
;; WHEN: Mon Dec  7 23:20:58 2009 
;; MSG SIZE  rcvd: 54
 
我们看看国外机器得出的真实结果
# dig @8.8.8.8 hen.bao.li 
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li 
; (1 server found) 
;; global options:  printcmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44 
;; Query time: 252 msec 
;; SERVER: 8.8.8.8#53(8.8.8.8) 
;; WHEN: Mon Dec  7 23:25:12 2009 
;; MSG SIZE  rcvd: 44
 
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。 2.解析速度快 Google DNS解析速度是挺快的,但OpenDNS就未必了
$ dig @208.67.222.222 http://www.dnspod.com 
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404 
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;www.dnspod.com. IN A 
;; ANSWER SECTION: http://www.dnspod.com. 600 IN CNAME http://www.dnspod.com.cdnudns.com. http://www.dnspod.com.cdnudns.com. 300 IN A 61.172.249.96 http://www.dnspod.com.cdnudns.com. 300 IN A 218.244.147.137 
;; Query time: 608 msec 
;; SERVER: 208.67.222.222#53(208.67.222.222) 
;; WHEN: Mon Dec  7 23:29:01 2009 
;; MSG SIZE  rcvd: 101


3.最重要的问题,访问网站真的快吗?

相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。 大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。 网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。

智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。 但如果这个时候,用户用的是OpenDNS或者Google DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。 返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。 本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。

拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
$ dig http://www.google.com
...省略部分内容...
;; ANSWER SECTION:
http://www.google.com.  48102 IN CNAME http://www.l.google.com.
http://www.l.google.com. 300 IN A 216.239.61.104

如果我用了OpenDNS的话,那么我得到下面的结果 
$dig @208.67.222.222 http://www.google.com
...省略部分内容...
;; ANSWER SECTION:
http://www.google.com.  30 IN CNAME google.navigation.op

4. 怎么使用?

那么到底这两个DNS服务器有没有办法是用呢?有!这是一个肯定的回答。

首先,被污染的域名返回的地址在一个范围内,据我自己的收集在10个IP左右。首先向本地的DNS请求,当返回结果在这些地址中时,再通过代理的方式取得结果

或者使用类似autoproxy的方式,匹配列表的域名通过代理,其余均直接使用本地服务器解析。而我自己开发的smartVPN就是使用这种方式工作,收到正确的地址后再加入到路由走VPN,达到最节省VPN流量的目的。

Nov 28, 2010

UTF-8、Unicode和BOM问题

经常遇到的问题是,使用了BOM编码后,PHP脚本执行错误,或使用fileStream读取并转换为XML会报错"The markup in the document following the root element must be well-formed."。

一、介绍
UTF-8 是一种在web应用中经常使用的一种 Unicode 字符的编码方式,使用 UTF-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽。

UTF- 8签名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记。BOM,是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测, 而把它当作正常字符处理。微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。也就是说一个UTF-8文件可能有BOM,也可能没有BOM。

只有一个BOM,是不会有问题的。如果多个文件设置了签名,在二进制流中就会包含多个UTF-8签名,也就是导致XML转换失败的"root element must be well-formed"原因。

二、查看和转换
既然一个UTF-8文件可能有BOM,也可能没有,那该如何区分呢?

只要用带十六进制编辑方式的软件,例如,用UltraEdit-32打开文件,切换到十六进制编辑模式,察看文件头部是否有EF BB BF。有,则为带BOM方式。Windows自带的notepad记事本,保存为UTF-8时,默认就带BOM。

转换的方法有很多,常见的UltraEdit-32或NotePad++都可以,以UltraEdit-32为例。打开文件后,选择“另存为”,在“格式”一栏中有如下选择:

另外,DreamWeaver CS3也有类似的选项,在“首选项”中,如果选择 Unicode (UTF-8) 作为默认编码,则可以选择“包括 Unicode 签名 (BOM)”选项,以在文档中包括字节顺序标记 (BOM)。否则,不带BOM:

三、其他知识
http://blog.csdn.net/thimin/archive/2007/08/03/1724393.aspx 一文了解到:
所谓的unicode保存的文件实际上是utf-16,只不过恰好跟unicode的码相同而已,但在概念上unicode与utf是两回 事,unicode是内存编码表示方案,而utf是如何保存和传输unicode的方案。utf-16还分高位在前 (LE)和高位在后(BE)两种。官方的utf编码还有utf-32,也分LE和BE。非unicode官方的utf编码还有utf-7,主要用于邮件传 输。utf-8的单字节部分是和iso-8859-1兼容的,这主要是一些旧的系统和库函数不能正确处理utf-16而被迫出来的,而且对英语字符来说, 也节省保存的文件空间(以非英语字符浪费空间为代价)。在iso-8859-1的时候,utf8和iso-8859-1都是用一个字节表示的,当表示其它 字符的时候,utf-8会使用两个或三个字节。

一段关于BOM的更详细说明,来自这里
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

使用GeoIP在Wireshark中显示IP的地理位置

本来想直接贴视频,结果发现搞不定~~

那还是贴地址吧:
http://www.securitytube.net/Setting-up-GeoIP-to-Track-IP-Address-Locations-in-Wireshark-video.aspx

Nov 25, 2010

Cisco ISP Essentials

思科网站上下载的免费电子书,不过我忘记下载链接了……囧

点击下载

Nov 24, 2010

PPTP和L2TP的区别

PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同:

1.PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。

2.PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。

3.L2TP可以提供包头压缩。当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。

4.L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道。

总之,对于一般的使用者来说,L2TP有更强的穿透率,更好的压缩,更好的加密(双层加密),所以如果你在使用PPTP失败的时候可以尝试L2TP。

中国城管军歌

中国城管不愧是最强大的陆地兵种

Nov 22, 2010

架设PPTP VPN及在Linux上远程连接VPN

本文所涉及的运行环境:远程服务器为 VPSLink 上低配置 Xen VPS ( 注意,OpenVZ VPS 是不能安装 PPTP VPN 的),Linux 系统为 Ubuntu 9.04 ,本地服务器为 Ubuntu Server 9.10 。

1. 如何快速搭建一个VPN(pptp)
# 安装服务器端软件
apt-get install pptpd

# 配置IP地址范围,编辑/etc/pptpd.conf,在最后添加如下地址:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

# 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。
# 增加一个用户,编辑/etc/ppp/chap-secrets,在下面增加类似的条目:
username pptpd password *

# 重启pptpd服务
/etc/init.d/pptpd restart

# 编辑:/etc/ppp/options,在里面找一下”ms-dns”项目:
ms-dns 8.8.8.8
ms-dns 8.8.4.4

#允许转发,编辑/etc/sysctl.conf,看一下net.ipv4.ip_forward参数是不是1,或直接执行以下命令来查看
sysctl net.ipv4.ip_forward

# 如果输出为 0 的话就要修改 /etc/sysctl.conf 中的 net.ipv4.ip_forward ,把 0 改为1,然后执行以下命令。
sysctl -p

# 最后,运行一下这条命令来打开iptables的转发支持:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 并把这两条加入到 /etc/rc.local 中的 exit 0 行前面,这样重启后就无需再执行了。

# 好了,PPTP VPN 到此就架设好了,你现在可以用 Windows 自带的 VPN 连接工具来连接了,这个应该非常简单。那么下面我再说说如何在 Ubuntu 上手工配置 PPTP VPN 连接吧。

2 .如何在 Linux 上连接 PPTP VPN
# 安装 Linux 上的 pptp 客户端
apt-get install pptp-linux

# 把下面两行加入 /etc/rc.local , 放在 exit 0 这一行的前面
/usr/sbin/pptpsetup –create lable –server ip –username username –password password –encrypt
/usr/sbin/pppd call lable

# 说明:这两行命令是最简便的建立 PPTP 连接方式。

Label: 用户自定义
IP: 是 VPN 的 IP 地址
Username 及 Password :登录 VPN 的用户名和密码

# 把下面两行加入 /etc/ppp/ip-up 中,删除默认网关及把 VPN 服务器作为默认网关,也就是改变路由策略,把所以传输流量通过 VPN 线路来走。
/sbin/route add default gw 192.168.0.1
/sbin/route del default gw 原来的网关 // 原来的默认网关地址可通过 route 命令来获取

# 另外,如果你想把此服务器作为网关服务器的话,那就按照前面架设 PPTP VPN 一节中的方式,设置 net.ipv4.ip_forward 参数来打开包转发。并把下面两行加入到 /etc/rc.local 中。
/sbin/iptables -t nat -A POSTROUTING -s 内网IP/24 -o ppp0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 重启服务器,你可以用 ifconfig 看一下,会多出一个 ppp0 的网络接口了。另外,你可以 traceroute twitter.com 看一下,是否通过 ppp0 的网关出去的,如果是的话,就说明工作正常。

# 注意:在作网关服务器的时候,建议使用 Google 的 DNS ,国内很多 DNS 被污染了,无法正常解析 Twitter 等网站。

# 修改 /etc/resolv.conf 中,改为如下两行
nameserver 8.8.8.8
nameserver 8.8.4.4

CentOS 5 VPS配置pptpd为VPN服务器

VPS一般每个月也用不完流量,不用也是浪费,所以我们要榨干VPS,哈哈。(以下命令建立在64位CentOS 5上 ,并且 pptpd VPN需要内核支持mppe)

下面为配置命令:

先安装ppp和iptables.
yum install -y ppp iptables
然后下载pptpd.

64位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm

安装pptpd

64位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

接下来编辑/etc/pptpd.conf文件,去掉下面两行的注释或者直接添加这两行
vim /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

添加VPN用户和密码,按照下面格式.密码后的*号保留.
vim /etc/ppp/chap-secrets
username pptpd password *
设置DNS为Google的DNS.
vim /etc/ppp/options.pptpd
找到ms-dns改成.
ms-dns 8.8.8.8
ms-dns 8.8.4.4
编辑/etc/sysctl.conf文件,找到”net.ipv4.ip_forward=1″这一行,去掉前面的注释。没有就添加上.
net.ipv4.ip_forward=1
运行下面的命令让配置生效。
sysctl -p
重启pptpd服务
/etc/init.d/pptpd restart
最后开启iptables转发
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
最后设置iptables和pptpd开机自动启动
chkconfig pptpd on chkconfig iptables on
好了,下面可以用VPN自由呼吸了。

Debian/Ubuntu下搭建OpenVPN与客户端配置教程

下面介绍如何在Debian系统搭建OpenVPN服务器端以及如何配置Windows客户端。

服务器端
1.至少拥有一台VPS或独立服务器
2.基于Openvz的VPS只能安装OpenVPN,XEN可安装PPTP,但不在本文讨论范围不再赘述
3.检验是否支持Tun/Tap和nat,以Root登陆输入
cat /dev/net/tun
若返回cat: /dev/net/tun: File descriptor in bad state 则说明tun可用输入
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
若返回iptables: No chain/target/match by that name 则说明nat模块正常可用
若以上返回信息不符请联系客服要求开通Tun/Tap和iptable nat。
4.修改服务器DNS
vi /etc/resolv.conf
修改DNS为:
nameserver 8.8.8.8
nameserver 8.8.4.4
5.本想一步步写,但经友人提醒有个VPSNOC John Malkowski的Debian OpenVPN脚本基本我下面的步骤雷同且我的教程步骤过于复杂,考虑安装方便所以放弃原教程奉上一键安装脚本。
wget http://vpsnoc.com/scripts/debian-openvpn.sh
chmod +x debian-openvpn.sh
./debian-openvpn.sh
稍等片刻,依次出现需要填写内容:
国家(两个英文字母)
省份/州(两个英文字母)
城市(英文字母)
组织名称 (英文字母)
部门名称 (英文字母)
通用名  (英文字母)
姓名  (英文字母)
邮箱密码(英文数字组合)
凭证名  (英文字母)
按两次Y后,安装完成。
安装完成后root目录下会出现一个keys.tgz压缩包,使用Tunnelier或WinSCP将压缩包下载至本地,待用。
6.生产客户端证书
cd /etc/openvpn/easy-rsa/2.0
../vars
./build-key user1

将user1换成期望用户名,按照步骤5中信息填写方式,完成证书生成。至此服务器安装基本完成。

Windows客户端配置
1.下载OpenVPN:http://www.openvpn.net/index.php/open-source/downloads.html 下载最新版本的Windows Installer安装包。
2.运行安装,建议win7/vista 将openvpn安装至非系统分区,如:D:\net\openvpn。按过程中会出现安装网卡驱动(型号为:TAP-WinXX Apapter V9)安全警告,确认继续。
3.修改DNS,注意:是修改新增加的这个虚拟网卡后出现的新连接,如果你不知道是哪个无所谓,把所有连接的DNS都设置成OpenDNS或者GoogleDNS吧,步骤:
Win7 https://store.opendns.com/setup/operatingsystem/windows-7
Vista https://store.opendns.com/setup/operatingsystem/windows-vista
XP https://store.opendns.com/setup/operatingsystem/windows-xp
推荐使用Google DNS :8.8.8.8和 8.8.4.4替换OpenDNS的208.67.222.222 208.67.220.220。
4.解压从服务器上down下来的keys.tgz,解压至openvpn安装目录下的config目录,如:D:\openvpn\config。
5.运行桌面上的OpenVPN GUI图标(如果是win7/vista系统请以管理员身份运行)右击右OpenVPN图标点Connect
6.稍等出现分配完成后说明链接成功。
进入http://www.dnsstuff.com 测试下吧。

配置新用户
OpenVPN一个证书只能对应一个用户,如果你想给朋友开通OpenVPN需要现在服务器上配置一个客户端证书(服务器端配置的 6.生产客户端证书),然后修改*.ovpn文件,将其证书和配置打包发给你的朋友,并教其修改连接DNS,使用OpenVPN。
下面分步骤细说:
1.按照服务器端配置的步骤 6,生成客户端新证书
2.使用Tunnelier或WinSCP前往/etc/openvpn/easy-rsa/2.0/keys并下载刚生成的新证书,如:步骤 6中输入的是
./build-key user1

那么/etc/openvpn/easy-rsa/2.0 /keys文件夹下的应该会新增user1.crt,user1.key,user1.csr三 个文件,将这三个文件连同*.ovpn和ca.crt、ca.key三个文件一起下载到本地,用EditPlus或其他编辑编辑器打开下载下来 的*.ovpn文件将其中的
cert client1.crt
key client1.key
修改为:
cert user1.crt
key user1.key
保存,打包发送给你的朋友。
3.教其安装OpenVPN客户端,并解压*.opvn配置文件和证书至openvpn安装目录下的config目录中
4.教其修改DNS和使用OpenVPN。

OpenVPN 简介

OpenVPN 是一个具备完全特征的SSL VPN解决方案,能够进行大范围的配置操作,包括远程访问、站点-站点间VPN、WiFi安全及企业级远程访问解决方案,支持负载均衡,错误恢复及细粒度的访问控制。

OpenVPN通过使用工业标准SSL/TLS协议 实现了OSI 2层及3层安全网络扩展,支持灵活的基于证书、智能卡的客户端认证方法,允许通过在VPN虚拟接口上应用防火墙规则实现用户及组访问控制策略。 OpenVPN并非一个Web应用代理,也不能通过Web浏览器进行操作。

作为一个不错的关于OpenVPN的概念介绍,可以参考James Ynan在Linux Fest Northwest 上2004年发表的程序注释――理解用户空间VPN:历史、概念基础及实际应用(Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage)。也可以参考Charlie Hosner的OpenVPN及SSL VPN革命(OpenVPN and the SSL VPN Revolution)。

OpenVPN 是一个开源项目,遵从GPL许可协议。商业许可对重新发布其基于OpenVPN的应用程序的公司也有效。获得更多信息请联系info@openvpn.net。

OpenVPN 能够运行于Linux、Windows 2000/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。

通过OpenVPN,你可以:
  1. 在任意IP局部网络或虚拟以太网适配器上通过单个UDP或TCP端口建立隧道;
  2. 使用一或多台机器配置可裁剪的、负载均衡的VPN服务器群以处理成千上万的来自VPN客户端的动态连接;
  3. 能够使用在OpenSSL库中所提供所有的加密、认证及证书特性以保护私有网络在Internet网络上的数据传输;
  4. 使用OpenSSL库所支持的任意加密算法、密钥长度或HMAC数字签名(用于数据报完整性检查);
  5. 先把基于静态密钥传统加密方法或基于证书的公钥加密方法;
  6. 使用静态、预先公有的密钥或基于TLS的动态密钥交换;
  7. 使用实时的自适配压缩及流量整形以管理链路带宽分配;
  8. 为动态公共点(如DHCP或拨号客户端)提供隧道传输;
  9. 无需显示定义防火墙规则为面向连接的防火墙提供网络隧道传输;
  10. 基于NAT的网络隧道;
  11. 通过虚拟的tap设备创建安全的以太网桥;
  12. 在Windows或Mac OS X系统上通过GUI界面控制OpenVPN。

OpenVPN与其它VPN有何区别?

OpenVPN的主要特征包括跨平台的可移植性、优秀的稳定性、成百上千或成千上个客户端支持的可伸展性、相对简单的安装过程、支持动态IP地址及NAT。

OpenVPN 提供一个设计为易于针对站点定制的可扩展的VPN框架,例如提供发布自定义安装包到客户端,或通过OpenVPN插件模块接口支持可选的认证方法(例如 openvpn-auth-pam 模块允许OpenVPN使用任意PAM认证方法认证客户端,这种方法可以单独使用,也可以与基于X509证书结合使用以进行认证)。

OpenVPN 提供一个管理接口,可以用于远端控制或中央控制一个OpenVPN守护进程。管理接口也可以用于开发基于GUI或web的前端应用程序。

在Windows平台上,OpenVPN能够使用Windows Crypto API从智能卡上读取证书或私钥。

OpenVPN 使用设计用于可保护被动攻击和主动攻击的工业强度的安全模型。OpenVPN的安全模型基于SSL/TLS进行会话认证及使用IPSec ESP协议用于基于UDP的安全隧道传输。OpenVPN支持X509 PKI (public key infrastructure)用于会话认证,TLS协议用于密钥交换,OpenSSL的加密算法无关的EVP接口用于加密隧道数据,HMAC-SHA1 算法用于认证隧道数据。

OpenVPN建立为可移植的, OpenVPN可以运行于Linux、Solaris、OpenBSD、FreeBSD、NetBSD、Mac OS X及Windows 2000/XP,因为OpenVPN作为用户空间守护进程编写而非内核模块或对IP层的复杂变更,移植操作的简易性是值得留意的。

OpenVPN易于使用,通常,一个隧道的建立和配置可以通过一个单独的命令完成(无需任何必要的配置文件)。OpenVPN文档包含了的示例进行了详细解释。

OpenVPN 经过严格设计,并在不可靠的网络中进行了强度测试。OpenVPN的一个主要的设计目标就是在正常操作和错误恢复情况下IP层都能够快速响应。这意味着如果IP层断开5分钟,当它再次恢复时,隧道流量能够立即恢复,即使动态密钥交换在这期间已经过期。

OpenVPN 有着健壮的模块设计。所有加密都由OpenSSL库处理,所有IP隧道功能都由TUN/TAP虚拟网络驱动提供。

模块化的好处是显而易见的,例如,OpenVPN可以与新版本的OpenSSL库动态链接并立即能够使用其在新版本中所提供的新功能。例如,当 OpenVPN基于最后版本的OpenSSL(0.9.7)编译时,它能够使用新的加密算法,如AES-256(高级加载标准,256位密钥),以及 OpenSSL特定目的的硬件加速器优化加密、解密及认证性能的加密引擎功能。

同样地,OpenVPN的用户空间设计易于移植到任何包含TUN/TAP虚拟网络驱动的OS中。

OpenVPN 运行速度很快,在Pentium II 266MHz机器上运行Redhat 7.2 ,使用基于TLS的认证方法,Blowfish加密算法,SHA1 用于隧道数据认证,当隧道传输一个巨大的,经过预先压缩文件的FTP会话时,OpenVPN达到了每秒(CPU时间,包括内核及用户态时间)1.455MB的收/发传输速度。

OpenVPN提供了用于控制VPN隧道的安全参数的选项,同时提供了用于保证服务器本身安全的选项,例如—chroot用于限制OpenVPN守护进程能够访问的文件系统部分,–user 及—group选项用于降低守护进程在初始化之后的优先级,–mlock用于确认密钥原始内容及隧道数据从不被分页到磁盘上,从而避免被后期恢复。

为什么先把TLS作为OpenVPN的根本认证及密钥协商协议呢?TLS是SSL协议族的最后成果,最初由Netscape开发用于他们最初的安全 web浏览器。多年来,TLS及其SSL前身已经在web上得到了广泛应用,并得到了深入的弱点分析。这些分析使得它不断被加强,从而形成如今的协议,SSL/TLS被认为是最强壮及最成熟的安全协议之一。因此,我们相信TLS是作为VPN产品认证及密钥交换机制的极好的先把。

OpenVPN 支持IPSec或PPTP吗?

目前被广泛应用的VPN实现中有三个主流:SSL、IPSec及PPTP。OpenVPN是一个SSL VPN,因此并不与IPSec、L2TP或PPTP兼容。

IPSec协议设计为内核空间IP栈的修正,不同的操作系统需要其自身的IPSec实现。

相对而言,OpenVPN的用户空间实现允许跨操作系统及处理器体系、防火墙及NAT友好操作、动态地址支持、多协议支持(包括协议桥接)的移植。

优点与缺点并存,OpenVPN的主要优点在于可移植、易于配置及与NAT和动态地址兼容。OpenVPN的安装和使用与其它安全相关的守护进程软件,例如SSH相似。

由于历史因素,IPSecr的优点在于获得了众多厂商的支持,虽然OpenVPN也逐渐开始致力于硬件设备的支持。

PPTP协议的优点在于其在Windows平台预装了客户端,密码分析专家已经透露了其安全弱点。

OpenVPN符合标准吗?

作为一个用户空间VPN守护进程,OpenVPN与SSL/TLS、RSA证书及X509 PKI、NAT、DHCP及TUN/TAP兼容。

OpenVPN与IPSec、IKE、PPTP或L2TP并不兼容。

Q: OpenVPN 隧道能够基于TCP连接传输吗?
A: 是的,OpenVPN 1.5以上版本均支持基于TCP连接的隧道传输。

Q: 我是否能够使用web浏览器作为OpenVPN客户端?
A: 不可以,虽然OpenVPN使用SSL/TLS协议用于安全传输,OpenVPN并不是一个Web应用代理。它是一个OSI 2层或3层Internet网络隧道解决方案,要求OpenVPN同时安装于客户端和服务器端。

Nov 19, 2010

smartVPN项目开发记录 (四)

仔细想了一下,比起把虚假地址指向黑洞外,先将需要代理的地址放入代理更加重要。所以先不考虑黑洞路由的功能了。

原来的代码换成了多线程去处理后,也老崩溃。自己不懂太多的编程,不过我认为用socket中提供的ThreadingUDPServer比自己去实现肯定要好得多。更改了基本所有代码后,崩溃的情况明显减少。

代码逻辑部分也调整了一下,原来对于需要代理的域名,也要做本地请求,然后从中剔除污染的地址。如果所有本地返回的结果都是污染过的,那就返回远程服务器的结果。不过后来自己想完全没这必要,对于需要代理的域名,直接使用远程服务器的结果,不需要的使用本地服务器结果。返回的远程结果提取出记录,由另外的线程处理。这样对效率是由提升的(至少我直觉如此)

而针对可能有很多人使用免费限流的VPN时,可能会同时拥有多个VPN情况(我就是如此),加入了支持多个VPN的功能。比如有A,B,C三个VPN,那么第一条路由指向A,第二条指向B,第三条指向C,第四条指向A……这样可以相对比较均匀的使用多个VPN的流量。

2010年最热门的十大网络流行语

1、 给力
给力读音为,gěi lì,中国北方的土话,表示给劲、带劲的意思。“给力”一词最初的火热源于日本搞笑动漫《搞笑漫画日和之《西游记:旅程的终点》》中文配音版中悟空的一句抱怨:“这就是天竺吗,不给力啊老湿。”所谓“不给力”就是形容和预想目标相差甚远,而“给力”一般理解为有帮助、有作用、给面子。
查看出处搞笑漫画日和之《西游记:旅程的终点》
2、神马都是浮云
“神马”并非一匹马,而是“什么”的神马都是浮云谐音。网友们用搜狗输入法打“什么”时,习惯用拼音首字母“S.M”代替,因为打字飞快,常在打“什么” 时打错,打出一个“神马”来,“神马”一词就像曾在网络红极一时的“虾米”一样,走的同样是谐音路线,而这个词语也迅速代替了“虾米”,成了时下最热门的 流行语。浮云的意思即虚无缥缈,转瞬即逝,意为“都不值得一提”。
它的流行源于红遍网络的“小月月”事件,2010年国庆期间,一则名为《感谢这样一个极品的朋友给我带来这样一个悲情的国庆》的帖子中,“小月月”横空出 世,以极其诡异的言行雷倒众生,并让网友们将“神马”和“浮云”联系在了一起,诞生诸如: “用任何词语来形容她,都根本乏味得很,神马网络豪放女,浮云!都是浮云!”、“小月月还能保持着晕的状态靠在他胸口,神马晕倒无意识论,统统是浮云! ”的感叹。而“神马”和“浮云”的神奇之处,则是当这两个词结合在了一起,便可组成万能金句,推之四海而风靡。
查看出处小月月脱水版:极品女小月月游世博完整版更新
3、我勒个去
“我了个去”(或“我去”)这种用法最近猫扑很流行。可以说是一种调侃式的笑骂的。有种无奈的“我 靠”的意思。   就是个叹词,无实际意义,相当于古代的“呜呼哀哉”   东北方言   来源于日和漫画中 平田的世界,中文配音版。
查看出处搞笑漫画日和之《平田的世界》中文配音版
4、ungelivable
虽然老外看不懂,但是ungelivable在中国网友中却大受欢迎。“昂给力围脖!”网友们不仅第一时间就弄懂了它的发音,而且举一反三,“不给力是 ungelivable,给力就是gelivable。”“哈哈,这单词实在太gelivable了!”近日,各知名微博对此进行纷纷转载,转发量很快破 万。网友戏称,ungelivable可能是有史以来传播速度最快的英文单词。流行源于网络动画 如果gelivable真被收录进英语词典, 那首先要归功于中文原词“不给力”。据介绍,“给力”一词可能源自东北或闽南方言,有很棒、很精彩的意思,现多用来形容事物“够劲”、“使人振奋”、“感 到力量”等。
5、羡慕嫉妒恨
“羡慕嫉妒恨”,一语五字,蕴含着多么丰富的内容啊!恨源于嫉妒,嫉妒源于羡慕——换言之,恨源于爱,嫉妒源于不如人。对一个人来说,被人嫉妒即等于领受 了嫉妒者最真诚的恭维,是一种精神上的优越和快感;而嫉妒别人,则会或多或少地透露出自己的自卑、懊恼、羞愧和不甘,对自信心无疑是一个打击。学到知羞 处,才知艺不精,一个人正是透过嫉妒这种难于启齿的情感,才真切地意识到了自己的不如人处,临渊羡鱼,不如退而结网。
6、非常艰难的决定
续2010年11月3日晚间腾讯发表了“致广大QQ用户的一封信”称“将在装有360软件的电脑上停止运行QQ软件”,随后网民开始模仿腾讯公开信改写“QQ体”,其中最经典台词为“我们作出了一个非常艰难的决定”令人啼笑皆非。
查看出处QQ体:他们做了一个艰难的决定
7、蒜你狠系列(豆你玩、姜你军、煤超疯,苹神马……)
2010年11月2日,国家发改委公布了十月份城市食品零售价格监测情况。在监测的31种产品中,近80%价格上涨 食品接连涨价,从“蒜你狠”到“姜你军”,再从“糖高宗”到“油你涨”、“苹什么”接力不断,新词也层出不穷。为了应对,不少人还成了“海豚族”
(海量囤积一族)。就像一副推倒的多米诺骨牌,除了农产品价格集体上涨外,人们发现,有关吃穿住行的价格都在逐渐呈上升趋势,物价因素正在影响着每个人的生活
蒜你狠段子蒜你狠,豆你玩,姜你军,苹什么?油他去! 铜心协力,铝创新高,金金有味,锌锌向荣,锂直气壮,棉里藏针,糖吉诃德,稀已为常,煤红了,瓜瓜叫,就茶你!之后,鸽子蛋也吃不起了,两月涨价50%,鸽子肉快成格格肉了。!堪称“鸽你肉”。鸽,已不是传说。
8、有关部门
有关部门就是什么都管、什么也都不管的部门。
有了成绩和好处的时候,这些部门就会明确地站出来,这些成绩与其有关,所以好处也应当有份;当出现问题和需要处罚时,这些部门就马上不见了踪影,谁都不知道他们的名字,这样发生的问题就可以找个替罪羊来承担责任。
有关部门的电话号码是 1推625
地址在中国朦胧省模糊市不定大街零号
9、闹太套
英文“not at all”的中文音译。歌手黄晓明在演唱《One World One Dream》时,由于对not at all的发音酷似“闹太套”而遭网友调侃,此词也因此成为网络流行语之一。
10、亚克西
亚克西是什么意思:新疆少数民族维吾尔族语的一句口语,用的比较多,赞赏的意思,可以翻译为”好””不错””优秀”等等 .春晚《幸福生活亚克西》节目。
后被猫扑网友YYBT赋予了新的时代意义,比如,party的政策亚克西,猫扑真欢乐呀亚克西!

Nov 17, 2010

smartVPN项目开发记录 (三)

……嗯,这下搞笑了。

windows居然不支持黑洞路由!google后发现只能在同网络中找一个未使用的地址作为下一条来完成这个功能,但我觉得这个只能人为指定,程序是无法准确判断的。所以……真是杯具啊

不过去往制定目的地使用VPN的功能倒是完成了。改用线程方式后稳定性提高了很多,但是不是还是出错,烦啊。

smartVPN项目开发记录 (二)

昨天基本搞了一天,有点小结果:
1. 已经能够对域名的返回结果进行判断
2. 使用nslookup来测试已经成功能过滤掉GFW污染的结构
3. 优先返回本地ISP返回的解析结果

不过测试下来,又发现了如下一些问题:
1. nslookup测试基本无问题,不过实际使用过程中发现经常失去响应,必须重启程序
2. 经常无缘无故的就挂了……

还有一些设想的功能没有实现:
1. 根据结果增加路由
2. 判断哪些域名需要使用VPN

对软件开发完全就是一头雾水……试试能不能采用多线程的方式来解决一些问题。至于原因嘛,我也不是很清楚啊……囧

中美的大佬汇率战RAP

大家慢慢欣赏

Nov 16, 2010

smartVPN项目开发记录 (一)

昨天想了想是否能结合autoproxy来动态加入路由(帖子在这里),想到有个scapy这个非常不错的库,便想自己尝试一下。

不过在scapy尝试收发DNS包的时候,发现返回的包在DNS部分显示为Raw load


后来调试了好久,发现是pton_ntop.py文件中有问题。查看第63行,居然……错误这么明显,于是自己把它改过来:

60 def inet_ntop(af, addr):
61     """Convert an IP address from binary form into text represenation"""
62     if af == socket.AF_INET:
63         #fix by Ken Mercus Lai
63         #return inet_ntoa(addr)
63         return socket.inet_ntoa(addr)
改动之后再次运行,这下结果正常了:

Nov 15, 2010

VPN,可以结合SSH的优势吗?

VPN与SSH是常用的加密数据的方式(不限于凸墙),区别大致如下(原文在这里):

SSH方式:
通过SSH连接,在本地与远程服务器之间建立一个加密的管道(Tunnel),SSH客户端监听本地端口,形成SOCKET5代理。由于IE对 SOCKET5代理不好,大家一般都是用FireFox。直接将FireFox设置Socket5代理就是可以正常使用的。但是这样,上国内网站也会绕道国外,影响速度。好在FireFox有大量优秀的插件,FoxyProxy和AutoProxy是很常用的通过URL筛选决定是否通过代理访问网站的插件,后者用的尤其多。

VPN方式:
VPN其实也是在本地与远程服务器之间建立了一个加密的通道,但是,与SSH不同的是,VPN客户端会虚拟一个网卡出来(这个虚拟的网卡连接的就是刚才说的那个加密通道),然后修改路由,使流量从加密通道走,达到凸墙的目的。当然,VPN也存在跟SSH相同的问题,如果访问国内网站,会绕道国外,速度很慢。聪明的人们又想出了办法:连接了VPN的电脑相当于有两块网卡,只要让国内流量从真实网卡走而国际流量从虚拟网卡走,这个问题就解决了。实际的操作就是手工加入国内IP的路由,让这部分流量直接走本地连接来搞定。

在解决绕道的问题上,大家可以看出SSH方式和VPN方式的不同了,SSH方式可以在URL的级别上筛选网址走加密通道,而VPN方式只能筛选IP。

举个例子,假设xxx是某强屏蔽的关键字,SSH代理+AutoProxy可以做到使http://www.abc.com/xxx走代理,而http://www.abc.com/yyy不走代理,这是VPN方式力所不及的。当然,VPN方式也有它得天独厚的好处,就是不用对应用软件进行任何设置即可使用,这对一些根本没法设置代理的应用软件是莫大的福音,这也是SSH方式力所不及的。

简单的来说,SSH在7层,VPN在3层。至于VPN的好处在上面引用的文字中就说的很明白了——不用对应用软件进行任何的设置。换句话说,只要去往某一目的的路由是指向VPN的,那么所有去往此目的地的路由都将自动生效,而基于7层的SSH没有此能力。

我的考虑是,能不能基于某些现有的SSH代理的处理方式,动态的设置VPN路由,这样不失VPN的特点,又能结合SSH的吸收优势。当然,实际情况肯定还是不能完全像SSH一样灵活。但至少比采用一刀切的方式——国外IP都走VPN——更加灵活。

基本思路如下:利用autoproxy的列表,使用DNS代理收集哪些IP地址需要使用VPN(同时可以防止DNS污染)。对于需要代理的目的地址(匹配autoproxy列表的项),创建路由指向VPN。同时对于DNS污染的地址,直接指向黑洞,以免出现可能的安全问题。

CCDE推荐阅读的RFC文档

包括了Cisco中推荐的所有RFC文档,还加入了Petr Lapukhov推荐的3篇。

由于在kindle上阅读pdf的页面翻页和文档本身不同,而且还有等宽字体的问题。所以把文档都转换成了PDF格式了。

点击下载(Click Here)

TAS-ARC《街霸ZERO3》伯迪(BIRDIE)最高难度V-ISM 华丽表演通关录像

这个角色是我最头痛的——因为完全不会玩儿……
视频太华丽了

Nov 11, 2010

电子书 The Base Damn Firewall Book Period

The Base Damn Firewall Book Period —— Cherie Amon & Thomas W. Shinder & Anne Carasik-Henmi
This book is essential reading for anyone wanting to protect Internet-connected computers from unauthorized access. Coverage includes TCP/IP, setting up firewalls, testing and maintaining firewalls, and much more. All of the major important firewall products are covered including Microsoft Internet Security and Acceleration Server (ISA), ISS BlackICE, Symantec Firewall, Check Point NG, and PIX Firewall. Firewall configuration strategies and techniques are covered in depth.The book answers questions about firewalls, from How do I make Web/HTTP work through my firewall? To What is a DMZ, and why do I want one? And What are some common attacks, and how can I protect my system against them?The Internet's explosive growth over the last decade has forced IT professionals to work even harder to secure the private networks connected to it-from erecting firewalls that keep out malicious intruders to building virtual private networks (VPNs) that permit protected, fully encrypted communications over the Internet's vulnerable public infrastructure.The Best Damn Firewalls Book Period covers the most popular Firewall products, from Cisco's PIX Firewall to Microsoft's ISA Server to CheckPoint NG, and all the components of an effective firewall set up. Anything needed to protect the perimeter of a network can be found in this book. - This book is all encompassing, covering general Firewall issues and protocols, as well as specific products.- Anyone studying for a security specific certification, such as SANS' GIAC Certified Firewall Analyst (GCFW) will find this book an invaluable resource.- The only book to cover all major firewall products from A to Z: CheckPoint, ISA Server, Symatec, BlackICE, PIX Firewall and Nokia.

PDF格式
点我下载(Click Here)

Nov 10, 2010

电子书 Anti-hacker tool kit

Anti-hacker tool kit —— Mike Shema & Bradley C. Johnson

"Using these tools yourself during an audit will help you find the weaknesses in your systems. This is an excellent reference book--one I plan to keep handy." --Simple Nomad, Noted security expert and author of The Hack FAQ and Pandora Put an End to Hacking. Stop hackers in their tracks using the tools and techniques described in this unique resource. Organized by category, "Anti-Hacker Toolkit" provides complete details on the latest and most critical security tools, explains their function, and demonstrates how to configure them to get the best results. New and updated case studies in each chapter illustrate how to implement each tool in real-world situations. Protect your network and prevent disasters using the cutting-edge security tools and exclusive information in this completely up-to-date volume.Explains how to configure and use these and other key tools: Port scanners: Nmap, SuperScan, IpEye, Scanline Enumeration tools: smbclient, nbtstat, Winfingerprint Web vulnerability scanners: Nikto, WebSleuth, Paros, wget Password crackers: PAM, John the Ripper, L0phtCrack Backdoors: VNC, Sub7, Loki, Knark System auditing tools: Nessus, Retina, STAT, Tripwire Packet filters and firewalls: IPFW, Netfilter/Iptables, Cisco PIX Sniffers: snort, BUTTSniffer, TCPDump/WinDump, Ethereal Wireless tools: NetStumbler, Wellenreiter, kismet War dialers: ToneLoc, THC-Scan Incident response tools: auditpol, Loggedon, NTLast Forensics tools: EnCase, Safeback, Ghost, md5sum, FTK Miscellaneous tools: Netcat, Fpipe, Fport, Cygwin, and many more CD-ROM contains all the security tools discussed in the bookAbout the authors: Mike Shema is the Director of Research for NT Objectives, Inc. He is theauthor of "HackNotes Web Security Pocket Reference" and co-author of "Hacking Exposed Web Applications," both from McGraw-Hill/Osborne. Bradley C. Johnson is a network security specialist with a great deal of experience designing, implementing, and maintaining secure networks. He is the co-author, with Mike Shema, of the first edition of this book.
CHM格式
点我下载(Click Here)

Nov 9, 2010

电子书 Advanced IP Network Design

Advanced IP Network Design —— Alvaro Retana & Don Slice & Russ White
A core textbook for CCIE preparation Learn how to apply effective hierarchical design principles to build stable, large-scale networksExamine broken networks and discover the best methods for fixing themUnderstand how the right topology enhances network performanceConstruct the most efficient addressing and summarization scheme for your networkPrevent network failure by applying the most appropriate redundancy at the network core, distribution layer, and access layerExtend your network's capabilities through proper deployment of advanced IGP- and EGP-based protocolsAdvanced IP Network Design provides the solutions network engineers need to grow and stabilize large IP networks. Technology advancements and corporate growth inevitably lead to the necessity for network expansion. This book presents design concepts and techniques that enable networks to evolve into supporting larger, more complex applications while maintaining critical stability. Advanced IP Network Design provides you with a basic foundation to understand and implement the most efficient network design around the network core, distribution and access layers, and the common and edge network services. After establishing an efficient heirarchical network design, you will learn to apply OSPF, IS-IS, EIGRP, BGP, NHRP, and MPLS. Case studies support each protocol to provide you with valuable solutions to common blocks encountered when implementing an IGP- or EGP-based networkAdvanced IP Network Design offers expert-level solutions and help with CCIE exam preparation through the following features: practical discussion and implementation of CCIE-level networking issues; case studies that highlight real-world design, implementation, management, and troubleshooting issues; scenarios that help you put the presented solutions to use; and chapter-ending review questions and exercises.
PDF格式
点我下载(Click Here)

Nov 7, 2010

烦人的的cisco网站底部菜单

这是cisco新版网站,我一直在想,那个没用的菜单能干掉吗?

当然,拥有firefox,应该是可以做到的。首先下载Greasemonkey,搭配这个脚本接可以了

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger