내 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 스니핑. 다음은 텔넷을 사용한 로그인 시도의 스크린샷입니다.
문제를 해결하세요
그러나 반드시 사용해야 한다면 도구와 함께 사용하는 명령을 telnet
진단하는 것부터 시작하겠습니다 .telnet
strace
예
결국 발생하는 문제를 보여주기 위해 /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로 전환했더니 문제가 해결되었습니다.