首页 > 代码库 > 一次DNS 故障引发的linux telnet 各端口缓慢的问题解决过程
一次DNS 故障引发的linux telnet 各端口缓慢的问题解决过程
昨天部署好了lvs+keepalived 并通过测试, 没有发现问题.今天上午忽然发现, 用ipvsadm –l 查看lvs信息,响应很慢, 然后去从LVS telnet 节点的22号端口, 发现特别慢.
开始我检查了一下keepalived.conf配置文件, 以为是同网段内多个lvs 设置,造成多播冲突,阻塞网络. 后来停止了lvs后故障依旧. 突然想到使用strace来分析, 一下找到了原因.
telnet 命令 调用了如下共享对象库及文件, 说明telnet 先做权限和安全检查(如selinux) , 再做解析, 顺序是 , 先从hosts文件中找, 如果有对应的条目, 可直接接续, 如果没有,再从resolve.conf中找, 最后才反应成真正的IP地址.
今天由于dns 202.96.209.5 故障, 所以连接其53端口有问题, 等待超时过了才能继续. 所以telnet有几秒钟的卡顿.
解决方案: 删除resolve中的记录或指向可用的dns.
/etc/ld.so.preload
/etc/ld.so.cache
/usr/lib64/libkrb4.so.2
/usr/lib64/libkrb4.so.2
/usr/lib64/libdes425.so.3
/usr/lib64/libkrb5.so.3
/usr/lib64/libk5crypto.so.3
/lib64/libcom_err.so.2
/usr/lib64/libkrb5support.so.0
/lib64/libkeyutils.so.1
/lib64/libresolv.so.2
/usr/lib64/libncurses.so.5
/lib64/libselinux.so.1
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/libsepol.so.1
/etc/selinux/config
/etc/nsswitch.conf
/etc/resolv.conf
[root@lvs1 ~]# stracetelnet 10.67.130.232 22
execve("/usr/kerberos/bin/telnet",["telnet", "10.67.130.232", "22"], [/* 22 vars*/]) = 0
brk(0) =0x2b867de32000
………………………………………………..
open("/etc/resolv.conf",O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24,...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8670400000
read(3, "nameserver 202.96.209.5\n", 4096) = 24
read(3, "", 4096) = 0
close(3) = 0
munmap(0x2b8670400000, 4096) = 0
uname({sys="Linux",node="lvs1", ...}) = 0
open("/etc/host.conf", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=0,...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8670400000
read(3, "", 4096) = 0
close(3) = 0
munmap(0x2b8670400000, 4096) = 0
open("/etc/hosts", O_RDONLY) = 3
fcntl(3, F_GETFD) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fstat(3, {st_mode=S_IFREG|0644,st_size=168, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8670400000
read(3, "# Do not remove the followingli"..., 4096) = 168
read(3, "", 4096) = 0
close(3) = 0
munmap(0x2b8670400000, 4096) = 0
open("/etc/ld.so.cache",O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644,st_size=96055, ...}) = 0
mmap(NULL, 96055, PROT_READ, MAP_PRIVATE,3, 0) = 0x2b8670400000
close(3) = 0
open("/lib64/libnss_dns.so.2",O_RDONLY) = 3
read(3,"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\17\0\0\0\0\0\0"...,832) = 832
fstat(3, {st_mode=S_IFREG|0755,st_size=23736, ...}) = 0
mmap(NULL, 2113792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,3, 0) = 0x2b8672527000
mprotect(0x2b867252b000, 2093056,PROT_NONE) = 0
mmap(0x2b867272a000, 8192,PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) =0x2b867272a000
close(3) = 0
mprotect(0x2b867272a000, 4096, PROT_READ) =0
munmap(0x2b8670400000, 96055) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53),sin_addr=inet_addr("202.96.209.5")}, 28) = 0
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}])
sendto(3,"\255a\1\0\0\1\0\0\0\0\0\0\003232\003130\00267\00210\7in-ad"..., 44,MSG_NOSIGNAL, NULL, 0) = 44
poll([{fd=3, events=POLLIN}], 1, 5000) = 0 (Timeout)
poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}])
sendto(3,"\255a\1\0\0\1\0\0\0\0\0\0\003232\003130\00267\00210\7in-ad"..., 44,MSG_NOSIGNAL, NULL, 0) = 44
poll([{fd=3,events=POLLIN}], 1, 5000) = 0 (Timeout)
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620,st_rdev=makedev(136, 2), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8670400000
write(1, "Trying 10.67.130.232...\r\n", 25Trying10.67.130.232...
) = 25
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) =3
setsockopt(3, SOL_IP, IP_TOS, [16], 4) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(22),sin_addr=inet_addr("10.67.130.232")}, 16) = 0
open("/proc/filesystems",O_RDONLY) = 4
read(4,"nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 331
close(4) = 0
open("/root/.telnetrc",O_RDONLY) = -1 ENOENT (No such fileor directory)
open("/proc/filesystems",O_RDONLY) = 4
read(4,"nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 331
close(4) = 0
write(1, "Connected to 10.67.130.232(10.6"..., 45Connected to 10.67.130.232 (10.67.130.232).
) = 45
本文出自 “可儿的爸爸” 博客,请务必保留此出处http://kerdady.blog.51cto.com/9695053/1595987
一次DNS 故障引发的linux telnet 各端口缓慢的问题解决过程