Gra*_*ant 3 linux ssh linux-mint
我有一台在我家运行的 Linux 服务器,DynDNS URL 设置指向我的公共 IP 地址。
我注意到的一件事是使用远程地址,例如url.dyn-dns.tv或 我的公共 IP 与我的本地192.168.xx.xx.
任何人都知道为什么会这样?
tl;dr 修复服务器上的 DNS 解析器配置。(解决方法是关闭 SSHD 中的反向查找,但最好修复损坏的内容)
原答案
任何人都知道为什么会这样?
不是真的,但这里有一个轶事可能会有所帮助:
过去,使用不同的协议,当建立连接需要异常长的时间时,我发现一个原因是 DNS 超时,因为服务器尝试查找 IP 地址的名称,以便它可以在其日志中记录客户端名称. 如果本地 DNS 服务无法正确了解您的客户端 IP 地址并且未正确配置 DNS,则服务器可能会等待很长时间以等待 DNS 超时。
寻找这种效果的方法是运行网络嗅探器,最初在客户端同时也在服务器上运行,然后您可能会看到一些与连接相关的网络流量,这需要很长时间才能获得响应,或者没有响应(您可能会看到重试)
tcpdump 和wireshark 都不错。
更新 1
在连接延迟的客户端
找到客户端的IP地址
ipconfigifconfig -a可选择确认您可以快速查找服务器的 IP 地址
nslookup servernamedig servername或者host servername如果您没有 dig。在服务器
/etc/resolv.conf第一个 DNS 名称服务器的地址dig -x 192.168.n.m @nameserver或host 192.168.n.m server其中 192.168.nm 由客户端的实际 IP 地址替换,名称服务器是名称服务器的 IP 地址。/etc/resolv.conf服务器应该以毫秒为单位得到响应。如果 DNS 配置损坏,将需要几秒钟的时间才能超时。
好配置
# time host 192.168.3.4
Host 4.3.168.192.in-addr.arpa. not found: 3(NXDOMAIN)
real 0m0.130s
user 0m0.000s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)
错误的配置
# echo nameserver 1.2.3.4 > /etc/resolv.conf
# time host 192.168.3.4
;; connection timed out; no servers could be reached
real 0m10.010s
user 0m0.000s
sys 0m0.010s
Run Code Online (Sandbox Code Playgroud)
注意 10 秒的延迟。这意味着任何想要在其日志中包含客户端名称的 SSH 服务都需要 10 秒才能建立 SSH 连接。
更新 2
事实证明,这个 Q 是(可能)完全重复为什么当我通过 SSH 连接到我的 Ubuntu 9.05 服务器时“密码”提示会永远持续?
修复服务器上的 DNS 解析器配置。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |