나는 다양한 포럼에서 많은 것을 검색했으며 대부분의 경우 방화벽에서 포트를 열거나 서비스를 다시 시작하는 것이 해결책이라는 것을 나타냅니다 xinetd
. 어떤 경우에는 이것이 해결책이 될 수도 있지만, 문제는 또 다른 문제이고 여전히 해결되어야 한다고 생각합니다.
Red Hat 6이 있고 서비스가 다운되었으며 / iptables
실행 파일을 수정하지 않았습니다 .rshd
rsh
처음에 시스템을 부팅했을 때 rsh는 정상적으로 작동했습니다.
# rsh localhost pwd
/root
"xinetd" 서비스를 다시 시작하면 "폴링: 회로 설정에서 프로토콜 실패"라는 알려진 메시지가 나타납니다.
# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
# rsh localhost pwd
poll: protocol failure in circuit setup
이 문제를 해결할 수 있는 방법은 두 가지뿐입니다. 시스템을 재부팅하거나 레벨 2로 이동하는 것입니다.
# init 2; sleep 1; init 3
# rsh localhost pwd
/root
근본적인 원인을 찾고 싶습니다. 이는 방화벽 문제가 아닙니다.
strace
실패 시 출력은 다음과 같습니다 .
(강조된 단락 참조)
소켓(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 바인딩(3, {sa_family = AF_INET, sin_port = htons(1023), in_addr = inet_addr("0.0.0.0")}, 16) = 0 fcntl(3, F_SETOWN, 23277) = 0 연결(3, {sa_family=AF_INET, sin_port=htons(514), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 소켓(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 바인딩(4, {sa_family=AF_INET, sin_port=htons(1022), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 듣기(4, 1) = 0 쓰기 (3, "1022\0", 5) = 5 poll([{fd=3, 이벤트=POLLIN}, {fd=4, 이벤트=POLLIN}], 2, -1) = 1([{fd=3, revents=POLLIN|POLLERR|POLLHUP}]) write(2, "폴링: 회로에서 프로토콜 실패"..., 40) = 40 끄기(4) = 0 끄기(3) = 0 rt_sigprocmask(SIG_SETMASK, [], [URG], 8) = 0 그룹 종료(1)
strace
제대로 작동할 때의 출력 은 다음과 같습니다 .
(강조된 단락 참조)
소켓(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 바인딩(3, {sa_family = AF_INET, sin_port = htons(1023), in_addr = inet_addr("0.0.0.0")}, 16) = 0 fcntl(3, F_SETOWN, 24718) = 0 연결(3, {sa_family=AF_INET, sin_port=htons(514), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 소켓(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4 바인딩(4, {sa_family=AF_INET, sin_port=htons(1022), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 듣기(4, 1) = 0 쓰기 (3, "1022\0", 5) = 5 poll([{fd=3, 이벤트=POLLIN}, {fd=4, 이벤트=POLLIN}], 2, -1) = 1([{fd=4, revents=POLLIN}]) accept(4, {sa_family = AF_INET, sin_port = htons(1020), in_addr = inet_addr("127.0.0.1")}, [16]) = 5 끄기(4) = 0 writev(3, [{"루트\0", 5}, {"루트\0", 5}, {"pwd\0", 4}], 3) = 14 읽기(3, "\0", 1) = 1 rt_sigprocmask(SIG_SETMASK, [], [URG], 8) = 0 setuid(0) = 0 rt_sigprocmask(SIG_BLOCK, [INT QUIT TERM], [], 8) = 0 rt_sigaction(SIGINT, {SIG_IGN, [INT], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGINT, {0x2abd2db30080, [INT], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_IGN, [INT], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_IGN, [종료], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGQUIT, {0x2abd2db30080, [종료], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_IGN, [종료], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, 8) = 0 rt_sigaction(SIGTERM, {SIG_IGN, [용어], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGTERM, {0x2abd2db30080, [용어], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, {SIG_IGN, [용어], SA_RESTORER|SA_RESTART, 0x2abd2e3c1920}, 8) = 0 클론(child_stack = 0, 플래그 = CLONE_CHILD_CLEARTID | CLONE_CHILD_SETTID | SIGCHLD, child_tidptr = 0x2abd2eb893b0) = 24721 ioctl(5, FIONBIO, [1]) = 0 ioctl(3, FIONBIO, [1]) = 0 rt_sigprocmask(SIG_SETMASK, [], [INT 종료 기간], 8) = 0 select(6, [3 5], NULL, NULL, NULL) = 1([3]에서) 읽기(3, "/root\n", 8192) = 6 쓰기(1, "/root\n", 6) = 6 select(6, [3 5], NULL, NULL, NULL) = 1([3]에서) 읽기(3,"",8192) = 0 select(6, [5], NULL, NULL, NULL) = 1([5]에서) 읽기(5,"",8192) = 0 킬(24721,SIGKILL) = 0 그룹 종료(0) =?
도움을 주셔서 미리 감사드립니다.
감사합니다,
옥타비오