Windows 轻松用“端口代理”实现 IPv6 多线程下载

迅雷和QQ旋风等软件本来不支持IPv6下载,我们现在要用它们来多线程下载IPv6的文件,而不需要安装第三方软件(Windows 7,其他系统未测试)。

Windows 7自带一个命令netsh,本来是用来管理网络的命令行程序,但是其中有一个经常被忽略的功能——Port Proxy(端口代理 / 端口转发)。利用这个代理可以将本地的一个v4或v6端口和远程的一个v4或v6端口进行数据转发,也就是常说的“端口转发”。

现在我们要做的就是,将一个远程IPv6服务器的80端口映射到本地IPv4(127.0.0.1)的80端口,然后用迅雷等软件直接下载,迅雷就会认为是IPv4,但是网络出口是IPv6。以下是具体步骤(所有命令均在cmd中输入):

1. 查询远程服务器IPv6地址,例如:

C:>nslookup -qt=aaaa mirrors.ustc.edu.cn
名称:    mirrors.ustc.edu.cn
Address:  2001:da8:d800:95::110

2. 进入netsh命令行,并建立v4 to v6的端口转发关系:(输入完成后按Ctrl+C退出即可)

C:>netsh
netsh>interface portproxy
netsh interface portproxy>add v4tov6 80 2001:da8:d800:95::110 80
netsh interface portproxy>show all

侦听 ipv4:                 连接到 ipv6:
地址            端口        地址            端口
————— ———-  ————— ———-
*               80          2001:da8:d800:95::110 80

3. 打开C:WindowsSystem32DriversEtcHosts,将远程服务器域名映射到127.0.0.1地址。使用记事本打开上述文件,在最后添加一行:

127.0.0.1 mirrors.ustc.edu.cn

解释:这一步的目的是,有些网站实际是虚拟主机,在请求时会发送Host(主机名)头,若直接用127.0.0.1请求,对于这些主机由于找不到会返回HTTP 400。

4. 打开迅雷或QQ旋风等下载软件,直接用原域名和地址下载即可。下载完成后可以用del v4tov6 80命令来删除端口映射。

利用IPv6的好处就是,教育网内不限速、不计流量;而利用多线程的好处是,单线程速度过低可以用多线程补救。这个方法可以让这两点好处结合起来,非常实用,是我走过HTTP代理、CCProxy转发之类的弯路之后找到的最佳方案了。希望能对大家有点用。

下面是QQ旋风使用本方法之后,在USTC的IPv6镜像下载的效果:

下面是在国外IPv6的下载速度(单线程下载我们学校只有200K左右,也没有备选资源之类的):

[NSLOOKUP] 名称:    mirror.nexicom.net
Addresses:  2607:f1f0:1:3::2
          98.124.49.250
Aliases:  centos.mirror.nexicom.net
 
[NETSH] netsh>i po
netsh interface portproxy>add v4tov6 80 2607:f1f0:1:3::2 80
 
netsh interface portproxy>s a
 
侦听 ipv4:                 连接到 ipv6:
 
地址            端口        地址            端口
————— ———-  ————— ———-
*               80          2607:f1f0:1:3::2 80

[HOSTS] 127.0.0.1 centos.mirror.nexicom.net

请注意:如果要转载、引用或以其他方式使用本站资料,请务必阅读下方的使用协议!否则本站将追究您的责任!

DNS主从服务器多点配置方法

DNS域名解析有主(Master)从(Slave)服务器的功能,可以在主服务器上修改记录,然后让从服务器自动同步主服务器的资料,从而实现多服务器冗余备份,避免因为一家服务商的网络问题导致域名无法解析。

注意:本文不包含“如何注册帐户”等简单问题,只介绍关键的步骤。

1. 主服务器配置

现在国内大部分免费DNS根本不知道主从为何物,国外免费DNS大部分只支持从的功能,而真正支持主服务器(同时也必然支持从服务器)的有以下三家:EveryDNS(实测所有服务器已挂)、XName(所有服务器都提示出错)和ZoneEdit(老牌可用)。以下用ZoneEdit(新版界面)来演示。

