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

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

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

  1. echo那句有点问题, 报错
    试了ok了,不过我要把源地址的domain替换成127.0.0.1迅雷才正常

    1. 您好,修改Hosts就是为了用原域名解析,如果127.0.0.1正常则无需修改。(好久没看评论,这才刚approve的)

  2. 用迅雷的意义在于可以自动搜索备用资源,多资源同时下载!
    你这个方法仅仅是把下载原地址的对应的服务器链接改成了IPv6格式,但是迅雷搜索到的其它备用资源还是IPv4的,所以,除了原地址服务器的流量之外,其它的还都是IPv4的流量!

    如果能把所有的备用资源也转成IPv6的就好了!

    1. 我这个方法的主要目的,是实现IPv6的单资源多线程下载。因为用很多IPv6下载工具wget或者curl都没法做到这一点,而支持多线程的旋风和迅雷都不支持IPv6。

      如果要实现屏蔽v4流量,可以直接防火墙全部屏蔽,也可以弄一个IPv6代理设成迅雷代理(当然要先做IPv4的portproxy咯),这样其他资源下载也会从IPv6走了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注