Hyphanet 0.7.5 配置参数详解
Hyphanet 0.7.5 配置参数详解:freenet.ini 与 wrapper.conf 参数查看修改方式、网络端口/存储/带宽/安全级别/插件/JVM 堆逐项解释与生产配置模板,基于 build01507 实测。
Hyphanet 0.7.5 配置参数详解
目标:读完本文你将掌握 Hyphanet 0.7.5 的三种参数查看与修改方式,理解 87 行实测
freenet.ini与wrapper.conf中每个核心参数的含义与取值,并能按生产模板完成安全加固与性能调优,已在 Ubuntu 22.04(OpenJDK 17)实测通过。
环境信息:本文所有配置内容与回显均取自下列实测环境(节点关闭状态下导出的真实配置文件)。
| 项目 | 内容 |
|---|---|
| 软件版本 | Hyphanet 0.7.5 Build #1507(build01507) |
| 操作系统 | Ubuntu 22.04 LTS(amd64) |
| Java 环境 | OpenJDK 17.0.20.1(openjdk-17-jre-headless) |
| 安装路径 | /opt/hyphanet |
| 网络模式 | Darknet + Opennet 双开 |
| 实测日期 | 2026-10-26 |
安装步骤见 《Ubuntu 22.04 安装 Hyphanet 0.7.5 指南》,项目背景见 《Hyphanet 0.7.5 介绍与选型指南》。
一、前置条件
1.1 已完成安装并可访问 Web 界面
确认节点可管理(实测命令与回显):
cd /opt/hyphanet
./run.sh status
curl -sI http://127.0.0.1:8888/ | head -1
Freenet 0.7 is running (52573).
HTTP/1.1 200 OK
1.2 明确配置文件的分工
| 文件 | 职责 | 修改方式 |
|---|---|---|
freenet.ini | 节点业务参数(端口、存储、带宽、安全级别、插件等) | Web 配置页(推荐)或节点停止时手工编辑 |
wrapper.conf | JVM 进程参数(内存、classpath、启动附加参数、日志滚动) | 停止节点后手工编辑,重启生效 |
二、参数查看与修改方式
Hyphanet 提供三种参数管理途径,实测验证如下。
2.1 Web 配置页(推荐)
浏览器打开 http://127.0.0.1:8888/config/node(核心设置)、/config/fproxy(Web 界面设置)、/seclevels/(安全级别)。实测各页面均可访问:
/config/node 200 Freenet Node Configuration - Freenet
/config/fproxy 200 Freenet Node Configuration - Freenet
/seclevels/ 200 Security levels - Freenet
在 Web 页修改后点击 Apply 即写回 freenet.ini,多数参数即时生效或提示需重启。
2.2 直接编辑 freenet.ini
文件首行的官方注释(实测原文)决定了编辑时机:
# This file is overwritten whenever Freenet shuts down, so only edit it when the node is not running.
即节点关闭时会回写 freenet.ini:运行中手工编辑会被覆盖。正确流程:
cd /opt/hyphanet
./run.sh stop
vi freenet.ini
./run.sh start
2.3 修改后如何验证生效
业务参数可在 Web 界面复核(如 /stats/ 带宽区显示 Input Rate 20.8 KiB/s (of 1.0 MiB/s),限速值即时反映);JVM 参数用 ps 核对(见 6.2 节实测回显)。
三、参数总览
实测 freenet.ini 共 87 行,按前缀分类如下:
| 前缀 | 职责 | 实测行数 |
|---|---|---|
node.* | 核心节点参数(端口、存储、带宽、路径、负载) | 最多 |
node.opennet.* | Opennet 全球模式 | 4 行 |
node.install.* | 目录布局 | 9 行 |
node.updater.* | 自动更新 | 4 行 |
security-levels.* | 安全级别 | 2 行 |
fproxy.* | Web 界面 | 11 行 |
fcp.* | FCP 应用协议 | 5 行 |
pluginmanager.* | 插件加载 | 2 行 |
logger.* | 日志 | 2 行 |
ssl.* / console.* | TLS 与控制台(默认关闭) | 9 行 |
完整原文件可从安装目录查看;下文按功能分类逐项解释核心参数,取值全部为实测环境的真实值。
四、核心参数分类详解
4.1 网络与端口(node.*)
node.listenPort=17420
node.bindTo=0.0.0.0
node.assumeNATed=true
node.opennet.enabled=true
node.opennet.listenPort=39121
node.opennet.assumeNATed=true
node.maxPacketSize=1280
node.connectionSpeedDetection=true
node.listenPort:Darknet 节点间通信的 UDP 端口;node.opennet.listenPort为 Opennet 的 UDP 端口。两者都是 UDP,改端口后需同步调整防火墙;node.bindTo:节点套接字绑定地址,支持逗号分隔多地址(如127.0.0.1,0:0:0:0:0:0:0:1的写法在 fproxy/fcp 中实测可见),需对外互联时保持0.0.0.0;node.assumeNATed:声明节点位于 NAT 之后,不尝试直连探测,实测家用/内网环境保持true即可正常出网;node.maxPacketSize=1280:单包上限按最小 MTU 设计,保证穿透各类隧道,无特殊需求不改;node.connectionSpeedDetection:启动时检测链路速度并给出带宽建议。
4.2 FProxy Web 界面与访问控制(fproxy.*)
fproxy.enabled=true
fproxy.port=8888
fproxy.bindTo=127.0.0.1,0:0:0:0:0:0:0:1
fproxy.allowedHosts=127.0.0.1,0:0:0:0:0:0:0:1
fproxy.allowedHostsFullAccess=127.0.0.1,0:0:0:0:0:0:0:1
fproxy.publicGatewayMode=false
fproxy.showPanicButton=false
fproxy.noConfirmPanic=false
fproxy.enableCachingForChkAndSskKeys=false
fproxy.hasCompletedWizard=true
fproxy.ssl=false
fproxy.bindTo+fproxy.allowedHosts:双保险。前者限定监听网卡(默认仅回环),后者限定允许发起请求的客户端 IP。要让局域网访问,两者都需加入内网地址,并意识到风险;fproxy.allowedHostsFullAccess:列表内主机拥有完整权限(含配置修改等敏感操作),默认与 allowedHosts 相同,仅建议对回环开放;fproxy.publicGatewayMode:公共网关模式(如给多人共用一台入口时开启),开启后匿名访客权限受限,个人节点保持false;fproxy.enableCachingForChkAndSskKeys:是否允许浏览器缓存 FProxy 返回的密钥内容,出于本机取证安全默认false;fproxy.showPanicButton/noConfirmPanic:紧急按钮显示与二次确认,取证敏感环境可开启并关闭确认。
配套的 TLS 参数默认关闭(实测):ssl.sslEnable=false、ssl.sslHSTS=0、证书库 ssl.sslKeyStore=datastore/certs。FProxy 仅监听回环时无需开启 TLS。
4.3 FCP 应用协议端口(fcp.*)
fcp.enabled=true(随 enabled 组合生效)
fcp.port=9481
fcp.bindTo=127.0.0.1,0:0:0:0:0:0:0:1
fcp.allowedHosts=127.0.0.1,0:0:0:0:0:0:0:1
fcp.allowedHostsFullAccess=127.0.0.1,0:0:0:0:0:0:0:1
语义与 fproxy 一致:监听回环 + 白名单。第三方客户端(如 jSite)与节点同机时无需改动;跨机访问需把客户端 IP 加入 allowedHosts 并绑定对应网卡,务必不要把 allowedHostsFullAccess 放开到不可信网段。
4.4 存储(datastore)参数(node.store*)
node.storeSize=18736826286
node.storeType=salt-hash
node.storePreallocate=true
node.clientCacheSize=209715200
node.clientCacheType=salt-hash
node.slashdotCacheSize=294912k
node.minDiskFreeShortTerm=536870912
node.minDiskFreeLongTerm=1073741824
node.storeSize:主存储字节数,实测 18,736,826,286 ≈ 17.4 GiB(安装向导按磁盘空闲自动分配)。调大调小都需重启节点,调大前确认磁盘余量;node.storeType=salt-hash:加盐哈希存储后端(当前版本默认),文件位于datastore/目录;node.storePreallocate=true:启动时预分配空间,避免运行期碎片化,实测datastore/目录在首次启动即占约 19 GB;- 存储分四级(与 storeSize 无关的独立配置):主 Store(长期)、Cache(中转)、Slashdot cache(热点,
node.slashdotCacheSize=294912k)、Client cache(本机访问历史,node.clientCacheSize=209715200即 200 MB);每级再按 CHK/SSK/Pubkey 三类密钥划分,实测/diagnostic/可看到 12 个分区的 Keys/Capacity/Utilization 统计; node.minDiskFreeShortTerm/LongTerm:磁盘剩余空间保护阈值(536 MB / 1 GiB),低于阈值时暂停写入类操作,防磁盘写满。
目录布局族 node.install.*(实测值,一般不改):
node.install.cfgDir=.
node.install.storeDir=./datastore
node.install.tempDir=./temp
node.install.persistentTempDir=./persistent-temp
node.install.pluginDir=./plugins
node.install.pluginStoresDir=plugin-data
node.install.userDir=.
node.install.runDir=.
node.install.nodeDir=.
全部相对安装目录,迁移安装位置时整体拷贝即可。
4.5 带宽限制(node.*)
node.outputBandwidthLimit=163840
node.inputBandwidthLimit=1048576
单位为字节/秒:实测输出 163840 B/s = 160 KiB/s,输入 1048576 B/s = 1 MiB/s(安装向导按线路检测结果设置)。这是对 P2P 体验影响最大的参数——限速越高全网交换越多、节点贡献越大,同时上行带宽占用越高。运行验证(/stats/ 页实测回显):
Input Rate: 20.8 KiB/s (of 1.0 MiB/s)
Output Rate: 21.0 KiB/s (of 160 KiB/s)
Payload Output: 71%
括号内即当前配置的限额。压缩相关两个参数保持默认:node.minimumCompressionPercentage=10(压缩收益低于 10% 则放弃)、node.amountOfDataToCheckCompressionRatio=8388608(采样 8 MB 试压)。
4.6 安全级别(security-levels.*)
security-levels.networkThreatLevel=NORMAL
security-levels.physicalThreatLevel=NORMAL
两条独立的威胁轴,均可通过 Web 页 /seclevels/ 以向导方式修改:
networkThreatLevel(网络威胁级别):防御互联网陌生人,从 MINIMUM 到 MAXIMUM 共五档。调高会依次收紧 Opennet、强制仅 Darknet、隐藏连接信息等;physicalThreatLevel(物理威胁级别):防御能接触本机的人,调高会启用口令加密主密钥、清除明文缓存等。
级别越高可用性越低(下载更慢、功能受限),个人学习节点 NORMAL/NORMAL 即可;Web 状态栏实时显示当前级别(实测显示 NORMAL 与 LOW)。
4.7 Darknet 与 Opennet(node.opennet.* 及身份)
node.opennet.enabled=true
node.opennet.listenPort=39121
node.opennet.assumeNATed=true
node.opennet.acceptSeedConnections=false
node.name=Freenet node with no name #7361848122103977527
node.identifier=-8450117583282892346
node.updater.updateSeednodes=true
node.opennet.enabled:Opennet 总开关。追求最大隐私时改为false(纯 Darknet),仅与手工添加的朋友互连;node.opennet.acceptSeedConnections:是否作为种子节点接受新节点引导连接(官方称为 seednode),公共服务器可考虑开启,个人节点保持false;node.name:节点昵称(Darknet 好友可见),可自定义;node.identifier为节点内部标识;node.updater.updateSeednodes=true:自动保持种子节点列表最新(配套updateInstallers=true自动更新安装器);node.probe*参数族(实测 9 项:probeLinkLengths、probeStoreSize、probeBuild、probeIdentifier、probeBandwidth、probeLocation、probeUptime、probeRejectStats 等):响应 Opennet 网络探测请求,属统计贡献,隐私敏感可逐项关闭。
4.8 插件(pluginmanager.*)
pluginmanager.enabled=true
pluginmanager.loadplugin=KeyUtils;Library;FlogHelper;Sharesite
分号分隔的启动加载清单,实测四个默认插件全部加载成功(/diagnostic/ 回显版本:KeyUtils 0.5.6、Library 37、Sharesite 0.5.1、FlogHelper 0.1.1-v36-r2)。增删后重启节点生效;临时加载/卸载用 Web 页 /plugins/。
4.9 JVM 堆内存(wrapper.conf)
JVM 内存不在 freenet.ini 里,而在 wrapper.conf(实测第 15、19 行):
wrapper.java.initmemory=256
wrapper.java.maxmemory=512
initmemory:初始堆(-Xms);maxmemory:最大堆(-Xmx),单位 MB;- 自动分配规则:首次
./run.sh start时若无memory.autolimit文件,按物理内存自动设定——≤1 GB→256 MB、≤2 GB→512 MB、≤4 GB→1024 MB、其余 1536 MB(实测 64 GB 主机被写入 1536,后在wrapper.conf手工调为 512); wrapper.conf官方注释提醒:Java 占用与 bloom 过滤器内存都会超出 maxmemory 计,设得过高可能导致节点起不来;- 修改后重启,实测验证(
ps -ef | grep [f]reenet.node.NodeStarter命令行节选):
... -Xss512k -Xms256m -Xmx512m ... freenet.node.NodeStarter freenet.ini
Web 复核(/stats/ 页 Java Info 实测):
Used Java memory: 216 MiB
Allocated Java memory: 256 MiB
Maximum Java memory: 512 MiB
wrapper.conf 其他实测要点:wrapper.filter.trigger.1=java.lang.OutOfMemoryError 触发自动 RESTART;wrapper.restart.reload_configuration=TRUE 重启时重载配置;wrapper.logfile.maxsize=2M、maxfiles=3 滚动;wrapper.jvm_exit.timeout=120。若 wrapper 不可用的平台,run.sh 会回退为直接 java 启动(堆参数同样来自该文件的解析值)。
4.10 日志与其他(logger.* 等)
logger.priority=WARNING
logger.maxZippedLogsSize=10485760
node.downloadsDir=./downloads
node.uploadAllowedDirs=all
node.downloadAllowedDirs=all
node.load.subMaxPingTime=700
node.load.maxPingTime=1500
node.load.threadLimit=1000
node.l10n=English
logger.priority=WARNING:日志级别,排障时可临时调到 DEBUG(logs/freenet-latest.log实测 41 KB 起步,按小时滚动出.log.gz,压缩日志总量上限maxZippedLogsSize=10 MB);node.downloadAllowedDirs/uploadAllowedDirs=all:FCP 下载/上传允许的目录范围,all表示不限制;从安全角度建议改为显式目录列表;node.load.*:过载保护(ping 阈值 700/1500 ms、线程上限 1000),默认即可;node.updater.autoupdate=false:自动更新主程序默认关闭(实测),升级由管理员手工触发;node.updater.URI=USK@rW3wdla3...jar/1507指向当前版本通道。
五、生产配置模板
小型服务器(2–4 核 / 4–8 GB 内存 / 100 GB 磁盘)的个人节点推荐基线(在实测配置基础上收紧):
# --- 安全 ---
security-levels.networkThreatLevel=NORMAL
security-levels.physicalThreatLevel=NORMAL
fproxy.bindTo=127.0.0.1
fproxy.allowedHosts=127.0.0.1
fproxy.allowedHostsFullAccess=127.0.0.1
fcp.bindTo=127.0.0.1
fcp.allowedHosts=127.0.0.1
fproxy.publicGatewayMode=false
# --- 网络 ---
node.listenPort=17420
node.opennet.enabled=true
node.opennet.listenPort=39121
node.assumeNATed=true
# --- 存储(按磁盘预算设定) ---
node.storeSize=53687091200 # 50 GiB
node.storeType=salt-hash
node.storePreallocate=true
node.minDiskFreeShortTerm=536870912
node.minDiskFreeLongTerm=1073741824
# --- 带宽(按上行 2 Mbps ≈ 250 KiB/s 示例) ---
node.outputBandwidthLimit=204800
node.inputBandwidthLimit=1048576
# --- 下载目录收敛 ---
node.downloadAllowedDirs=./downloads
node.uploadAllowedDirs=./downloads
配套 wrapper.conf 内存建议(改前停止节点):
wrapper.java.initmemory=256
wrapper.java.maxmemory=512
应用流程:./run.sh stop → 编辑两个文件 → ./run.sh start → ./run.sh status 与 /stats/ 复核带宽、内存生效。
六、常见问题(FAQ)
6.1 手工改了 freenet.ini,重启后被改回去了
节点关闭时会回写 freenet.ini(首行注释原文)。在节点运行中编辑等于白改。正确顺序:先 ./run.sh stop 再编辑,或直接用 Web 配置页 /config/node。
6.2 改了 JVM 内存却不生效
堆参数在 wrapper.conf 而非 freenet.ini,且必须重启节点。验证方法(实测可用):
ps -ef | grep [f]reenet.node.NodeStarter
确认命令行中 -Xms/-Xmx 数值;JRE 环境无 jps,不要依赖它。
6.3 storeSize 能随便调吗
可以调,但注意三点:单位是字节;storePreallocate=true 时启动即占满,确认磁盘余量;调整后首次启动需要重建/校验存储,耗时与数据量相关,建议停机窗口内操作。
6.4 想让局域网其他机器访问 Web 界面
把 fproxy.bindTo 加上本机内网 IP、把客户端 IP 加入 fproxy.allowedHosts,同时保持 allowedHostsFullAccess 只有回环地址,并在防火墙上只对可信网段放行 8888/TCP。FCP 同理。Hyphanet 的 FProxy 无强认证机制,暴露面越大风险越高,公网直暴不可取。
6.5 端口 17420/39121 被占用或被封
改为其他空闲 UDP 端口(node.listenPort / node.opennet.listenPort),重启节点并同步更新防火墙;Darknet 好友侧需重新交换节点引用(node reference),Opennet 会经 seednodes 自动重新引导。
6.6 哪些参数必须停机改,哪些可以在线改
freenet.ini 的多数业务参数(带宽、插件清单、端口)支持 Web 页修改后按提示重启;但涉及存储(storeSize/storeType)与 JVM(wrapper.conf)的参数一律停止节点后修改。通用原则:能停机就停机改,避免节点关闭回写覆盖手工改动。
七、参考链接
- 官方 Wiki(配置与常见问题):https://github.com/hyphanet/wiki/wiki(查询日期 2026-10-26)
- Web 配置入口(节点本机):http://127.0.0.1:8888/config/node
- 本专栏《Ubuntu 22.04 安装 Hyphanet 0.7.5 指南》:《Ubuntu 22.04 安装 Hyphanet 0.7.5 指南》
- 本专栏《Hyphanet 0.7.5 介绍与选型指南》:《Hyphanet 0.7.5 介绍与选型指南》