Jan 032011
 

目前的IPv6隧道形式有好几种,不同的用途各有不同的连接方式。我自己曾经使用过其中的两种隧道:Teredo和6to4。

1. 设定IPv6

6to4适合电脑直接使用公共IP的用户,祗要你符合以下上网方式,一般都直接获得公共IP:

  • 拨号上网用户
  • 用自己的电脑直接连接ADSL,不用路由器
  • 公共无线上网(对于大陆地区,须中国电信或中国联通)

若还不确定,在Command Prompt(命令提示符/命令提示字元)输入ipconfig,若能看到公共IP地址就表明你已经可以用6to4了。一般情况下,Windows Vista及Windows 7无须配置,系统本身就已经帮你设定好6to4隧道了,可以直接连上IPv6。禁用了IPv6的祗需要重新开启即可。XP用户可以用ipv6 install命令安装IPv6,但6to4的设定方法我暂时不知道,手头没XP的电脑。若要知道是不是已经开启了IPv6隧道,祗要用你的浏览器打开ipv6.google.com就可以验证了。若能顺利打开看到Google首页,就表明一切正常。

若是使用Router(路由器)共享上网,或者是单位用户,大多数情况下电脑都是使用私有IP地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。在Command Prompt输入Ipconfig,若看到以下地址范围——192.168.0.0 ~ 192.168.255.255、172.16.0.0 ~ 172.31.255.255、10.0.0.0 ~ 10.255.255.255——此时就只能用Teredo了。

若是使用Windows Vista和Windows 7,本来Windows本身就已经配置好Teredo的了,不过很可惜的是大陆的电讯运营商把微软的Teredo隧道封掉,无法起作用。现在要做的就是重新配置Teredo。以下设定均适合Windows Vista及Windows 7。

以系统管理员身分打开Command Prompt(右键单击就会看到“以系统管理员身分”或“以管理员身份”),打开后标题会多出“管理员:”的字样,键入netsh并回车。此时就会进入netsh环境(显示netsh>)。

按顺序键入下列命令:

interface teredo
set state enterpriseclient teredo.remlab.net.
set mode online

注意,teredo.remlab.net后边有个点号,不要漏了。teredo.remlab.net是Teredo的其中一个隧道接入服务器,相应的其他还有:

teredo.autotrans.consulintel.com
teredo.ngix.ne.kr
teredo.managemydedi.com

可以选择使用。

现在用你的浏览器打开ipv6.google.com,如无意外,应该已经能够看到Google首页了。

2. 修改Hosts内容

有一些网站既有IPv6地址又有IPv4地址,这个时候电脑有可能会优先用IPv4。万一该IPv4地址是被墙的,那就等于无法访问了。现在要做的就是“告诉”电脑对某些网站必须用IPv6地址。

该步骤其实不多,仅仅是修改Hosts文档的内容(位置:Windows\system32\drivers\etc\hosts)。网络上已经有修改好的Hosts可供下载,若有需要,请自行下载

如果上述下载失效,可以用我现在正在用的:点击此处下载

Windows Vista、Windows 7用户自行编辑Hosts的方法:在刚才的“管理员:”命令提示,输入notepad \Windows\system32\drivers\etc\hosts,回车之后就可以修改了。

如果是要用下载回来的hosts,CTRL+C、CTRL+V直接覆蓋就可以了。

Linux透过Teredo连接IPv6 Inernet

 Linux, 网络  Comments Off on Linux透过Teredo连接IPv6 Inernet
Jan 022011
 

在Windows配置IPv6非常简单,主要是因为Windows已经内置了多种接入方式,需要的时候直接配置就行了。而Linux则比较特别,发行版多,各个版本内置的接入方式不一,只能因地制宜。

为甚么会有那么多接入方式呢,原因是,在Native IPv6网络未普及之时,根据各种不同的Internet连接方式分别采用不同的IPv6隧道建立方式。例如,需要通过NAT方式连接Internet的,就要用Teredo了。

我用的是Mandriva Linux 2010.2(刚升级的),安装时已经开启IPv6功能,不过连接方式有限,不包含Teredo。此时,唯有安装Miredo了。

下载好Miredo,解包。文档说明写着需要按照常规编译安装方式来安装。OK,那就编译吧。CTRL+ALT+F1,打开控制台,以root身份登入。进入对应文件夹,开始按照步骤来做:

# ./configure
# make
# su
# make install

但在第一步 ./configure 就卡住了:

checking for Judy.h usablity... no
checking for Judy.h presence... no
checking for Judy.h... no

Judy乃何方神圣?Google之,得答案:“Judy is a C library that provides a state-of-the-art core technology that implements a sparse dynamic array.”简单地说,就是一个提供动态数组的C库。

好吧,下载Judy,编译并安装:

./configure --enable-64-bit
make
make check
make install

需要注意的是,安装Judy时一定要根据自己的Linux版本选择对应的参数,64 bit的要选择 --enable-64-bit,32 bit的要选择 --enable-32-bit,不要输错!

然后可以重新编译安装Miredo了。重新输入命令,整个过程一切顺利。安装完成后,回到图形界面(CTRL+ALT+F8),用浏览器打开 ipv6.google.com,Google搜索页出现了!至此,Teredo终于安装完成!

Dec 312010
 

前边在《一个支持IPv6的免费VPN》曾经提到过IPv6,网络上也有很多人在争论到底要不要把OS的IPv6功能关掉。那么,何为是IPv6、有何用途呢?本文简单介绍下。

IPv6是下一代IP标准,目的是为了解决我们现在正在使用的IPv4数量严重不足的问题。我们目前使用的IPv4能够提供了大约43亿个地址,其中大约37亿地址是可供分配使用的,剩下的被保留使用。何谓“保留”?这保留的地址中,有一部分被用作私有地址,即我们常见的10.0.0.0、172.16.0.0~172.31.0.0、192.168.0.0这几段;有一部分用作组播地址(不懂组播没关系,很少人能用得上);还有一部分用作IPv4向IPv6过渡时使用。

IPv4的这37亿个地址按照地球人的总数(按60亿来算)平均分配下来,平均每人只能得到0.6个,显然不够用。后来因为划分出私有地址,因此使得多人可以共享一个公共IP地址连接Internet,问题得到缓解。不过,该来的总会来的,推迟后它还会来。在2011年,IPv4地址就会被逐渐用完。

而这个IPv6,对于中国大陆有很特殊的意义。

中国大陆的IP地址已经非常紧缺,近年来更是到处购买国外其他运营商的IP地址。现在,IPv6已经在教育网得到大规模应用,但是普通公众暂时还没大规模推开,仅仅在某些地区做试验。

另一方面,中国大陆有一个众所周知、臭名昭著的Firewall,知道这东西的人不用我解释都知道它的用途,不知道的人请自己找资料。这个Firewall功能强大,但只对IPv4能起作用,对于IPv6几乎无能为力。这也能理解为何在公众网络中迟迟未能推开。

在教育网中,IPv6好处多多。国外资源任意使用,不再受限制,而且不会受到Firewall的干扰,平时不能去的、不能用的网站、网络服务,在IPv6下全部恢复正常。可以说,这比爬墙软件更好用,简直就是一道畅通无阻的大门。更重要的是,教育网中的IPv6并非建立隧道连接,直接就是Native IPv6 Unicast地址,电脑本身既能正常使用平常的IPv4网站与服务,又能用IPv6的资源与服务。

对于大陆公众网的用户而言,可以通过建立IPv6隧道的方式来使用IPv6服务,顺便穿墙,而且不会像爬墙软件那样影响到部份程序的使用。

在要不要关闭IPv6功能的问题上,我个人认为,没必要关闭。该功能开着的时候不会影响平时的正常使用,也不会占用多少系统资源。可以说,开着IPv6有好处没坏处。

一个结合Ping、Traceroute (tracert)的工具:pathping

 网络  Comments Off on 一个结合Ping、Traceroute (tracert)的工具:pathping
Dec 032010
 

平时我们会用到Ping来检测链路是否连通、或者看看对方主机是否Down掉,用traceroute (tracert)来查看链路的路由路径。有时候我们会遇到这种情况:想看看经过路径的路由器列表,同时又想Ping中间的每一个路由器。有些人会想到,那就手工一个一个ping,或者有人会想找甚么网络辅助工具来帮忙。

其实,用一个叫做pathping的命令就可以做到了。

Pathping同时具备了Ping和tracert的功能,它会先像Traceroute那样取得路径中转发路由器的列表,然后再统计从每个路由器返回的结果。

