在VPS上搭建i2pd出口代理教程
Posted: 30 Sep 2022 18:51
以下先行准备工作不做具体说明,默认阅读此篇教程的读者有Linux系统的基础技能,对i2p的界面及使用有基本的了解:
a.请在你的本地计算机中,安装i2p java 版本,并进入路由器家族配置页;若没有路由器家族,请点击创建,然后导出家族密钥;若已经创建,直接导出家族密钥。
b.导出后的家族密钥,内容如下图: 将密钥文件的第1到第4行,复制粘贴到新文件保存,例i2pProxy.key,该文件为家族密钥私匙;将密钥文件的第5至最后一行复制粘贴到新文件保存,i2pProxy.crt,该文件为家族密钥证书,后续的步骤会将这两个文件分别配置在i2pd的不同目录中。
c.用如下指令,拉取i2pd-tools的源代码用deboot搭建debian 11编译环境,然后进入i2pd-tools目录,编译i2pd-tools工具,编译前,请先阅读README文件,编译后有两个重要的二进制执行档(keygen和keyinfo)可在后续步骤中生成出口代理的b32地址及站点私钥文件。
如果这一步,比较困难,请在github上检索是否有现成的keygen keyinfo执行文件;实在检索不到,就下载Windows Exe执行文件,切换到WIndows系统下来生成站点私钥文件
d.购买境外VPS,操作系统请选择debian 11.
上述准备工作中,a和b可能并不是必须的,只是认为将vps的i2pd和本地主机上加入同一个路由器族,可以更快的相互识别,在i2p网络节点变化的过程中,本地节点不易与vps节点失联;当然我配置的时候是有加入路由器族的。大家也可以测试一下不加入路由器族的情况。应该也是可以的。在参考这篇关于出口代理的文章中,也未提及路由器族
开始正式的步骤:
1.登录vps,安装i2pd和tinyproxy,请不要直接使用debian 软件库中的i2pd,自启动会出问题,按如下顺序来安装i2pd:
2.加入路由器族
把家族路由私钥文件(i2pProxy.key)放在这个路径:/var/lib/i2pd/family,
把家族路由证书文件(i2pProxy,crt)放在这个路径:/var/lib/i2pd/certificates/family
3.使用keygen生成站点私钥,使用keyinfo生成b32.i2p地址,此处可在Win系统下生成文件,只要将生成的文件上传到服务器并放在如下指定路径即可:
例:./keygen myoutproxy-key.dat (默认signaturetype为7,必须为7,否则地址无效)
./keyinfo -v myoutproxy-key.dat > myoutproxy.b32addr
请将myoutproxy-key.dat放在/var/lib/i2pd
用myoutproxy.b32addr文件内的地址,将本地主机i2p的默认出口代理false.i2p替换掉
4.配置tinyproxy配置文件:
在/etc/tinyproxy/tinyproxy.conf中,贴上如下配置
配置中,存在过滤文件filter,需放行本地地址,
在/etc/tinyproxy中创建filter文件,并贴上如下内容:
5.配置i2pd
a.创建服务隧道,在/var/lib/i2pd/tunnels.d中创建配置文件proxy.conf,并贴上如下配置:
其中keys项需对应步骤3中生成的私匙,文件名须一致。
b.在/etc/i2pd/i2pd.conf中:
family项需设置为family=i2pProxy(即密钥文件名去掉后缀后的名称),才能成功加入路由家族。
其余选项设置如下:
6.重启i2pd,tinyproxy服务,等待一段时间,本地节点与vps远程节点通信后,
本地主机即可使用自建的出口代理服务。
测试方法:只要在浏览器代理设置为http://127.0.0.1:4444的情况下,输入步骤3中生成的b32.i2p地址,若页面显示tinyproxy的默认页面,则证明已经与远程vps建立通信,可使用该出口代理。
若出现host down,则需等待一段时间。
若长时间出错,请查看/var/log/tinyproxy.log 错误日志。
a.请在你的本地计算机中,安装i2p java 版本,并进入路由器家族配置页;若没有路由器家族,请点击创建,然后导出家族密钥;若已经创建,直接导出家族密钥。
b.导出后的家族密钥,内容如下图: 将密钥文件的第1到第4行,复制粘贴到新文件保存,例i2pProxy.key,该文件为家族密钥私匙;将密钥文件的第5至最后一行复制粘贴到新文件保存,i2pProxy.crt,该文件为家族密钥证书,后续的步骤会将这两个文件分别配置在i2pd的不同目录中。
c.用如下指令,拉取i2pd-tools的源代码
Code: Select all
git clone --recursive https://github.com/purplei2p/i2pd-tools
如果这一步,比较困难,请在github上检索是否有现成的keygen keyinfo执行文件;实在检索不到,就下载Windows Exe执行文件,切换到WIndows系统下来生成站点私钥文件
d.购买境外VPS,操作系统请选择debian 11.
上述准备工作中,a和b可能并不是必须的,只是认为将vps的i2pd和本地主机上加入同一个路由器族,可以更快的相互识别,在i2p网络节点变化的过程中,本地节点不易与vps节点失联;当然我配置的时候是有加入路由器族的。大家也可以测试一下不加入路由器族的情况。应该也是可以的。在参考这篇关于出口代理的文章中,也未提及路由器族
开始正式的步骤:
1.登录vps,安装i2pd和tinyproxy,请不要直接使用debian 软件库中的i2pd,自启动会出问题,按如下顺序来安装i2pd:
Code: Select all
apt-get install apt-transport-https
wget -q -O - https://repo.i2pd.xyz/.help/add_repo | bash -s -
apt-get update
apt-get install i2pd tinyproxy
把家族路由私钥文件(i2pProxy.key)放在这个路径:/var/lib/i2pd/family,
把家族路由证书文件(i2pProxy,crt)放在这个路径:/var/lib/i2pd/certificates/family
3.使用keygen生成站点私钥,使用keyinfo生成b32.i2p地址,此处可在Win系统下生成文件,只要将生成的文件上传到服务器并放在如下指定路径即可:
例:./keygen myoutproxy-key.dat (默认signaturetype为7,必须为7,否则地址无效)
./keyinfo -v myoutproxy-key.dat > myoutproxy.b32addr
请将myoutproxy-key.dat放在/var/lib/i2pd
用myoutproxy.b32addr文件内的地址,将本地主机i2p的默认出口代理false.i2p替换掉
4.配置tinyproxy配置文件:
在/etc/tinyproxy/tinyproxy.conf中,贴上如下配置
Code: Select all
User tinyproxy
Group tinyproxy
Port 8888
Listen 127.0.0.1
Timeout 600
DefaultErrorFile "/usr/share/tinyproxy/default.html"
MaxClients 100
LogLevel Warning
PidFile "/run/tinyproxy/tinyproxy.pid"
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
Allow 127.0.0.1/8
ViaProxyName "tinyproxy"
Filter "/etc/tinyproxy/filter"
FilterExtended On
ConnectPort 443
在/etc/tinyproxy中创建filter文件,并贴上如下内容:
Code: Select all
^127\.
^10\.
5.配置i2pd
a.创建服务隧道,在/var/lib/i2pd/tunnels.d中创建配置文件proxy.conf,并贴上如下配置:
Code: Select all
[outproxy]
type=server
host=127.0.0.1
port=8888
keys=myoutproxy-key.dat
signaturetype=7
inbound.length=1
outbound.length=1
b.在/etc/i2pd/i2pd.conf中:
family项需设置为family=i2pProxy(即密钥文件名去掉后缀后的名称),才能成功加入路由家族。
其余选项设置如下:
Code: Select all
ntcp=false
ssu=true
notransit=true
本地主机即可使用自建的出口代理服务。
测试方法:只要在浏览器代理设置为http://127.0.0.1:4444的情况下,输入步骤3中生成的b32.i2p地址,若页面显示tinyproxy的默认页面,则证明已经与远程vps建立通信,可使用该出口代理。
若出现host down,则需等待一段时间。
若长时间出错,请查看/var/log/tinyproxy.log 错误日志。