0%

i2p折腾心得

i2p折腾心得

本文主要为本人折腾i2p时的心得,主要包括搭建i2pd,i2p vs i2pd,i2pd的配置等,内容较杂乱且较长,欢迎跳跃阅读。

注:这个i2p搞得我人裂开,项目文档太少,又各种描述不清,更不用说缺少中文教程这种东西了 !

FAQ

照例,我只写主要的,各种琐碎的具体细节请看相关具体章节。

  • 什么是i2p?

The Invisible Internet Project (I2P) is a fully encrypted private network layer that has been developed with privacy and security by design in order to provide protection for your activity, location and your identity. The software ships with a router that connects you to the network and applications for sharing, communicating and building.

说人话就是一个暗网协议(dark web protocol)。

  • 它是拿来干啥的?

i2p主要能拿来访问i2p网站,或者任何以TCP协议为基础的应用(指i2p网络内部)。

  • 为什么要用它?

我个人只是出于无聊才来玩的这个,没有什么特别的原因。

  • 用它具体能干什么?

可以发匿名邮件,可以使用匿名聊天软件,匿名bittorrent等。

  • 它的主要缺点是什么?

过于缓慢,毕竟强匿名性要以速度为代价(? 他们官网是这么写的,但是我觉得是他们把软件的默认带宽上限设置的太低造成的,神尼玛25
kb/s,我人裂开)。

  • i2p能拿来绕过China-GFW吗?

可以,但是非常缓慢,不推荐使用(25kb/s用尼玛呢)。

  • i2p的具体实现软件有哪些?

java i2p 以及 c++ i2pd。具体看下文内容。

i2p vs i2pd

i2p的实现有两种: java写的i2p以及c++写的i2pd。

哪种比较好?

我个人仅推荐c++实现的i2pd,因为java实现的i2p网络效能没有c++实现的优秀,因此使用体验上差距较大(此为主观意见)。

安装i2pd

此章节主要为i2pd安装相关内容。

至于需要root/sudoer权限这种事情就不要让我重复了 !

  • Debian
1
2
3
wget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s -
apt-get update
apt-get install i2pd -y
  • Ubuntu
1
2
3
sudo add-apt-repository ppa:purplei2p/i2pd -y
sudo apt-get update
sudo apt-get install i2pd -y
  • Windows

下载最新版exe

安装i2pd即可。

如果你和我一样懒惰,不想每次开机都手动启动,可以将i2pd设置为windows service。

下文配置默认为作为windows service下的配置,如不打算作为service使用,则配置文件在当前用户所在Appdata里面。

win键右键打开admin powershell。

1
C:\"Program Files"\I2Pd\i2pd.exe --svcctl=install

win+R,输入services.msc可见i2pd router service,每次修改完成配置文件请自行重启以生效。


安装完成后我们需要先配置i2pd。

配置i2pd(此为关键章节)

更多请看i2pd.sh

配置文件位置

  • Debian/Ubuntu

/etc/i2pd/i2pd.conf

  • Windows service

C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\i2pd\i2pd.conf

  • non windows service

C:\Users\${当前用户}\AppData\Roaming\i2pd\i2pd.conf


修改配置文件(极其重要!)

  1. 启用ipv6

哪怕你没有ipv6公网ip,启用ipv6也是有用的(虽然我不知道具体原理)。

找到ipv6 = false改为ipv6 = true

  1. 修改默认的带宽限制

默认的25kb/s用尼玛呢。

找到# bandwidth = L,去掉注释改为bandwidth = X

  1. (可选项)开启Floodfill算法

这个选项推荐开启,开启后可以获取更多节点信息,对连接质量提升有帮助。

找到# floodfill = true,去掉注释改为floodfill = true

  1. 开启upnp(主动式端口转发,等我有心情了可以专门写篇这个相关的内容)

找到[upnp],将下方的enable改为true,注释去掉即可。

  1. 补种(听说被墙了?)

[reseed]选项下,此选项无需修改。如果提示 补种失败(reseed fail) ,请将下方的# proxy = socks://127.0.0.1:1080去掉注释,指向现有的代理软件即可(socks好像不是socks5协议,所以需要的话请使用http代理)

  1. 地址簿

此项在[addressbook]下。

这个非常关键,i2pd自带的大部分地址簿订阅url已失效,需要更换

找到defaulturl,去掉整行,改为defaulturl = http://xk6ypey2az23vtdkitjxvanlshztmjs2ekd6sp77m4obszf6ocfq.b32.i2p/hosts.txt

