I2P不完全使用手册


  说起I2P或许大家有些陌生,可能没有听说过这个软件,但提起Tor人们都知道这是一个著名的开源匿名网络工具。I2P和Tor一样,也是一个著名的开源匿名网络工具。和Tor相比,I2P和Tor有很多相似的地方,也有很多不同。由于人们比较熟悉Tor,那么先从I2P和Tor的比较开始介绍I2P。

  Tor每次启动时首先需要连接中央目录服务器,除非在短时间内重启Tor。通过中央目录服务器获得所有中继列表,所以如果ISP禁止连接到基本固定的中央目录服务器的IP地址,那么Tor很难连接到Tor网络,除非使用代理服务器或Tor网络连接到Tor网络。由于Tor每次获得所有的节点信息,那么ISP可以很容易的禁止连接到这些节点信息,从而禁止用户使用Tor。I2P在首次初始化时需要连接到I2P安装程序中设置的固定的I2P路由,所以ISP如果禁止I2P安装程序中设置的固定的I2P路由的IP地址,那么I2P在首次初始化时将无法连接到I2P网络。但I2P一旦首次连接成功(可以和Tor一样使用代理服务器进行连接)之后,会使用Kad算法(eMule的Kad网络的算法)获取部分I2P路由节点信息,下次启动I2P时将通过上次通过Kad获得的节点信息进行连接。由于I2P没有中央节点,并且每次获得的节点信息并非包含全部的节点,所以一旦I2P首次连接成功之后,虽然无法保证I2P一定不会被封锁,但ISP如果要禁止用户使用I2P将比禁止用户使用Tor困难一些。

  Tor成功连接到Tor网络之后提供本地Socks5代理,I2P成功连接到I2P网络之后提供本地HTTP代理,最新版的I2P也提供本地HTTPS代理,从提供代理服务来说,两者基本一致,Socks5代理和HTTPS代理协议有软件可以互相转换。Tor的出口中继为Socks5代理类型,I2P的出口路由可以是任何使用主动连接的单连接TCP协议,包括并不限于Web服务器、SMTP服务器、SSH服务器、HTTP代理服务器、HTTPS代理服务器、Socks5代理服务器,甚至可以通过Tor客户端提供的网桥或Socks5代理接入Tor网络。由于I2P只支持使用主动连接的单连接TCP的协议,所以不支持FTP协议。

  Tor默认只作为客户端运行,可以更改设置为中继或网桥为别人提供服务的同时更好地保护自己的匿名性。Tor作为中继运行时还可以设置是否是出口中继。I2P成功连接之后即作为I2P网络中的一部分路由为别人路由信息,可以更改设置从而不为别人路由信息,也可以更改设置为出口路由。设置Tor为出口中继时,只需要设置允许和不允许哪些传出端口即可,但由于I2P支持任何主动连接的单连接TCP协议,所以设置I2P出口路由时需要指定目标地址和端口。比如你愿意通过I2P为别人提供Socks5代理服务,那么你自己需要运行一个Socks5代理服务器,然后设置I2P的出口地址和端口为运行Socks5代理服务器的地址和端口。

  由于I2P本身可以对接任何主动连接的单连接TCP协议,所以内置的HTTP代理和HTTPS代理也是有单独的HTTP和HTTPS代理服务器支持的,内置的HTTP和HTTPS代理由官方推荐的HTTP和HTTPS代理服务器提供者提供,所以和Tor每隔一段时间就会变换IP地址不同,使用I2P内置的HTTP和HTTPS代理服务器访问网站所显示的IP基本是固定的。由于I2P的HTTP和HTTPS代理并非由官方提供的,而是由I2P用户提供的,官方只是推荐他们,所以HTTP和HTTPS代理服务有时候会下线,导致内置的HTTP和HTTPS代理服务暂时不可用。好在用户可以修改内置的HTTP和HTTPS代理服务,添加更多的服务器,当其中一个不可用时I2P会自动转到其他服务器提供服务。

  由于每个人可以成为I2P的出口路由提供各种不同的服务,所以除了I2P内置的服务外还可以在I2P的服务目录中找到大量I2P用户提供的各种各样的服务,有提供Socks5代理的,有提供Web服务的,有提供接入Tor网络的等服务。如果需要使用非I2P内置的服务,可以在I2P的设置界面中添加I2P的客户端,添加I2P的客户端时需要填写的一些信息可以在I2P的服务目录中找到。

  另外,Tor的中继之间使用TCP连接,I2P的路由之间既使用TCP连接又使用UDP进行传输数据。Tor作为中继或网桥时需要有公网IP或在路由器上设置端口映射,I2P也可以手动在路由器上设置端口映射,也可以使用UPnP自动设置端口映射,还支持UDP协议的NAT穿越进行路由信息。Tor的设置界面除了手动更改配置文件外,也可以结合Validia或Torpark图形界面进行设置;I2P提供了Web界面进行所有的设置。Tor使用C++编写,I2P使用Java编写。

  说了这么多I2P和Tor的异同点后,我们进入正题,介绍I2P的使用方法。

  使用I2P之前,首先当然是要下载和安装I2P,I2P的官方中文网站是: http://www.i2p2.de/index_zh.html 。但很不幸,国内无法访问这个网站,需要使用国外的IP地址才能访问这个网站。由于I2P为Java编写的程序,所以使用前先确认是否安装了Java,I2P需要Java 1.5及以上版本才能运行,推荐使用Java 1.6,可以在 http://www.java.com/ 中下载和安装Java。安装好后首次运行I2P会调用系统的浏览器,访问I2P的控制台Web配置界面: http://127.0.0.1:7657/ 。在控制台中我们可以看到I2P的运行情况,包括I2P连接到I2P网络的情况。

