I2P 是一个
匿名网络项目,它提供了一个简单的
网络层提供对身份敏感的程序进行安全的匿名通讯。
简介
I2P(Invisible Internet Project即“隐形网计划”),是一项混和授权的
匿名网络项目。
I2P网络是由I2P路由器以
大蒜路由方式组成的表层网络,创建于其上的应用程序可以安全匿名的相互通信。它可以同时使用
UDP及
TCP协议,支持
UPnP映射。其应用包括匿名上网、聊天、撰写博客和文件传输。
系统简介
I2P是可伸缩性强,具有自我组织与恢复能力的包切换匿名网络。其上运行有多种不同的匿名安全程序,各程序可以自行决定匿名性、延迟、流量平衡而不用考虑混淆式路由网络的具体实现。它们的数据活动可以与现有的I2P用户的匿名数据相混合。目前可用的程序包括全部典型的Internet应用 - 匿名网页浏览(Eepproxy),匿名网站(Eepsite),匿名博客与内容聚合(Syndie),匿名聊天(通过
IRC、
Jabber、I2P-QTMessanger),匿名文件传输(I2PSnark,Robert),匿名文件分享(I2Phex, iMule),匿名电子邮件(I2PMail+susiMail),匿名新闻组,及其他开发中的程序。与自由网或GNUnet上内容发布网络不同,I2P所提供的服务具有更强的交互性 - 从常规的Web搜索引擎,到论坛,博客,数据站点再到无需安装
Tor/自由网即可访问其中内容的网关。
I2P做为消息机制为基础的中间件与这些匿名性程序协同工作 - 程序要求发送数据给某一加密标识(目标),I2P来处理并保证数据安全匿名的到达#目标。I2P还带有易用的流封装库,可将I2P匿名消息转换为可靠有序的数据流传输,提供基于
TCP协议的拥堵控制算法解决网络程序的宽带延迟问题。I2P同时有简易的
SOCKS代理接口可以将现有的网络程序绑定于I2P网络中。这样做的意义并不大,因为几乎所有普通应用程序都会向网络暴露有碍匿名性的敏感数据,除非对程序进行全面审计。为了方便使用,I2P为各种语言提供了一系列API,从而充分利用I2P的资源。
I2P应用程序
I2P被设计为其他程序可以使用的匿名网络层。这些运行于I2P上的程序有的被捆绑在I2P的安装包中,有的需要自行下载。I2P控制台是一个Web界面,可以通过浏览器管理I2P路由器的运行,类似于现在大多数
家用路由器的管理方式。
I2PTunnel
I2PTunnel是I2P的内置程序,它可以通过#隧道将远程计算机上的端口映射为本地主机端口,从而允许任意TCP/IP程序通过I2P进行通信。
SAM
SAM协议允许任意语言编写的程序通过Socket接口使用I2P路由器。
BOB
BOB比SAM更简单的TCP类型的桥协议。
BitTorrent
I2P网络中有多个客户端支持
BitTorrent功能,每种客户端都支持Web界面的远程控制。这些客户端不允许下载含I2P外部Tracker的种子或连接I2P以外的用户,也不允许I2P外部的用户连接进来。由于匿名性的原因,目前I2P内部还没有Tracker站点开放对公网IP的支持。
I2PSnark,包含于I2P安装包中,是BitTorrent客户端Snark的移植版。
I2PRufus是Rufus BitTorrent客户端的I2P移植版,已经被基于BOB的Robert取代。
Robert是基于BOB的BT客户端
TransmissionI2P是
Transmission在Linux上尚未完成的I2P移植版。
eDonkey iMule
iMule
iMule(隐身骡)是全平台客户端
aMule的I2P移植版。
与
eDonkey不同,iMule只使用
Kademlia连接因此没有服务器。iMule自1.2.3版起携带内置的GCJ编译的I2P路由器,由于I2P的GCJ编译版效率低下版本滞后,内置路由器被I2P开发者叫停。
Gnutella I2Phex
I2Phex是
Gnutella客户端Phex的I2P移植版。
I2P-Messanger
通过I2P进行匿名通信的无服务器即时聊天程序。
Susimail
I2P免费的假名Email服务,由'Postman'维护。邮件传输服务器为pop.mail.i2p(
POP3)及smtp.mail.i2p(
SMTP)。可以通过I2PTunnel利用普通的Email客户端访问。
Susimail被编写来处理隐私问题,普通的Email客户端可能在与SMTP服务器的通信中发送用户的主机名。Susimail是Web界面的Email客户端,最初被设计来与配合Postman的邮件服务,设计中考虑到匿名性与安全性,是I2P默认安装包的一部分。可以通过I2P路由控制台访问。(注意SusiMail仅仅被设计来进行邮件的读写,邮件账户的管理需要访问www.mail.i2p。)
Syndie
Syndie是I2P的
博客程序可以同时使用
Tor网络,目前开发停滞仍处于Alpa阶段。
I2P术语
I2P用户在I2P的网站及路由界面中会遇到如下术语:
I2P匿名站点
I2P匿名站点(Eepsite)是I2P网络内的
网站。I2P站点的名称以.i2p结尾,例如ugha.i2p或forum.i2p. I2P代理(EepProxy)可以通过I2P文件夹下hosts.txt中的加密识别密钥找到这些站点。通常,必须通过I2P才能访问这些站点。对于使用加密赁集的I2P匿名网站/出口代理只有持有该站点密钥的路由器才能访问。
I2P代理
I2P代理(EepProxy)程序处理浏览器与#I2P匿名站点间的所有通信。它以
HTTP代理服务器的形式工作,适于绝大多数
浏览器。
.i2p是一个虚拟的
顶级域名只在I2P表层网络内有效。.i2p域名由浏览器提交给EepProxy进行解析,EepProxy查询到I2P用户密钥后处理数据的传输,从而使浏览器可以透明浏览I2P网络。
用户/节点
用户/节点(Peer),I2P网络中的其他计算机。I2P网络中的每台计算机都会共享带宽对拆分后加密的数据包进行路由及中转。
隧道
每10分钟,用户的I2P路由就会与新的节点创建连接,将本机数据包与其他I2P节点中转的数据包一并通过这些隧道中转传递,令数据包最终到达最终的#目标。
目标
I2P中将可到达的匿名端点(EndPoint)称为目标(Destination)在I2PTunnel中体现为主机+端口,每个I2P程序都可以创建自己的目标与其他目标间进行通信。