i2pd 配置
i2pd 可以通过命令行参数或配置文件进行配置。
修改 i2pd.conf 只是一种在 i2pd 启动时向其传递命令行参数的方式;
例如,以参数 --port=10123 运行 i2pd,与在配置文件中设置选项 port = 10123 的效果相同。
有两个独立的配置文件:i2pd.conf 和 tunnels.conf。i2pd.conf 是主配置文件,你在其中配置所有选项。tunnels.conf 是隧道配置文件,你在其中配置 I2P 隐藏服务和客户端隧道。tunnels.conf 的选项文档在此处。
i2pd.conf 接受类似 INI 的语法,例如:<键> = <值>。
注释使用 “#”,而不是你可能预想的 “;”。参见 boost 工单
所有命令行参数都可以作为键,但对于包含点号 (.) 的参数,有特殊语法。
例如:
i2pd.conf:
# 这是注释
log = true # 使用标准输出(默认)
ipv6 = true
# 针对特定模块的设置
[httpproxy]
port = 4444
# ^^ 这在命令行中将会是 --httproxy.port=
# 这是另一个注释
[sam]
enabled = true
于此同时,建议查看 contrib/i2pd.conf,其中包含带注释的配置和所有选项的示例。
命令行中指定的选项优先于配置文件中的选项。
如果你正在升级非常老的路由器(< 2.3.0),另请参见这个页面。
可用选项
运行 ./i2pd --help 显示内置的帮助信息(选项的默认值将显示在括号内)
通用选项
| 选项 |
说明 |
| conf |
配置文件位置(默认:~/.i2pd/i2pd.conf 或 /var/lib/i2pd/i2pd.conf)。如果指定的配置文件不存在,此参数将被静默忽略。 |
| tunconf |
隧道配置文件位置(默认:~/.i2pd/tunnels.conf 或 /var/lib/i2pd/tunnels.conf) |
| tunnelsdir |
额外隧道配置文件夹路径。其中的所有 *.conf 文件将自动加载(推荐用于模块化设置)(默认:或 /var/lib/i2pd/tunnels.d 或 ~/.i2pd/tunnels.d) |
| certsdir |
用于验证 .su3、family 的证书路径(默认:空) |
| pidfile |
写入 pidfile 的位置(默认:i2pd.pid,Windows 上不使用) |
| log |
日志写入位置:stdout、file、syslog(若未设置或无效则为 stdout)(若作为守护进程运行,在某些情况下 stdout/未指定 会被替换为 file) |
| logfile |
日志文件路径(默认 - 自动检测) |
| loglevel |
记录此级别及以上的日志消息(debug、info、warn、error、none;默认 - warn) |
| logclftime |
将完整的 CLF 格式日期和时间写入日志(默认:false(仅写入时间)) |
| datadir |
i2pd 数据存储路径(配置、密钥、netdb、对等节点档案等)。只能作为参数传递。 |
| host |
用于入站连接的路由器外部 IP(默认:自动(若启用 SSU2)) |
| port |
用于入站连接的监听端口(默认:自动(随机)) |
| daemon |
路由器启动后转入后台(默认:true) |
| service |
路由器将使用系统目录,如(在 unix 上)'/var/lib/i2pd' 或(在 Windows 上)'C:\ProgramData\i2pd'。在 MacOS 和 Android 上忽略(默认:false) |
| ifname |
要绑定的网络接口 |
| ifname4 |
用于绑定 IPv4 的网络接口 |
| ifname6 |
用于绑定 IPv6 的网络接口 |
| address4 |
用于绑定 IPv4 的本地地址 |
| address6 |
用于绑定明网 IPv6 的本地地址 |
| nat |
若为 true,假定我们处于 NAT 之后(默认:true) |
| ipv4 |
启用通过 IPv4 的通信(默认:true) |
| ipv6 |
启用通过明网 IPv6 的通信(默认:false) |
| notransit |
路由器将不接受中转隧道,完全禁用中转流量。将发布 G 路由能力标志(默认:false) |
| floodfill |
路由器将作为洪泛节点(默认:false) |
| bandwidth |
带宽限制:整数(每秒千字节),或字母:L(32)、O(256)、P(2048)、X(无限),或带单位的整数(b、kb、mb、gb),例如,100mb = 1000000 kb/s |
| share |
用于中转的带宽限制最大百分比。0-100(默认:100) |
| family |
路由器所属的家族名称 |
| netid |
路由器所属的网络 ID。I2P 主网为 2。 |
| reservedrange |
检查远程 RI 是否在保留 IP 范围黑名单中(默认:已启用) |
| stan |
适用于连接受限的环境(默认:false) |
说明
datadir 和 service 选项仅可作为 i2pd 的启动参数使用,在 i2pd.conf 中设置它们无效。
NTCP2
| 选项 |
说明 |
| ntcp2.enabled |
启用 NTCP2(默认:true) |
| ntcp2.published |
启用入站 NTCP2 连接(默认:true) |
| ntcp2.port |
监听入站 NTCP2 连接的端口(默认:自动 - 使用通用选项部分的 port) |
| ntcp2.addressv6 |
用于入站连接的外部 IPv6 地址 |
| ntcp2.proxy |
为 NTCP2 指定代理服务器。应为 http://address:port 或 socks://address:port |
| ntcp2.version |
协议版本。2 - 标准加密,3 - ML-KEM-512,4 - ML-KEM-768,5 - ML-KEM-1024(默认:4(启用后量子支持时),2(未启用后量子支持时)) |
SSU2
| 选项 |
说明 |
| ssu2.enabled |
启用 SSU2(默认:true) |
| ssu2.published |
启用入站 SSU2 连接(默认:true) |
| ssu2.port |
监听入站 SSU2 连接的端口(默认:自动 - 使用通用选项部分的 port) |
| ssu2.proxy |
为 SSU2 指定 UDP socks5 代理服务器。应为 socks://address:port |
| ssu2.mtu4 |
本地 IPv4 的 MTU(默认:自动) |
| ssu2.mtu6 |
本地 IPv6 的 MTU(默认:自动) |
| ssu2.firewalled4 |
即使网络状态正常也强制将 IPv4 网络状态设为 Firewalled(默认:false) |
| ssu2.firewalled6 |
即使网络状态正常也强制将 IPv6 网络状态设为 Firewalled(默认:false) |
| ssu2.version |
协议版本。2 - 标准加密,3 - ML-KEM-512,4 - ML-KEM-768(默认:2) |
以下的所有选项仍可在命令行中设置,但更建议写在配置文件中:
HTTP Web 控制台
| 选项 |
说明 |
| http.enabled |
是否启用 Web 控制台(默认:true) |
| http.address |
监听地址(HTTP 服务器) |
| http.port |
监听端口(HTTP 服务器)(默认:7070) |
| http.auth |
为 Web 控制台启用基本 HTTP 认证(默认:false) |
| http.user |
基本认证的用户名(默认:i2pd) |
| http.pass |
基本认证的密码(默认:随机,见日志) |
| http.strictheaders |
在 WebUI 上启用严格的主机名检查(默认:true) |
| http.hostname |
WebUI 期望的主机名(默认:localhost) |
| http.showTotalTCSR |
显示自路由器启动以来的总 TCSR 值(默认:false) |
| http.webroot |
Web 控制台的路径(默认:/) |
| http.lang |
Web 控制台语言(默认:english) |
| http.theme |
设置 Web 控制台的 CSS 主题。内置主题:black、white(默认:light)。要使用自定义主题,将 CSS 文件(例如 hacker.css)放在 %DataDir%/webconsole/ 并使用 --http.theme=hacker。 |
HTTP 代理
| 选项 |
说明 |
| httpproxy.enabled |
是否启用 HTTP 代理(默认:true) |
| httpproxy.address |
监听地址(HTTP 代理) |
| httpproxy.port |
监听端口(HTTP 代理)(默认:4444) |
| httpproxy.addresshelper |
启用地址助手(跳转)(默认:true) |
| httpproxy.keys |
HTTP 代理本地目标的密钥文件(可选) |
| httpproxy.signaturetype |
用于本地目标密钥的签名类型(默认:7) |
| httpproxy.inbound.length |
入站隧道长度(默认:3) |
| httpproxy.inbound.quantity |
入站隧道数量(默认:5) |
| httpproxy.inbound.lengthVariance |
入站隧道长度方差(默认:0) |
| httpproxy.outbound.length |
出站隧道长度(默认:3) |
| httpproxy.outbound.quantity |
出站隧道数量(默认:5) |
| httpproxy.outbound.lengthVariance |
出站隧道长度方差(默认:0) |
| httpproxy.outproxy |
HTTP 代理上游出站代理 URL(如 http://exit.stormycloud.i2p) |
| httpproxy.senduseragent |
是否透传用户的 User-Agent(默认:false) |
| httpproxy.i2cp.leaseSetType |
要发送的 LeaseSet 类型。1、3 或 5(默认:3) |
| httpproxy.i2cp.leaseSetEncType |
在 LeaseSet 类型为 3 或 5 时使用的加密类型,逗号分隔 |
| httpproxy.i2p.streaming.profile |
HTTP 代理带宽使用配置。1 - 批量(高),2 - 交互(低)(默认:1) |
| httpproxy.i2p.streaming.maxWindowSize |
数据流的最大窗口大小(默认:512) |
| httpproxy.latency.min |
HTTP 代理的最小隧道延迟(毫秒)(默认:0) |
| httpproxy.latency.max |
HTTP 代理的最大隧道延迟(毫秒)(默认:0) |
| httpproxy.i2cp.leaseSetPrivKey |
LeaseSet 私钥(加密 LeaseSet 的解密密钥),base64 格式。PSK 或 DH 私钥 |
| httpproxy.i2p.streaming.maxOutboundSpeed |
HTTP 代理流的最大出站速度(字节/秒)(默认:1730000000) |
| httpproxy.i2p.streaming.maxInboundSpeed |
HTTP 代理流的最大入站速度(字节/秒)(默认:1730000000) |
Socks 代理
| 选项 |
说明 |
| socksproxy.enabled |
是否启用 SOCKS 代理(默认:true) |
| socksproxy.address |
监听地址(SOCKS 代理) |
| socksproxy.port |
监听端口(SOCKS 代理)(默认:4447) |
| socksproxy.keys |
SOCKS 代理本地目的地的可选密钥文件 |
| socksproxy.signaturetype |
则用于本地目标密钥的签名类型(默认:7) |
| socksproxy.inbound.length |
入站隧道长度(默认:3) |
| socksproxy.inbound.quantity |
入站隧道数量(默认:5) |
| socksproxy.inbound.lengthVariance |
入站隧道长度方差(默认:0) |
| socksproxy.outbound.length |
出站隧道长度(默认:3) |
| socksproxy.outbound.quantity |
出站隧道数量(默认:5) |
| socksproxy.outbound.lengthVariance |
出站隧道长度方差(默认:0) |
| socksproxy.outproxy.enabled |
启用或禁用 SOCKS5 出站代理(默认:false) |
| socksproxy.outproxy |
出站代理地址(IP 或本地)。I2P 外的请求将发送到此处。 |
| socksproxy.outproxyport |
出站代理端口。若为 0,socksproxy.outproxy 的路径为本地套接字 |
| socksproxy.i2cp.leaseSetType |
要发送的 LeaseSet 类型。1、3 或 5(默认:3) |
| socksproxy.i2cp.leaseSetEncType |
在 LeaseSet 类型为 3 或 5 时使用的加密类型,逗号分隔 |
| socksproxy.i2p.streaming.profile |
SOCKS 代理带宽使用配置。1 - 批量(高),2 - 交互(低)(默认:1) |
| socksproxy.i2p.streaming.maxWindowSize |
数据流的最大窗口大小(默认:512) |
| socksproxy.latency.min |
SOCKS 代理的最小隧道延迟(毫秒)(默认:0) |
| socksproxy.latency.max |
SOCKS 代理的最大隧道延迟(毫秒)(默认:0) |
| socksproxy.i2cp.leaseSetPrivKey |
LeaseSet 私钥(加密 LeaseSet 的解密密钥),base64 格式。PSK 或 DH 私钥 |
| socksproxy.i2p.streaming.maxOutboundSpeed |
SOCKS 代理流的最大出站速度(字节/秒)(默认:1730000000) |
| socksproxy.i2p.streaming.maxInboundSpeed |
SOCKS 代理流的最大入站速度(字节/秒)(默认:1730000000) |
SAM 接口
| 选项 |
说明 |
| sam.enabled |
是否启用 SAM(默认:true) |
| sam.address |
监听地址(SAM 桥) |
| sam.port |
SAM 桥端口。通常为 7656。若未指定则关闭 SAM |
| sam.portudp |
SAM 桥的 UDP 端口。通常为 7655。 |
| sam.singlethread |
若为 false,每个 SAM 会话在自己的线程中运行(默认:true) |
BOB 接口
| 选项 |
说明 |
| bob.enabled |
是否启用 BOB(默认:false) |
| bob.address |
监听地址(BOB 命令通道) |
| bob.port |
BOB 命令通道端口。通常为 2827。若未指定则关闭 BOB |
I2CP 接口
| 选项 |
说明 |
| i2cp.enabled |
是否启用 I2CP(默认:true) |
| i2cp.address |
监听地址,或 Android LocalSocket 的抽象地址 |
| i2cp.port |
I2CP 服务器端口。通常为 7654。Android 上忽略此项 |
| i2cp.singlethread |
若为 false,每个 I2CP 会话在自己的线程中运行(默认:true) |
| i2cp.inboundlimit |
在 BandwidthLimitsMessage 中返回的客户端入站限制(KBps)。若为 0 则为路由器带宽(默认:0) |
| i2cp.outboundlimit |
在 BandwidthLimitsMessage 中返回的客户端出站限制(KBps)。若为 0 则为路由器带宽(默认:0) |
I2PControl 接口
| 选项 |
说明 |
| i2pcontrol.enabled |
是否启用 I2P control(默认:false) |
| i2pcontrol.address |
监听地址(IP 或本地套接字路径) |
| i2pcontrol.port |
I2P control 服务端口。通常为 7650。若为 0,则 i2pcontrol.address 包含本地套接字路径 |
| i2pcontrol.password |
I2P control 认证密码(默认:itoopie) |
| i2pcontrol.cert |
I2P control HTTPS 证书文件名(默认:i2pcontrol.crt.pem) |
| i2pcontrol.key |
I2P control HTTPS 证书密钥文件名(默认:i2pcontrol.key.pem) |
UPNP
| 选项 |
说明 |
| upnp.enabled |
启用或禁用 UPnP,CLI 默认为 false,GUI(Windows、Android)默认为 true |
| upnp.name |
i2pd 在 UPnP 转发表中的显示名称(默认:I2Pd) |
密码学
| 选项 |
说明 |
| precomputation.elgamal |
使用 ElGamal 预计算表(x86-64 默认为 false,其他平台为 true) |
补种(Reseeding)
| 选项 |
说明 |
| reseed.verify |
验证 .su3 签名(默认:false) |
| reseed.urls |
Reseed 的 URL,逗号分隔 |
| reseed.yggurls |
Yggdrasil 的 Reseed URL,逗号分隔 |
| reseed.file |
本地 .su3 文件路径或用于 Reseed 的 HTTPS URL |
| reseed.zipfile |
用于 Reseed 的本地 .zip 文件路径 |
| reseed.threshold |
在请求 Reseed 前已知路由器的最小数量(默认:25) |
| reseed.proxy |
用于 Reseed 的 https/socks 代理的 URL |
| reseed.floodfill |
被忽略。始终为空。用于从中补种的 floodfill 路由器信息路径。 |
| reseed.followredirect |
从 URL 补种时是否跟随重定向(默认:false) |
地址簿选项
| 选项 |
说明 |
| addressbook.enabled |
启用或禁用地址簿(默认:true) |
| addressbook.defaulturl |
地址簿订阅 URL。仅用于初始化地址簿。 |
| addressbook.subscriptions |
地址簿订阅的 URL,逗号分隔。注意 defaulturl 不会自动加入订阅 URL |
| addressbook.hostsfile |
以 hosts.txt 格式导出地址簿的文件 |
限制
| 选项 |
说明 |
| limits.transittunnels |
覆盖中转隧道的最大数量(默认:10000) |
| limits.openfiles |
限制打开的文件描述符数量(默认:0 - 使用系统限制) |
| limits.coresize |
corefile 的最大大小(KB)(默认:0 - 使用系统限制) |
| limits.zombies |
若成功创建的隧道比例低于该最小百分比,则暂停隧道清理(默认 [%]:0.00) |
信任选项
| 选项 |
说明 |
| trust.enabled |
启用显式信任选项(默认:false) |
| trust.family |
仅与指定 Family 中的路由器建立直接 I2P 连接 |
| trust.routers |
仅与此处指定的路由器建立直接 I2P 连接。使用以逗号分隔的 base64 身份列表 |
| trust.hidden |
是否对其他路由器隐藏本路由器?(默认:false) |
探测(Exploratory)隧道
| 选项 |
说明 |
| exploratory.inbound.length |
探测隧道入站长度(默认:2) |
| exploratory.inbound.quantity |
探测隧道入站数量(默认:3) |
| exploratory.outbound.length |
探测隧道出站长度(默认:2) |
| exploratory.outbound.quantity |
探测隧道出站数量(默认:3) |
共享本地目标
| 选项 |
说明 |
| shareddest.inbound.length |
共享本地目标的入站隧道长度(默认:3) |
| shareddest.inbound.quantity |
共享本地目标的入站隧道数量(默认:3) |
| shareddest.outbound.length |
共享本地目标的出站隧道长度(默认:3) |
| shareddest.outbound.quantity |
共享本地目标的出站隧道数量(默认:3) |
| shareddest.i2cp.leaseSetType |
共享本地目标的 LeaseSet 类型(默认:3) |
| shareddest.i2cp.leaseSetEncType |
共享本地目标的 LeaseSet 加密类型(默认:0,4) |
| shareddest.i2p.streaming.profile |
共享本地目标的带宽使用配置(默认:2) |
时间同步
| 选项 |
说明 |
| nettime.enabled |
启用 NTP 同步(默认:false) |
| nettime.ntpservers |
NTP 服务器的逗号分隔列表(默认:pool.ntp.org) |
| nettime.ntpsyncinterval |
NTP 时间同步间隔(小时)(默认:72) |
| nettime.frompeers |
从传输层对等节点同步时钟(默认:true) |
网络信息持久化
| 选项 |
说明 |
| persist.profiles |
将对等节点档案持久化到磁盘(默认:true) |
| persist.addressbook |
将完整地址保存到磁盘(默认:true) |
网状网络传输
| 选项 |
说明 |
| meshnets.yggdrasil |
支持通过 Yggdrasil 的传输(默认:false) |
| meshnets.yggaddress |
用于发布的本地 Yggdrasil 地址 |
Windows 特定选项
| 选项 |
说明 |
| insomnia |
防止系统休眠 |
| close |
关闭时的动作:最小化、退出、询问 |
UNIX 特定选项
| 选项 |
说明 |
| unix.handle_sigtstp |
处理 SIGTSTP 与 SIGCONT 信号(默认:false) |
handle_sigtstp 启用对 SIGTSTP 和 SIGCONT 信号的处理(自 2.43.0 起)。
可以使用在运行 i2pd 的终端里按 Ctrl+Z 或通过 kill 命令来发送 SIGTSTP。收到该信号后,i2pd 将切换到离线模式,停止发送流量并停止清理 netDb。所有活动隧道将被冻结。
要恢复网络连接,你需要向该进程发送 SIGCONT 信号。若隧道在冻结状态期间到期,它们将被清除,并建立新的隧道。
本地地址簿
工作目录中还有一个特殊的地址簿配置文件 addressbook/local.csv。
如果你在路由器上运行该二级域(2ld)地址并且它已在地址簿中呈现,它可让你的路由器充当三级域(3ld)域名的解析器。
只有 i2pd 能解析此类地址,通过发送特殊的数据报请求来完成。