I2P不完全使用手册

(图1)

  从图中我们看到I2P的活动节点为28 / 70,表示找到活动节点70个,连接了28个。由于Kad每次只获取一部分节点,所以I2P的总节点数远大于70个。一般连接上的活动节点在8 - 10个左右I2P就能正常工作了。首次运行I2P的时候会通过I2P安装程序中内置的路由节点连接到I2P网络,但由于众所周知的原因,国内基本无法连接到内置的路由节点,这时候连接上的活动节点将会不足8 - 10个,I2P无法很好地工作,好在我们可以在I2P的网络引导设置中设置使用代理服务器获取更多的节点。我们访问 http://127.0.0.1:7657/configreseed 进入I2P的网络引导设置,其中可以选择“使用 HTTP 代理”,并填写HTTP代理地址和端口,然后点击“保存修改 + 立即开始网络引导”,如果设置的代理可以连接到I2P的官方网站,过一会儿活动节点数就会有所增加,达到8 - 10个可用的标准。I2P一旦首次连接到I2P网络后,将会不断从连接上的活动节点中获得其他活动节点,网络引导一般只需要进行一次即可,如果长时间未使用I2P导致活动节点数少于8 - 10个则需要再次进行网络引导。

I2P不完全使用手册

(图2)

  I2P连接到I2P网络后,即可开始使用I2P提供的服务了,首先介绍的是I2P内置的官方推荐HTTP和HTTPS代理服务。和一般的HTTP和HTTPS代理服务不同,I2P的HTTP和HTTPS代理服务使用两个不同的端口,默认HTTP代理为4444,HTTPS代理为4445。设置浏览器的HTTP代理地址为127.0.0.1,端口为4444;设置浏览器的HTTPS代理地址为127.0.0.1,端口为4445即可使用I2P的HTTP/HTTPS代理服务匿名访问ISP阻止访问的网站了。在浏览器设置了I2P的HTTP/HTTPS代理服务后,不仅可以访问互联网上的Web网站,也可以访问I2P内置的很多匿名网站,和Tor的匿名网站(也称隐藏的服务)十分相似。I2P的匿名网站是以“.i2p”结尾的网站(Tor的匿名网站是以“.onion”结尾),只有在浏览器设置了I2P提供的HTTP/HTTPS代理后才能访问I2P的匿名网站。常用的I2P匿名网站有I2P内的搜索引擎 http://eepsites.i2p/ 、I2P的Wiki http://ugha.i2p/ 、I2P的论坛 http://forum.i2p/ 等。

  本次I2P的使用先介绍到这儿,下次会介绍如何在I2P内找到其他I2P用户提供的服务和如何发布自己提供的服务到I2P的网络内,包括如何添加更多的HTTP/HTTPS代理服务使得I2P的HTTP/HTTPS代理服务更快速更稳定、如何添加使用其他I2P用户提供的Socks代理服务器、如何通过I2P访问Tor网络、如何通过I2P访问Freenet、如何制作自己的匿名站点、如何提供自己的匿名代理服务、如何将自己提供的服务发布到I2P的匿名网络内等内容,敬请期待。