居然一直没写过i2p,写一下

what is it

i2p是一种基于点对点路由的匿名通信方式,通过客户端作为节点的方式在硬件路由上又添加了一层路由,通过一段等长的base64编码作为地址进行寻址,由地址簿服务器的方式提供域名注册服务,从而实现匿名服务和匿名访问的效果。当然是他不是完全安全的(跟你直连的节点是知道你的ip的,当然这对匿名性影响不是很大),相比于tor他有更强的自恢复力。

在知网上可以找到很多关于识别和拦截i2p包的论文,事实情况的i2p的流量特征确实比较明显,但是目前并没有进行拦截。如果是为了对抗审查那么同一个域中的i2p节点够多的情况下才能保证匿名度。你使用并不是秘密,秘密的是你数据。

运行原理

i2p将路由信息记录在netdb中(floodfill节点存有整个网络的路由信息),当要访问某一个地址时会在netdb中查找路由方式,然后发送建立隧道的数据包,直到隧道完成建立。而隧道是单向的,如果要建立双向通信就要建立两个隧道。

地址簿

i2p提供了域名解析服务,但是是通过类似hosts的方式。有提供注册服务的站点,注册后会将域名放入公共地址簿中,然后通过订阅的方式分发到各个节点。

i2pd

why

相比于java客户端,c客户端耗内存更小,可定制性也更强,而且有手册和配置文件,而不是只有一个ui界面

手册

手册在这手册的教程可以说写的很全了,大可以直接看手册,这里不做复述

配置

以下是装完过后我认为需要修改的默认配置

1
2
3
4
ipv6=true # 开启ipv6支持,一般人没有ipv4公网地址,开启这个能加速
bandwidth=x # 原理上讲宽带设置越大匿名性越低但是他快
nat=true # 假定在nat后,如果你确实有公网ip的话可以关掉这个
floodfill=true # 开启洪泛,会增加占用,同时对其他节点进行补种,如果你可以稳定运行的话建议开一下

补种

补种有多种方式,可以用网络和本地文件,也可以用洪泛节点,这里给一个补种服务器,点进去之后将网络su3文件路径添加到配置文件中重新启动即可。

隧道

可以配置tunnel从而实现i2p服务端口和本地端口间的映射。默认给了两个irc的隧道配置,原则上所有明网的服务都可以通过隧道代理的方式接入i2p,也可以通过隧道将i2p的服务映射到本地端口。

使用原则

  • 尽量不要强制关闭,特别是当你是中转节点是,因为租借期相邻节点突然下线会影响其他节点的连接
  • 尽可能的长时间运行,稳定节点越多路由越健壮
  • 不要依赖出口节点,原则上i2p不应该接入明网,记得感谢提供出口的大好人
  • reg.i2p说有冒犯性的站点会被他们从地址簿中隐藏,当然我不知道什么叫有冒犯性的白命贵的就不说了,之前还有个kkk的

bob和sam

这两个接口提供了直接调用i2p底层操作的api,一般在使用为i2p设计的软件时需要。