找到subscriptions,照例,改为subscriptions = http://xk6ypey2az23vtdkitjxvanlshztmjs2ekd6sp77m4obszf6ocfq.b32.i2p/alive-hosts.txt,http://kqypgjpjwrphnzebod5ev3ts2vtii6e5tntrg4rnfijqc7rypldq.b32.i2p/cgi-bin/newhosts.txt,http://gh6655arkncnbrzq5tmq4xpn36734d4tdza6flbw5xppye2dt6ga.b32.i2p/hosts.txt

  1. 设置ntcp2

添加以下内容至配置文件中

1
2
3
4
[ntcp2]

enabled =true
published = true
  1. 启用i2cp

找到[i2cp],将下方的enable选项改为enabled = true即可。

  1. 开启明网访问

找到outproxy = http://false.i2p,去掉注释即可。

  1. 增加探测隧道数量,提升访问可靠性。

找到outbound.quantity以及inbound.quantity,改成16就行。

  1. 其他选项

其他选项皆为可选项,如无特殊需求,就不用管了。


配置完成,现在重启服务使配置生效。

  • Debian/Ubuntu

systemctl restart i2pd

  • Windows

win+R,services.msc,重启i2pd router service即可。

i2pd Webconsole

i2pd有Webconsole,127.0.0.1:7070。

webconsole

哦,没有中文,那我稍微讲解一下好了。

  • Uptime: 已在线时长
  • Network status: 网络状况,我只见过OK,如果显示其他的,那么八成你的网络有问题
  • Tunnel creation success rate: 隧道建立成功率,越高越好,官网说10% ~ 40%之间为正常,我个人为20+%。
  • Received,sent,transit为网络流量使用量,没啥可讲的。
  • Data path: 持久化储存数据位置(说人话就是配置文件等东西的位置)。
  • Routers Floodfills leasesets: 已知节点数量,越高越好,一般为几k左右(有公网ipv6的话更多点)。
  • Client Tunnels Transit Tunnels: 已建立的隧道数量,(越高越好?),这个真不太清楚。

以下为Hidden content内容:

  • Router Ident: 节点的ID,具体怎么实现的我不知道。
  • Router caps: 节点分类,第一个字母为支援带宽大小(X为最大,L为最低,其他的请看i2p的官网),若有 f 则为floodfill节点,R则表示网络可达,U则表示网络不可达(可怜的内网ip宽带用户,2333)。
  • external address: 节点的公网ip

啊,其余的不怎么重要,就懒得写了。

i2pd使用方法

我只写使用swithch omega的方法。

新建情景模式 i2p –> 代理协议: HTTP –> 代理伺服器: 127.0.0.1 –> 端口: 4444

保存,然后用就是了。

i2p测试网站

以下皆为.i2p网站,仅用于测试连通性,更多内容请自行搜索。

如果你能够正常访问,那么i2pd就可以正常使用了。

自建i2p网站

在tunnel.conf中添加以下选项即可。

1
2
3
4
5
[my-website]
type = http
host = 127.0.0.1
port = 80
keys = my-website.dat

生成的地址在webconsole中的i2p tunnels选项下。

需要人类可读性的话可以去stats.i2p注册一下就行,我懒的干。

注册Addressbook

更新于2021.2.16.

前往stats.i2p注册,使用此工具获取Auth String

Auth String获取方法

安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /etc/i2pd/
depend="libboost-chrono-dev \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-system-dev \
libboost-thread-dev \
libssl-dev \
zlib1g-dev"
apt-get install -y $depend
git clone --recursive https://github.com/purplei2p/i2pd-tools
cd /etc/i2pd/i2pd-tools
make

获取Auth String

前往i2pd Webconsole获取Base64

Base64在Local Destination下,具体哪个是网站的地址得看i2p tunnels页面

1
2
./regaddr /var/lib/i2pd/my-website.dat 你想注册的.i2p > auth_string.txt
cat auth_string.txt

然后去注册就行。

本站的i2p链接

http://wpkz5yhyfkhpnxv5enkqs677j3ydie4jsuhma5yb5nl4xf2szicq.b32.i2p

或者

http://johnrosen1.i2p

题外话

这个i2p以及i2pd文档不全实在是难顶,我不得不参考了大量相关资料以了解各个功能的作用及使用方法,可以说是十分劝退了,希望本文能够帮助那些对i2p有兴趣的人士以及像我一样无聊的人。

附: addresses.csv 以及 hosts.txt 为address book内容,你可以在这里面找到更多的i2p网站。