请教如何规避大量的 udp 类的 DNS 查询连接保持?

2015-11-24 22:16:25 +08:00
 kn007

请教下大家,用 ss -anutp |grep :53 |wc -l 得到了 1050 个连接, ESTABLISHED 状态。

其中 310 个是 Nginx ,剩余的都是 php-fpm 发起的。

随便举例一条

udp ESTAB 0 0 127.0.0.1:26076 8.8.8.8:53 users:(("nginx",4867,76))

uptime 目前已有 100 天。

Nginx 有反代 google , php 有 gethostbyname 与 gethostbynamel 。

现有这个连接存在的时间为免太长,而且复用率多高是个问题,有无什么解决办法规避这个情况?

谢谢!

4593 次点击
所在节点    Linux
14 条回复
wdlth
2015-11-24 23:14:46 +08:00
把 Google 加到 hosts 里面试试,减少查询。
ncisoft
2015-11-25 04:33:27 +08:00
udp 不是无连接的吗
ryd994
2015-11-25 06:39:31 +08:00
你可以考虑装个 bind 或者 dnsmasq 来做缓存,/etc/resolv.conf 写 127.0.0.1
注意只监听本地,否则就等着变成反射吧。
kn007
2015-11-25 07:31:18 +08:00
@wdlth Google 根本不知道是哪个 ip ,有些 ip 反代了,功能就没了。所以无法。如果能 ip ,我就用 varnish 反代了。。。

@ncisoft 鬼知道,我也奇怪

@ryd994 有这个想法,以前也弄过,不过后来因为 dns 更新不及时,又 pass 了
datocp
2015-11-25 08:04:52 +08:00
让 udp 快速消亡只能调整 timeout 吧,但这个 timeout 设置也不是越小越好,不然部分通讯会有问题。另外也有通过 limit 结合 reject 丢弃的,不过那种方法就会有抑制问题。目前 vps 上也是用 dnsmasq 用于 vpn 查询, drop 来自 wan 端的查询。
修改 /etc/sysctl.conf
net.netfilter.nf_conntrack_generic_timeout=600
net.netfilter.nf_conntrack_udp_timeout=65
net.netfilter.nf_conntrack_udp_timeout_stream=120
net.netfilter.nf_conntrack_tcp_timeout_established=600
net.netfilter.nf_conntrack_tcp_timeout_syn_sent=120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv=60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
net.netfilter.nf_conntrack_tcp_timeout_time_wait=120
net.netfilter.nf_conntrack_tcp_timeout_close=10
net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
net.netfilter.nf_conntrack_tcp_timeout_last_ack=30
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=120
kn007
2015-11-25 08:22:49 +08:00
@datocp 你这里面大部分都是 tcp 的。。。对 udp 有用么。。。

看来还是要用 dnsmasq...
kn007
2015-11-25 08:29:45 +08:00
@datocp 我查看了下,默认 sysctl 已经定义好了这些值了
ncisoft
2015-11-25 11:47:37 +08:00
@kn007 据我以前的经验, udp 在实现了一次会话之后,是会出现 establish 状态的,这也不是什么大问题
ncisoft
2015-11-25 11:49:54 +08:00
@kn007 你机器为啥不用本地服务商提供的 DNS 呢,快得多,用 8888 干毛线
kn007
2015-11-25 14:02:39 +08:00
@ncisoft 我是美国 VPS 。。。直连 ping < 1ms
我只是看到连接数过多,倒没觉得是大问题。
kn007
2015-11-25 14:03:14 +08:00
@ncisoft 再说了,无论我用哪个都会有长连接。。
ryd994
2015-11-25 15:30:08 +08:00
@kn007 缓存时间可以调
kn007
2015-11-25 16:08:39 +08:00
@ryd994 额,你指什么? dnsmasq ?
ncisoft
2015-11-25 17:25:07 +08:00
@kn007 这种所谓的连接命都不长

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/238655

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX