DNS 通常使用 UDP 数据包。但是,当响应大于一定大小时,它会切换到 TCP。
例如,如果我们可以在使用 DIG 或 NSLOOKUP 运行 DNS 查询命令时指定 TCP/UDP,那将非常有用。
有没有办法用 DIG 来做到这一点?
答案1
通过 dig 您可以使用+tcp
。
man dig
说:
+[no]tcp
Use [do not use] TCP when querying name servers. The default behavior is to use UDP unless a type any or ixfr=N query is requested, in which case the default is TCP. AXFR queries always use TCP.
+[no]vc
Use [do not use] TCP when querying name servers. This alternate syntax to +[no]tcp is provided for backwards compatibility. The "vc" stands for "virtual circuit".
因此,两者都+tcp
可以+vc
实现您想要的功能,但+tcp
对于您想要做的事情却更加清楚。
我自己使用 dig 并使用 Wireshark 跟踪流量,我发现dig google.com @8.8.8.8
使用 UDP 和dig google.com @8.8.8.8 +tcp
使用 TCP。
答案2
旧工具将此称为“虚拟电路”(vc)模式:
dig google.com @8.8.8.8 +vc
nslookup -vc google.com 8.8.8.8
Windows nslookup(交互模式):
nslookup> set vc