(1) 进入后台,点击New Zone添加一个域名,注意不要勾选Slave。这里以du9l-test.com(虚假域名)来测试。

(2) 添加好之后,在Zone Records中填入域名解析的记录,这里用一个A和一个A4来测试。添加好之后,在后面默认的两个NS记录中选择你所在地较快的解析服务器。至于最前面两个NS记录在第2步中详细介绍。如下图:

(3) 切换到Security栏,在Allow transfer中填入“Any”以允许所有Slave服务器访问。当然,不建议这种不安全的配置方法,在第2步中会提到真正安全的配置方法。填好之后点击Save Zone即可保存。如下图:

(4) 回到域名列表之后,点击Publish Zone即可启用这个域名。ZoneEdit给每个用户免费2个域名,用完之后就要付费了。启动好之后,可以用nslookup 4.du9l-test.com(你解析的记录) ns14.zoneedit.com(你选择的服务器)来测试是否成功。

2. 从服务器配置

正如1中所说,大部分国外DNS都支持从服务器功能,除上面提到的三个以外,还有free.afraid.org(免费域名允许别人随意创建二级域名,不推荐)和DNS.HE.NET(很稳定,推荐)这两家。我还是用HE来演示。

(1) 进入后台之后,点击Add New Slave,并填入你的域名和主服务器地址。这里他会告诉你,你应该允许哪个地址的从服务器抓取主服务器的记录,这里示例的是ns1.he.net,IP地址为216.218.130.2,你应该把这个地址填入第1(3)步的那个空里。如果有多个从服务器,应该用半角逗号“,”分隔开。如下图:

(2) 添加成功后,点击Validate按钮更新一下记录即可。以后从服务器就会自动抓取主服务器的记录。这个页面上也会告诉你HE的全部DNS服务器地址,这里对应于第1(2)步中的NS记录。至于要怎么填写会在第3步中介绍。如下图:

(3) 这时候你可以用nslookup 4.du9l-test.com(你在主服务器上填写的记录) ns1.he.net(从服务器地址)来测试从服务器是否抓取成功。如果返回了与主服务器一样的记录说明成功了。

3. 修改域名DNS服务器

当你的主从服务器都测试成功后,你可以到域名注册商处修改域名的DNS服务器地址。你可以选择添加或不添加主服务器,也可以只添加一部分从服务器。例如,你可以只添加ns16.zoneedit.com和ns2.he.net两台服务器。

添加成功后,应该回到主服务器(ZoneEdit)后台,将添加的从服务器DNS地址添加到NS记录中,也就是1(2)中前两条记录那样,点击Custom后手动输入从服务器地址(顺便要回到Security中看看Allow transfer是不是被清空了,ZoneEdit后台Bug),保存,然后提示你有未发布的修改,点击红色区域的Publish Zone即可修改成功。

DreamSpark中国版,中国大学生免费下载微软正版软件

就当我Out了吧,今天刚在学校网络中心看见这个微软DreamSpark计划的中国版。虽然资源不算很丰富,但是校内FTP下载速度很快,而且是正版软件哦!

网址:http://dreamspark.eol.cn

目前可以用校内IP直接访问的学校有(可以按Ctrl+F搜索):天津工业大学,湖北工业大学,中国科学技术大学,山西大学,深圳大学,上海大学,长安大学,宁波大学,电子科技大学,南京大学,哈尔滨工业大学,福州大学,重庆邮电大学,东北大学,华东师范大学,北京工业大学,复旦大学,浙江大学,重庆大学,燕山大学,华南理工大学,东南大学,暨南大学,厦门大学,山东大学,北京交通大学,山东海天软件工程专修学院,郑州大学,集美大学,南京理工大学,苏州大学,西安交通大学,中山大学,太原理工大学,哈尔滨工程大学,武汉大学,中国海洋大学,上海交通大学,大连理工大学,西安电子科技大学,北京理工大学,北京科技大学,桂林理工大学,青岛科技大学,中国石油大学(华东),吉林大学。

