dns query默认走udp,大小有限制,每个datagram 512byte,对于超过限制的dns response会用tcp mode重试,但是经测试surge dns server好像不支持。
创建了两个测试SRV record,_s._tcp.edge.polarbox.win
response 在limit内是成功的,_large._tcp.edge.polarbox.win
response 超过limit用tcp mode重试一直失败。 尝试了设置dns-server = system
或者域名加入always-real-ip
都没用。
case 1a: ali dns works as expected in udp mode
% nslookup -type=srv _s._tcp.edge.polarbox.win 223.5.5.5
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
_s._tcp.edge.polarbox.win service = 0 0 443 edge2.polarbox.win.
_s._tcp.edge.polarbox.win service = 0 0 443 edge1.polarbox.win.
Authoritative answers can be found from:
case 1b: surge dns server works as expected in udp mode
% nslookup -type=srv _s._tcp.edge.polarbox.win
Server: 198.18.0.2
Address: 198.18.0.2#53
Non-authoritative answer:
_s._tcp.edge.polarbox.win service = 0 0 443 edge1.polarbox.win.
_s._tcp.edge.polarbox.win service = 0 0 443 edge2.polarbox.win.
Authoritative answers can be found from:
case 2a: ali dns works as expected in tcp mode
% nslookup -type=srv _large._tcp.edge.polarbox.win 223.5.5.5
;; Truncated, retrying in TCP mode.
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
_large._tcp.edge.polarbox.win service = 0 0 8443 large006.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large009.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large003.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large007.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large011.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large008.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large002.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large012.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large001.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large005.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large004.edge.polarbox.win.
_large._tcp.edge.polarbox.win service = 0 0 8443 large010.edge.polarbox.win.
Authoritative answers can be found from:
case 2b: surge dns server fails in tcp mode
% nslookup -type=srv _large._tcp.edge.polarbox.win
;; Truncated, retrying in TCP mode.
;; Connection to 198.18.0.2#53(198.18.0.2) for _large._tcp.edge.polarbox.win failed: timed out.
;; Connection to 198.18.0.2#53(198.18.0.2) for _large._tcp.edge.polarbox.win failed: timed out.
;; connection timed out; no servers could be reached
;; Connection to 198.18.0.2#53(198.18.0.2) for _large._tcp.edge.polarbox.win failed: timed out.