Khor
文档

中继

GitHub

两台设备能直连就直连。直连之前要经中继交换地址;直连不成,流量由中继转发。中继只转发,不存内容:转发的内容端到端加密,中继看不到。

默认

不用配置。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

只存总数:每台设备连了几次、在线多久,加中继收发的总字节。不记谁连谁。