为什么在服务器 hosts 中加客户端 IP 能解决访问慢的问题

2022-06-08 16:13:27 +08:00
 xliao

前提: 全部是局域网内机器,客户端( 192.168.2.X ),服务器 192.168.2.100 。

背景: 不知道啥原因,客户端访问服务器非常慢,ssh 、http 等连接时间超过 20 秒,连上之后操作都正常没有啥影响,主要是连接这个动作需要 20 秒以上。

后来有人告诉我在服务器上把客户端的 ip 配置在 hosts 里面,果然秒连。虽然问题解决了,但是不知其中的原理,想请教大神指点,谢谢!

注意:是在服务器 hosts 里面加客户端 IP ,不是在客户端 hosts 加服务器 IP 。如**192.168.2.9 xxxxx**,那 192.168.2.9 这个客户端访问服务器秒连,其他没加的还是 20 秒以上。

也可以讨论讨论有哪些情况会出现连接服务器超过 20 秒以上的?局域网内 TTL=63 小于 1ms ,可以排除网络不好的情况

1502 次点击
所在节点    服务器
9 条回复
billlee
2022-06-08 16:18:12 +08:00
服务器在对客户端 ip 做了 dns 反查,openssh 一般是开启了 Kerberos 相关的认证配置会导致这个问题,http 不知道你用的是什么实现,估计也是类似的问题
hdp5252
2022-06-08 16:20:50 +08:00
dns 问题
有 dns 服务器吗?
xliao
2022-06-08 16:26:04 +08:00
@billlee 是 dns_lookup_realm 吗?目前配置是 false
billlee
2022-06-08 16:36:39 +08:00
@xliao 一般不是去改 Kerberos 的配置吧。如果不使用 kerberos, 可以在 sshd_config 里关掉 UseDNS 和 GSSAPIAuthentication. 如果用 kerberos, 那应该配套有能反查的 DNS 服务器
xliao
2022-06-08 16:44:28 +08:00
@billlee 明白你的意思了。经查,sshd_config 里面 Kerberos options 没开启,GASSAPI options 开启了 GSSAPIAuthentication ,注释 GSSAPIxxx 后重启 sshd 没效果
xliao
2022-06-08 17:01:05 +08:00
@xliao 感谢指点!现在应该是从根上解决问题了:

在 sshd_config 里 设置
UseDNS yes ( ssh 缺省情况下 UseDNS 的值是 yes ,所以要显式的指定该值为 no )
GSSAPIAuthentication no

重启 sshd ,连接速度上去了。
xliao
2022-06-08 17:45:36 +08:00
Sorry #6 写错了,纠正一下。sshd_config 里配置 UseDNS no 。
raycheung
2022-07-13 09:28:09 +08:00
@xliao #6 曾经也踩过同样的坑,花了好长时间才发现是这个问题,奇怪的是这个参数从来没调整过,突然有一天所有请求都会卡一下才能连接,反正解决了,至于为何在某个时间点才触发就没去细究了。
xliao
2022-07-15 09:07:12 +08:00
@raycheung 可能是系统升级导致的默认值

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

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

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

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

© 2021 V2EX