Skip to content

连接信息与协议

本页介绍节点服务器“入口”与“出口”之间的连接行为,以及软件自带的“隧道协议”。

如何知道其他服务器的 IP

默认情况下,节点端都会上报自己的「公网 IP」地址。

如果您没有指定设置,那么出口服务器将随机监听端口,上报「公网 IP + 监听端口」至面板服务器,此信息后续被入口服务器拉取,入口服务器就可以连接到出口服务器。

如果需要改变这个行为,请看「出口信息」。

设备组 config

设备组 config 为 JSON 格式,可以使用 高级编辑 功能编辑。

提示

面板中的 JSON 编辑不支持注释,请自行删去注释。

入口信息

入口信息位于 入站设备组 或 转发规则 的 config 中,以 JSON 格式保存。

{
    // 屏蔽选项
    "allowed_host": [], // 白名单的 Host / SNI,与其他屏蔽选项冲突
    "blocked_host": [], // 黑名单的 Host / SNI
    "blocked_path": [], // 黑名单的 HTTP Path
    "blocked_protocol": [], // 黑名单协议,可取值看下方说明
    // 隧道选项
    "udp_over_tcp": false,
    "disable_udp": false,
    "disable_mux": false,
    // 故障转移:指定 入口连接隧道出口 或者 入口直出 时的故障转移策略。
    "max_fail": 3, // 开始转移前,容忍的最大连续失败次数
    "fail_timout_sec": 30 // 转移的时长(秒)
}

前端界面会读取入站设备组中的 config 以展示入站屏蔽了哪些协议和域名。

blocked_protocol

  1. socks
  2. fet 屏蔽全加密(ss/vmess)协议
  3. http
  4. tls

入口入站信息

入口入站信息位于 转发规则 的 config 中,以 JSON 格式保存。

{
  // TLS 加载设置
  "tls": {
    "sni": "i0.hdslb.com",
    "alpn": [
      "http/1.1"
    ]
  }
}

TLS 加载

入口监听 TLS,为入站连接加载 TLS 层。TLS 握手将在入口服务器完成,到后续服务器的流量将以明文通过隧道传输。

此功能与 blocked_protocol 等不冲突,若入口禁止了 TLS,则无法成功握手。

目前只支持自签名证书,且强制绑定 sni,请为客户端设置好 allow-insecure sni alpn 等参数。

出口信息

出口信息位于 出站设备组 的 config 中,以 JSON 格式保存。

{
    // 连接信息
    "connect_type": "static", // 可选: dyn_ip4 / dyn_ip6 / static
    "connect_address": "node.example.com", // static 专属
    "connect_port": 2333, // static 专属
    "protocol": "ws",
    "ws": {
        // ws object
    },
    "udp_over_tcp": false
}

这些选项作用于入口服务器连接出口时。

connect_type: 如果不指定,默认使用 ipv4 或者每个对端的 connect_host 连接。

dyn_ip4: 强制指定使用公网 ipv4 连接。

dyn_ip6: 强制指定使用公网 ipv6 连接,如果入口或出口不支持 v6 也不会自动回退到 v4。

static: 强制指定使用出口配置中的 connect_address connect_port 连接,目前只能指定一个地址,不建议使用域名。

TCP 隧道协议

nyanpass 的隧道协议是自主设计的基于 TCP 的协议,为符合互联网多数流量特征,目前仅允许采用 ws tls 方式传输。

隧道协议自带连接复用,实现多数请求 0-RTT,不增加任何延迟(包括 TCP 握手的延迟)。

所有基于 TCP 的协议在第一次建立连接时均会耗费 1RTT,若有 TLS 层再多 1RTT。由于默认开启了复用层,这种延迟只会在少数的实际连接中出现。

ws

稳定性:稳定

特点:非完整 ws 协议,性能优秀,无额外延迟,传输内容自带简易加密,可过一些 CDN。

ws object:

{
    "host": "some.host.com",
    "path": "/some/path"
}

tls

稳定性:比较稳定

特点:客户端使用 realm 进行 TLS 连接。传输内容安全,握手行为规范。

Realm 要求入口服务器系统 Debian 11+

tls_simple

稳定性:稳定

特点:使用 Go TLS 承载 Nyanpass 协议。

UDP 转发协议

无论 protocol 为何,只要不开启 udp_over_tcp,转发处理 udp 时始终使用基于原生 udp 的转发协议,保证 udp 的特性不丢失。

此协议的 MTU 开销为 28 字节,转发内容有简易加密。

如果开启 udp_over_tcp,则 udp 数据将通过 tcp 流承载,通过隧道协议传输。

入口直出

适合专线使用。非隧道,无需出口机器。转发开销极小,非常稳定。

唯一缺点:不能过墙。