Pathping命令:
Usage: pathping [-g host-list] [-h maximum_hops] [-i address] [-n]
[-p period] [-q num_queries] [-w timeout]
[-4] [-6] target_nameOptions:
-g host-list     Loose source route along host-list.
-h maximum_hops  Maximum number of hops to search for target.
-i address       Use the specified source address.
-n               Do not resolve addresses to hostnames.
-p period        Wait period milliseconds between pings.
-q num_queries   Number of queries per hop.
-w timeout       Wait timeout milliseconds for each reply.
-4               Force using IPv4.
-6               Force using IPv6.

其中,使用 -n 参数相当于在tracert命令使用 -d 参数一样,不把IP地址反向解析为主机名。对于一些双栈主机而言,参数 -4 和 -6 都比较有用。个人习惯使用 / 代替 - 。

以我的电脑为例,用pathping测试google.com。我使用了IPv6,并且在Hosts文件中强行指定Google用IPv6连接,因此pathping默认会用IPv6测试Google.com。

C:\>pathping /n www.google.comTracing route to www.google.com [2404:6800:8005::68]
over a maximum of 30 hops:
0  2001:0:53aa:64c:188e:6ff:8ebe:a1ee
1  2001:470:0:163::2
2  2001:470:0:163::1
3  2001:7fa:0:1::ca28:a10a
4  2001:4860::1:0:1063
5  2001:4860::2:0:119b
6  2001:4860:0:1::e3
7  2404:6800:8005::68Computing statistics for 175 seconds...
Source to Here   This Node/Link
Hop  RTT    Lost/Sent = Pct  Lost/Sent = Pct  Address
0                                           2001:0:53aa:64c:188e:6ff:8ebe:a1ee
0/ 100 =  0%   |
1  335ms     0/ 100 =  0%     0/ 100 =  0%  2001:470:0:163::2
0/ 100 =  0%   |
2  336ms     0/ 100 =  0%     0/ 100 =  0%  2001:470:0:163::1
0/ 100 =  0%   |
3  ---     100/ 100 =100%   100/ 100 =100%  2001:7fa:0:1::ca28:a10a
0/ 100 =  0%   |
4  338ms     1/ 100 =  1%     1/ 100 =  1%  2001:4860::1:0:1063
0/ 100 =  0%   |
5  335ms     1/ 100 =  1%     1/ 100 =  1%  2001:4860::2:0:119b
0/ 100 =  0%   |
6  339ms     1/ 100 =  1%     1/ 100 =  1%  2001:4860:0:1::e3
0/ 100 =  0%   |
7  334ms     0/ 100 =  0%     0/ 100 =  0%  2404:6800:8005::68

Tracoe complete.

一目了然,可以看到经过了哪些地方,在哪些地方丢包、丢了多少。

其中,0号是本机地址。对于大多数电脑而言,主要用的还是IPv4,即使同时存在IPv6,Windows默认依然会用IPv4去连接,除非被强行指定使用IPv6链路(比如访问某些网站时DNS祗给出IPv6地址,或者Hosts绑定),pathping默认使用IPv4去测试。

猜想Google的“IP隐藏”

 Google, 网络  Comments Off on 猜想Google的“IP隐藏”
Nov 232010
 

曾经有篇文章说过,Google spider很会“隐藏”IP地址,不管是从哪里来的spider(例如来自香港的spider、俄罗斯的spider),从被爬的站点看来,那些IP都是来自加利福尼亚。Google是如何做到的呢?个人做个简单的分析。

我们知道Google拥有大量的申请到的IP地址、有自己的数据中心,那么Google为了连接分布于各地的分支机构,而又为了让外界看起来自己的所有IP都是位于加利福利亚,可以用几个很简单但有效的办法。我猜测,Google的做法会是这样:

  • 全部的分支机构都是用Google自己申请到的IP地址,而不是从当地运营商再申请一批新的地址;
  • Google拥有自己的Autonomous system (AS) Number,这样就可以既为Google自身网络的连接提供独立的路由,而又可以根据分支机构的不同位置采用不同的路由来连接当地网络。

仅仅使用这两种做法,就可以让外界以为Google隐藏了IP地址。

不过,这仅仅是个人猜测,也许与真实情况有出入。