Telnet 로그인 프롬프트는 고정 IP에서만 매우 느립니다. 아마도 rDNS 문제일까요?

Telnet 로그인 프롬프트는 고정 IP에서만 매우 느립니다. 아마도 rDNS 문제일까요?

내 CentOS 시스템을 DHCP에서 정적 라우팅으로 전환했으며 텔넷을 사용하여 연결하는 데 거의 순간부터 초기 로그인 프롬프트가 표시될 때까지 약 30초가 걸립니다.

확실히,이는 호스트 파일에 의존하는 상자에 누가 연결되어 있는지 확인하기 위해 역방향 DNS 조회를 수행하는 서버와 관련이 있습니다.

이 프로세스 속도를 높이려면 /etc/hosts에 뭔가를 추가해야 합니까? 현재 내 파일은 매우 제한되어 있으며 이것은 거의 새로 설치한 것입니다.

[root@Azaz07]# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

Telnet0 로컬은 즉시 응답을 완료합니다.

답변1

내 텔넷 호언장담

일반적으로는 사용하지 마시고 telnet대신 사용하시는 것을 추천드립니다 ssh. 텔넷은 보안 책임이 있으며 오늘날에는 누구도 이를 사용해서는 안 됩니다. Wireshark를 사용하여 네트워크를 통과하는 동안 누군가가 쉽게 텔넷 패킷을 스니핑하고 자격 증명에 액세스할 수 있는 방법을 알아보려면 이 문서를 참조하세요. 이 기사의 제목은 다음과 같습니다.Wireshark를 사용하여 Telnet 스니핑. 다음은 텔넷을 사용한 로그인 시도의 스크린샷입니다.

SS Wireshark가 텔넷을 감지합니다.

문제를 해결하세요

그러나 반드시 사용해야 한다면 도구와 함께 사용하는 명령을 telnet진단하는 것부터 시작하겠습니다 .telnetstrace

결국 발생하는 문제를 보여주기 위해 /etc/resolv.conf가짜 DNS 서버가 포함되도록 파일을 수정했습니다. 이로 인해 OP가 느려지게 됩니다.

# /etc/resolv.conf
# Generated by NetworkManager
domain mydom.net.
search mydom.net.
nameserver 1.2.3.4
nameserver 192.168.1.101

그런 다음 telnet다음과 같이 실행합니다.

$ strace -T telnet skinner

출력의 이 부분은 시간이 오래 걸리는 이유를 보여줍니다.

...
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3 <0.000021>
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("1.2.3.4")}, 16) = 0 <0.000023>
poll([{fd=3, events=POLLOUT}], 1, 0)    = 1 ([{fd=3, revents=POLLOUT}]) <0.000012>
sendto(3, "\275N\1\0\0\1\0\0\0\0\0\0\7grinchy\5bubba\3net\0\0"..., 35, MSG_NOSIGNAL, NULL, 0) = 35 <0.000073>
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3, revents=POLLOUT}]) <0.000012>
sendto(3, "\373\262\1\0\0\1\0\0\0\0\0\0\7grinchy\5bubba\3net\0\0"..., 35, MSG_NOSIGNAL, NULL, 0) = 35 <0.000027>
poll([{fd=3, events=POLLIN}], 1, 4999)  = 0 (Timeout) <5.004038>
...

위에서 "시간 초과"가 발생하는 것은 poll포트 53의 서버 1.2.3.4에 대한 DNS 쿼리입니다. 스위치를 사용할 때 -T이 함수 호출이 시간 초과되는 데 약 5초가 소요된 것을 볼 수 있습니다.

time다음 명령을 사용하여 시간 길이를 확인할 수도 있습니다.

$ time telnet skinner
Trying 192.168.1.3...
telnet: connect to address 192.168.1.3: Connection refused

real    0m10.030s
user    0m0.001s
sys 0m0.003s

올바른 DNS 서버를 사용하세요.

/etc/resolv.conf이제 올바른 DNS 서버를 배치하면 telnet성능이 향상됩니다.

$ strace -T telnet skinner
...
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.101")}, 16) = 0 <0.000018>
poll([{fd=3, events=POLLOUT}], 1, 0)    = 1 ([{fd=3, revents=POLLOUT}]) <0.000010>
sendto(3, "D\363\1\0\0\1\0\0\0\0\0\0\7grinchy\5mydom\3net\0\0"..., 35, MSG_NOSIGNAL, NULL, 0) = 35 <0.000054>
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3, revents=POLLOUT}]) <0.000009>
sendto(3, "s\342\1\0\0\1\0\0\0\0\0\0\7grinchy\5mydom\3net\0\0"..., 35, MSG_NOSIGNAL, NULL, 0) = 35 <0.000021>
poll([{fd=3, events=POLLIN}], 1, 4999)  = 1 ([{fd=3, revents=POLLIN}]) <0.005300>
ioctl(3, FIONREAD, [84])                = 0 <0.000024>
recvfrom(3, "D\363\205\200\0\1\0\1\0\1\0\1\7grinchy\5mydom\3net\0\0"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.101")}, [16]) = 84 <0.000016>
poll([{fd=3, events=POLLIN}], 1, 4994)  = 1 ([{fd=3, revents=POLLIN}]) <0.003688>
...

timing을 사용해 time도 동일한 결과가 표시됩니다.

$ time telnet skinner
Trying 192.168.1.3...
telnet: connect to address 192.168.1.3: Connection refused

real    0m0.009s
user    0m0.000s
sys 0m0.002s

답변2

저는 4.2.2.1과 4.2.2.2를 정적으로 할당된 DNS 서버로 사용하고 있었습니다. 라우터에서 192.168.0.1로 전환했더니 문제가 해결되었습니다.

관련 정보