【虚拟化无代理】【客户端】安装无代理客户端导致Linux服务器上DNS延迟5秒

戴红昌发表于:2020年09月17日 15:25:24更新于:2020年11月03日 17:07:50

问题现象

1、未启用ics-agent-net服务的时候测试无延迟;curl https://wx.qq.com/ -o /dev/null

image.png

原理说明:

参考http://coolnull.com/3820.html

在存在防火墙等机制的网络环境中,同样源目的ip,同样源目的port,同样的第4层协议的连接会被防火墙看成是同一个会话,因此会存在返回包被丢弃现象。

如下图:

image.png

1 主机从一个随机的源端口,请求 DNS的A 记录,
2 主机从同一个源端口,请求 DNS的AAAA 记录,
3 主机先收到dns返回的AAAA记录,
4 防火墙认为本次交互通信已经完成,关闭连接,
5 于是剩下的dns服务器返回的A记录响应包被防火墙丢弃
6 等待5秒超时之后,主机因为收不到A记录的响应,重新通过新的端口发起A记录查询请求,此后的机制等同于centos5)
7 主机收到dns的A记录响应;
8 主机从另一个新的源端口发起AAAA
9 主机收到dns的AAAA记录响应;
我们看到在这个解析的序列里面,dns解析有5秒的延迟发生。所以当用linux系统安装大量远程包的时候宏观上看延迟就非常大了(linux是不缓存dns解析记录的)。

问题规避方法:

安装agnet后DNS解析慢(5-6s),临时在/etc/resolv.conf中增加配置后响应正常: 

options single-request-reopen