可否增加DnsCrypt对TCP的支持?

f7970070080 1月前 1442

当单个UDP包不能承载过长的DNS查询结果时,服务器会设置Truncation flag要求客户端使用TCP重新查询。

当前GeekDNS对于DnsCrypt协议并没有开放TCP 22端口用于查询Truncated的结果,未来可否增加对TCP的支持?

If the response has the TC flag set, the client must:

  1. send the query again using TCP
  2. set the new minimum query length as:
<min-query-len> ::= min(<min-query-len> + 64, <max-query-len>)
最新回复 (4)
全部楼主
  • admin 1月前
    1 引用 2
    该需求采纳,三天内部署,最快明天晚上完成.
  • f7970070080 1月前
    0 引用 3
    感谢回复,经测试广东节点配置已生效。
    但是当DNS查询结果长度仅为496字节时,服务器就设置了Truncation flag,强制客户端使用TCP进行查询。
    在以太网中单个UDP包最大可以承载1452字节,服务器设置Truncation flag的阀值是否过低,导致了不必要的TCP查询?

    例如,使用dnscrypt-proxy查询 gateway.icloud.com A记录时,每次重新启动dnscrypt-proxy服务后,首次查询到的结果总是置有Truncation flag。

    因为单次TCP查询双方至少需要发送10个TCP报文,相比之下UDP查询只需发送2个UDP报文,减少TCP查询可以有效地节省服务器资源。
  • f7970070080 1月前
    0 引用 4

    我又看了一遍DnsCrypt协议,当UDP的DNS查询长度小于要返回的结果长度时,服务器可以设置TC flag来保证结果是可以传送到客户端的,此时客户端应当增加UDP查询的最小长度,来避免未来更多的TCP通信。

    If the full client query length is shorter than 256 bytes, or shorter than the full response length, the resolver may truncate the response and set the TC flag prior to encrypting it. The response length should always be equal to or shorter than the initial client query length.always be equal to or shorter than the initial client query length.

    综上,现行的服务器行为是符合规范的。

    顺带一提,OpenDNS上部署的DnsCrypt并不存在上述长度限制,即使查询长度小于结果长度,OpenDNS也不会设置TC flag,依旧使用UDP来回复。

  • admin 1月前
    0 引用 5
    f7970070080 我又看了一遍DnsCrypt协议,当UDP的DNS查询长度小于要返回的结果长度时,服务器可以设置TC flag来保证结果是可以传送到客户端的,此时客户端应当增加UDP查询的最小长度,来避免未来更多的T ...
    近期将进行调整,调整完成会通知
返回
发新帖