目前提供的资源包括(经常更新):Visual Studio 2010(仅英文)、2008、2005,Expression Studio 3、4,Windows Server 2008、2008R2,Virtual PC,Internet Explorer 9,Windows CE 6.0等。

对于某些软件(例如Windows Server或CE)需要激活码,就要去国际版的DreamSpark(http://www.dreamspark.com/),申请激活码需要学校提供的@xxx.edu.cn的邮箱,或者用eol提供的邮箱。

在IPv4环境下搭建IPv6隧道的方法

在家还想上学校的IPv6 PT站下载东西,于是就需要自己搭建IPv6隧道,访问各种v6only的网站。下面共享一下方法。

UPDATE: 我新写了一篇《更简单更通用的搭建v4-v6隧道的方法》,适合更多普通用户,欢迎参考。

这里主要以美国HE.NET公司的TunnelBroker.NET(以下简称TBN)服务做示例,文章最后会介绍其他几个类似服务,也推荐看一下。操作系统主要以Windows7(/Vista/2008)为例。

1. 注册TBN服务,不多废话。注册链接:http://tunnelbroker.net/register.php

2. 登陆到TBN账号,点击左侧Create Regular Tunnel,在IPv4 endpoint中填入你的公网IPv4地址(这里强调是有用的,继续看),下面要选择一个隧道。联通线路建议选择Fremont或LA,其他线路没测试过,建议用自动推荐的隧道(We recommend you use)。选完后点Submit。

3. 建立好Tunnel之后,你会看到相关信息。下面是你需要的信息:Server IPv4 addr(以下用[Server4]代替)、Server IPv6 addr(以下用[Server6]代替)、Client IPv6 addr(以下用[Client6]代替)。另外,查到你联网的网卡上的本地IPv4地址(以下用[Client4]代替),方法是在适配器设置中双击联网的网卡,点详细设置。
这里跟上面的公网IPv4地址有什么区别呢?我所在的网络是一个特殊状况,网络前端有个路由器,本地拿到的地址是192.168的私有IP而非公网IP(强烈建议设置固定IP)。这里需要的就是你网卡的IP,而非你对公的IP。如果你的网卡就是直接联网的,那这里就需要你的公网IP。

4. 在页面下方你会看到Configure的命令行,但是(对于WinV/7/2008系统)建议你用我提供的这个格式,不容易出问题。(其他系统请直接使用官方的命令)
首先打开一个管理员权限的CMD,如果系统开了UAC则打开开始菜单–所有程序–附件–命令提示符右键–以管理员权限运行
netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel HE [Client4] [Server4]
netsh interface ipv6 add address HE [Client6]
netsh interface ipv6 add route ::/0 HE [Server6]
把其中的中括号内容替换成上面的对应值,粘贴完之后按回车。等全部成功即可。此时访问北邮人、Kame、IPv6 Google等应该都可以了。

以上就是做IPv6隧道的全部步骤,下面是几条我研究这些问题过程中的小发现之类的。推荐看一下,可能会有用的。

附录1: TBN的IPv4 Endpoint更新API地址为:http://ipv4.tunnelbroker.net/ipv4_end.php。在这里你会看到这个更新地址的使用方法,按照要求填写好四个参数(IP建议用AUTO,如果要指定应为公网IP而非本地IP),然后可以加为书签,以后IP改变后执行一次。

附录2: 在Google上搜Tunnel Broker还会得到其他几家类似的服务商,大概的介绍一下(有的只是瞥了一眼,如有错误欢迎劈头盖脸的指正):
大陆-浙江大学(tb.zju.edu.cn):测试项目,我开了之后下载了一会被封了,但是速度的确很给力,建议只是看网页的人使用。
台湾-某两家ISP:这里鄙视一下国内的ISP,根本不知道IPv6为何物,还把MS的Teredo屏蔽了……言归正传,这两家提供的貌似是基于客户端的,可能也只供他们的用户使用。没有测试,欢迎各种小白鼠。
美国-Sixxs:看到这五个字母瞬间就能想到他们的v4Gate和v6Gate吧?其实他们也有TB服务,但是要求申请条件很严格,需要提供很多资料并审核,不像HE这么简单。网上有人申请成功,但是我对Sixxs的网也持怀疑态度,于是懒得费事了。

2011年7月28日更新:英文Wikipedia上有一个IPv6 Tunnel Broker的列表,欢迎大家参考。地址:http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers

附录3: 接着附录2,既然你可能会有好几个Tunnel,你就需要用一个路由表,把国内的流量定位到比如ZJU的,再把国外的定位到TBN,这里就可以用route命令了。简单提一下,大家自己研究。(da8和250是教育网的两个/32段,其他六飞24xx之类的不熟也就不管了。)
route add 2001:da8::/32 [ZJU.Server6]
route add 2001:250::/32 [ZJU.Server6]
route add ::/0 [TBN.Server6]

在Linux VPS上下载BT的配置方法

最近买了一台128M内存的Linux VPS,暂时还没想做站用,就当作BT和电驴机来用了,相当于自己的“离线下载”。自己小小费了点时间弄好的,下面共享一下方法。

需求:一台允许BT下载的VPS,内存64M以上;Ubuntu 10.10 32位系统(其他系统没有测试);VPS上有wget或其他下载软件;懂Linux基础知识。BT软件我选的是uTorrent,大多数人推荐rTorrent+rtGui,但是那个比较折腾,还是uTorrent比较习惯。

效果:远程控制uTorrent,上传或抓取远端种子并自动下载,拥有PC版uT一切可控功能,下载完成后自动移动到HTTP服务器目录,供用户抓取回本地。

1. 用服务器到uTorrent for Linux官网(https://s.du9l.com/foMQPl)下载最新版本,可以先从PC上找到真实地址然后用wget直接下载。下载之后解压缩,得到utserver可执行文件和webui.zip。

2. 果断删除webui.zip,然后到官网论坛(https://s.du9l.com/4co1jE)下载最新版WebUI,大小约300K(下载地址位于Google Sites,国内用户请代理访问)。下载之后重命名为webui.zip。

3. 在utserver目录下创建utserver.conf,输入以下配置(#后为注释,不要输入):
Update:最近一次配置时,发现其中配置admin_pass改成了admin_password,本着对读者负责的态度我就改一下,建议配置之后发现有问题的话及时参考docs下的文档。

ut_webui_port: 8080 # WebUI端口
dir_active: /var/ut/ # 未下载完成的临时文件所在目录,请设为可写
dir_completed: /var/http/ # 下载完成后移动到的文件夹,例如HTTP目录
admin_name: user # WebUI登陆用户名
admin_password: pass # WebUI登陆密码

这只是一小部分配置,其他配置可以用更加方便的WebUI完成,所以不必再多写了。保存配置即可。

4. 使用具有active和completed目录可写权限的组用户启动utserver,建议用以下命令(最后的“&”不要漏掉):
Update:建议加上“> /dev/null”这一段,将输出定位到空设备中,不然会生成一个nohup.out文件,比较烦人。

nohup ./utserver -daemon > /dev/null &

5. 使用本地浏览器访问http://your-ip:8080/gui/(your-ip换成你vps的ip,8080是刚才设的端口),使用用户名密码登陆就能开始下载啦!

6. 如果需要用HTTP服务器将下载好的文件抓取到本地,可以根据自己喜好安装Apache、Nginx或Lighttpd,将服务器根目录设为dir_completed的值(例如/var/http/)即可。

提示:下载时不建议使用迅雷、快车、旋风等工具,这些工具搜索资源时会把你的地址泄露给其他用户,导致VPS被盗链后流量锐减。建议在HTTP服务器上加入IP控制和用户名密码控制,并在下载完成后及时关闭HTTP服务器。

7. 下面是一个打好包的uTorrent、最新WebUI、示例配置文件以及运行器(nohup那一套),下载地址在此(使用unzip即可解压):https://s.du9l.com/IqE5tP