|
10 | 10 |
|
11 | 11 | ```text |
12 | 12 | ii help [<command>] |
13 | | -ii send [<path>] [--name <name>] [-t] [-c] [-o <path>] [--web [--port <port>] [--token [<value>]] [--upload] [--path <dir>] | --s3 | --webdav | --ftp | --sftp] [--profile <name>] [-d] [-p] [--local] [--relay <https-url> [-k]] [--no-relay] |
| 13 | +ii send [<path>] [--name <name>] [-t] [-c] [-o <path>] [--web [--port <port>] [--token [<value>]] [--upload] [--path <dir>] | --s3 | --webdav | --ftp | --sftp] [--profile <name>] [-d] [-p] [--local] [--relay <url> [-k]] [--no-relay] |
14 | 14 | ii web [<目录>] [--port <port>] [--token [<value>]] [--upload] [--path <目录>] |
15 | 15 | ii webrtc [--port <port>] [--token [<value>]] |
16 | | -ii tunnel -s <target-host:port> [--relay <https-url> [-k]] |
| 16 | +ii tunnel -s <target-host:port> [--relay <url> [-k]] |
17 | 17 | ii tunnel -c <ticket> [--listen <ip:port>] |
18 | 18 | ii recv <ticket> [-o <dir>] [--stdout] [--overwrite] [--resume] [--local] [--trace] |
19 | | -ii relay (--public <https-url> | --tls <domain> --cert <path> --key <path>) [-H <bind-port>] |
| 19 | +ii relay [--port <port>] [--tls [--domain <name>] [--cert <path> --key <path>]] |
20 | 20 | ii doctor |
21 | 21 | ii version |
22 | 22 | ``` |
@@ -103,13 +103,13 @@ tar czf - .\project | ii send --name project.tar.gz |
103 | 103 | : 只走局域网优先路径,不走公网发现,不走公网 relay。 |
104 | 104 |
|
105 | 105 | `--relay <url>` |
106 | | -: 使用 HTTPS relay-only 模式,URL 必须是 `https://主机[:端口]`。 |
| 106 | +: 使用 HTTP 或 HTTPS relay-only 模式,URL 必须是 `http://主机[:端口]` 或 `https://主机[:端口]`。 |
107 | 107 | 发送端和接收端都只通过该 relay 传输,不尝试 UDP、局域网发现或点对点直连。 |
108 | | - 默认按系统证书链校验 relay,适合 `ii relay --tls --cert --key` 的手工证书模式。 |
| 108 | + HTTPS 默认按系统证书链校验,适合 `ii relay --tls --cert --key` 的手工证书模式。 |
109 | 109 |
|
110 | 110 | `-k` |
111 | | -: 只允许和 `--relay` 一起使用,表示接受该 relay 的自签证书。 |
112 | | - 用于 `ii relay --public https://...`。带 `-k` 的 ticket 会让接收端自动沿用自签信任策略。 |
| 111 | +: 只允许和 HTTPS `--relay` 一起使用,表示接受该 relay 的自签证书。 |
| 112 | + 用于 `ii relay --tls`。带 `-k` 的 ticket 会让接收端自动沿用自签信任策略。 |
113 | 113 |
|
114 | 114 | `--no-relay` |
115 | 115 | : 禁用 relay,只允许直连和局域网路径。 |
@@ -147,7 +147,7 @@ tar czf - .\project | ii send --name project.tar.gz |
147 | 147 | - `--web`、`--s3`、`--webdav`、`--ftp`、`--sftp`、`--local`、`--relay`、`--no-relay` 互斥。 |
148 | 148 | - 默认不需要用户选 relay。 |
149 | 149 | - 如果没有局域网或直连可用,默认会自动退到公网 relay。 |
150 | | -- 指定 `--relay https://...` 后,当前发送会强制走 HTTPS relay-only,不使用默认公网 relay。 |
| 150 | +- 指定 `--relay http://...` 或 `--relay https://...` 后,当前发送会强制走 relay-only,不使用默认公网 relay。 |
151 | 151 | - 手工证书 relay 不带 `-k`;自签 relay 必须带 `-k`。 |
152 | 152 |
|
153 | 153 | ## `ii web` |
@@ -196,11 +196,11 @@ ii tunnel -c ii1k7v...x9a |
196 | 196 | 默认先尝试直连和局域网路径,必要时使用 Iroh 默认 relay。指定 relay 时只在 A 上使用: |
197 | 197 |
|
198 | 198 | ```powershell |
199 | | -ii relay --public https://公网IP:8443 |
200 | | -ii tunnel -s 192.168.1.10:5000 --relay https://公网IP:8443 -k |
| 199 | +ii relay --port 8443 |
| 200 | +ii tunnel -s 192.168.1.10:5000 --relay http://公网IP:8443 |
201 | 201 | ``` |
202 | 202 |
|
203 | | -`--relay <url>` 必须为 `https://主机[:端口]`,使本次 tunnel 强制走该 HTTPS relay;`-k` 仅和 `-s --relay` 同用,接受自签 relay。ticket 会把 relay URL 和自签信任策略带给 B,B 不需要再次配置。relay 只转发加密 Iroh 流量,不会把目标 TCP 端口直接暴露到公网。 |
| 203 | +`--relay <url>` 可为 `http://主机[:端口]` 或 `https://主机[:端口]`,使本次 tunnel 强制走该 relay;`-k` 仅和 HTTPS `-s --relay` 同用,接受自签 relay。ticket 会把 relay URL 和自签信任策略带给 B,B 不需要再次配置。relay 只转发加密 Iroh 流量,不会把目标 TCP 端口直接暴露到公网。 |
204 | 204 |
|
205 | 205 | ticket 内有一次随机访问密钥。持有 ticket 的设备可以接入,直到 A 按 `Ctrl+C` 停止 tunnel;不要泄露 ticket。首版不支持 UDP、SOCKS、反向 tunnel 或后台守护。 |
206 | 206 |
|
@@ -336,74 +336,65 @@ ticket 里可以带足够完成连接、恢复传输和重复文件判定的最 |
336 | 336 |
|
337 | 337 | ## `ii relay` |
338 | 338 |
|
339 | | -`ii relay` 支持两种 HTTPS relay-only 服务模式:`--public` 自动生成自签证书,或 `--tls --cert --key` 使用已有证书。 |
340 | | - |
341 | | -### 自签模式 |
342 | | - |
343 | | -`--public` 启动自动生成证书的自签 relay,格式只能是 `https://主机[:公网端口]`: |
| 339 | +`ii relay` 默认启动 HTTP relay,不需要参数: |
344 | 340 |
|
345 | 341 | ```powershell |
346 | | -ii relay --public https://relay.example.com |
347 | | -ii relay --public https://relay.example.com:8443 |
| 342 | +ii relay |
| 343 | +ii relay --port 8443 |
348 | 344 | ``` |
349 | 345 |
|
350 | | -不传 `-H` 时,relay 监听 `--public` 中的端口;URL 没写端口时监听 `443`。如果 NAT 或反向代理把公网端口转发到不同的本机端口,用 `-H` 指定本机监听端口: |
351 | | - |
352 | | -```powershell |
353 | | -ii relay --public https://relay.example.com:8443 -H 9443 |
354 | | -``` |
| 346 | +它监听 `0.0.0.0:随机端口`,或监听 `--port` 指定的 `0.0.0.0:端口`。终端按 `ii web` 的格式输出主 IPv4 URL 和 `other:` 下的其余物理、虚拟网卡 IPv4 URL,但不显示二维码。`0.0.0.0` 只是 bind 地址,不能作为客户端 URL;客户端必须使用实际可达 IP 或域名。 |
355 | 347 |
|
356 | | -上例中客户端访问 `https://relay.example.com:8443`,relay 本机监听 `9443/tcp`。必须对外开放公网 HTTPS 端口;relay 不开放 HTTP、UDP 或 QUIC 端口。 |
| 348 | +裸机或公网 IP 直接绑在网卡时,打印列表会包含公网地址。云服务器常由 NAT 映射公网 IP,网卡列表只有私网地址;这时从云控制台取得公网 IP,再与终端打印的端口拼成 relay URL。`ii` 不尝试猜测 NAT 映射。 |
357 | 349 |
|
358 | | -自签 relay 的客户端必须带 `-k`: |
| 350 | +HTTP relay 示例: |
359 | 351 |
|
360 | 352 | ```powershell |
361 | | -ii send .\video.mp4 --relay https://203.0.113.10:8443 -k |
362 | | -ii send .\video.mp4 --relay https://relay.example.com -k |
| 353 | +ii relay --port 8443 |
| 354 | +ii send .\video.mp4 --relay http://公网IP:8443 |
| 355 | +ii tunnel -s 192.168.1.10:5000 --relay http://公网IP:8443 |
363 | 356 | ``` |
364 | 357 |
|
365 | | -`-k` 会把“接受自签证书”的策略写入 ticket。接收方只需运行 ticket 打印出的 `ii recv ...`,不需要另装证书、不需要写 relay 配置。 |
366 | | - |
367 | | -### 自签证书和状态文件 |
| 358 | +### TLS |
368 | 359 |
|
369 | | -首次成功启动时,`ii relay` 自动生成并持久化自签 TLS 证书和私钥;重启时复用同一份材料: |
| 360 | +`--tls` 开启 HTTPS。没有 `--cert` 和 `--key` 时,`ii` 仅为当前进程生成自签证书;客户端必须带 `-k`: |
370 | 361 |
|
371 | | -- Windows:`ii.exe` 同目录的 `relay.toml`、`relay-cert.pem`、`relay-key.pem` |
372 | | -- Linux/macOS/其他 Unix-like:`/etc/ii/relay.toml`、`/etc/ii/relay-cert.pem`、`/etc/ii/relay-key.pem` |
373 | | - |
374 | | -`relay.toml` 记录该 relay 的公网 URL。后续必须继续使用同一 `--public`;若要换公网地址,删除这三个 state 文件后重新启动,让它生成新的 relay 身份。私钥或证书只剩其中一个、或内容损坏时,`ii relay` 会明确报错,不会悄悄换证书。 |
375 | | - |
376 | | -自签模式不接受 `--tls`、`--cert` 或 `--key`。它不使用 ACME、Let’s Encrypt、HTTP relay、QUIC 或 metrics。 |
377 | | - |
378 | | -### 手工证书模式 |
| 362 | +```powershell |
| 363 | +ii relay --tls --port 8443 |
| 364 | +ii send .\video.mp4 --relay https://公网IP:8443 -k |
| 365 | +``` |
379 | 366 |
|
380 | | -使用已有的 PEM 完整证书链与私钥时: |
| 367 | +需要以域名访问时: |
381 | 368 |
|
382 | 369 | ```powershell |
383 | | -ii relay --tls relay.example.com -H 8443 --cert .\fullchain.pem --key .\privkey.pem |
| 370 | +ii relay --tls --domain relay.example.com --port 8443 |
| 371 | +ii send .\video.mp4 --relay https://relay.example.com:8443 -k |
384 | 372 | ``` |
385 | 373 |
|
386 | | -`--tls` 必须是证书 SAN 包含的裸域名;`--cert` 是 PEM 格式的完整证书链,`--key` 是匹配的 PEM 私钥。手工模式不读、不写 `relay.toml` 或自签证书文件。 |
| 374 | +带 `--domain` 时,终端只输出该域名 HTTPS URL;自动证书包含该 DNS SAN。没有 `--domain` 时,终端输出 HTTPS 网卡 IP URL,仍需 `-k`。 |
387 | 375 |
|
388 | | -客户端使用正常 TLS 校验,不带 `-k`: |
| 376 | +已有 PEM 完整证书链和私钥时,成对提供 `--cert`、`--key` 替换自动证书: |
389 | 377 |
|
390 | 378 | ```powershell |
| 379 | +ii relay --tls --domain relay.example.com --port 8443 --cert .\fullchain.pem --key .\privkey.pem |
391 | 380 | ii send .\video.mp4 --relay https://relay.example.com:8443 |
392 | 381 | ``` |
393 | 382 |
|
394 | | -两种模式的 `--relay` 都强制 relay-only:不尝试局域网发现、UDP 打洞或点对点直连。 |
| 383 | +手工证书模式通常配合 `--domain`,客户端正常校验证书,不带 `-k`。允许不带 `--domain` 使用手工证书;此时终端输出 HTTPS 网卡 IP URL,证书必须包含对应 IP SAN,否则用户需要自行改用匹配证书名或 `-k`。 |
| 384 | + |
| 385 | +`--domain` 只能与 `--tls` 同用;`--cert` 和 `--key` 必须成对出现,且也要求 `--tls`。旧 `--public` 与 `-H` 已删除。HTTP 或 HTTPS 的 `--relay` 都强制 relay-only:不尝试局域网发现、UDP 打洞或点对点直连。 |
395 | 386 |
|
396 | 387 | ### 安全边界 |
397 | 388 |
|
398 | | -`-k` 对该 relay 自动接受自签证书,部署最简单,但首次连接时可被中间人替换 relay。Iroh 的端到端节点认证仍在;这个限制只针对 relay HTTPS 连接的首次信任。手工证书模式不带 `-k`,继续使用系统 TLS 证书校验。 |
| 389 | +HTTP relay 不提供 relay 连接层 TLS;HTTPS 自签模式的 `-k` 会跳过证书校验,首次连接可能被中间人替换 relay。Iroh 的端到端节点认证仍在;手工证书模式不带 `-k`,继续使用系统 TLS 证书校验。 |
399 | 390 |
|
400 | 391 | ### 日志 |
401 | 392 |
|
402 | | -启动后会输出公网地址、本机监听端口、客户端连接和断开日志。需要更详细的协议日志时设置 `RUST_LOG`,例如: |
| 393 | +启动后会输出可访问 URL、客户端连接和断开日志。需要更详细的协议日志时设置 `RUST_LOG`,例如: |
403 | 394 |
|
404 | 395 | ```powershell |
405 | 396 | $env:RUST_LOG="debug" |
406 | | -ii relay --public https://203.0.113.10:8443 |
| 397 | +ii relay --port 8443 |
407 | 398 | ``` |
408 | 399 |
|
409 | 400 | ## `ii doctor` |
|
0 commit comments