两台设备能直连就直连。直连之前要经中继交换地址;直连不成,流量由中继转发。中继只转发,不存内容:转发的内容端到端加密,中继看不到。
默认
不用配置。khor 的中继排在前面,n0 的公共中继跟在后面兜底,每台设备自己挑离它最近、连得上的那台。
自己跑一台
一台有公网地址和域名、已经入网的机器:
khor relay --acme relay.example.com --only-mine
--acme 找 Let’s Encrypt 要证书。--only-mine 只放行你这张网名单上、没被撤销的设备,谁也不用填密钥。
| 参数 | 做什么 |
|---|---|
--acme 域名 |
找 Let’s Encrypt 要证书,HTTPS 听 443 |
--tls-cert 证书 --tls-key 私钥 |
用现成的证书 |
--dev |
明文 HTTP,默认 3340 口,只用于测试 |
--only-mine |
只放行这张网信任的设备 |
--token 密钥 |
只放行带这把共享密钥的客户端,和 --only-mine 二选一 |
--rate 字节每秒 |
每个客户端的上行限速 |
--metrics 地址 |
指标页 |
--stats |
打印计量,不起中继 |
让设备用它
每台设备各配各的,别的机器改不了这台用哪些中继。
- 界面:设置 → 网络 →「添加中继…」
- 环境变量:
KHOR_RELAY,多台用逗号分隔,密钥挂在token参数上
KHOR_RELAY="https://relay.example.com?token=密钥,https://relay2.example.com"
密钥不出本机:经一台带密钥的中继找你的每台设备,都得自己配上这把密钥。用 --only-mine 就没有这件事。
打开「只使用自己的中继」之后,khor 的和 n0 的都不再使用。
计量
khor relay --stats
只存总数:每台设备连了几次、在线多久,加中继收发的总字节。不记谁连谁。