서버에서 전달 된 연결 거부 : 관리적으로 금지됨 [개방 실패] refused by server: Administratively

때로는 PuTTY를 SOCKS 프록시로 사용하는데 웹 브라우저에서 연결하려는 웹 페이지가 존재하지 않고 시간 초과가 오래 걸리면 쉘 세션이 중단되는 경우가 있습니다. (시간 초과에 도달 할 때까지 터미널에서 대화식으로 입력 할 수 없음) 및 다른 모든 웹 페이지 요청도 중단됩니다 .

최근에 이것이 DNS와 관련 이있는 것으로 나타났습니다 . 현재 sshd측면에 지정된 서버에 문제가있는 것처럼 보이 /etc/resolv.conf므로 PuTTY SOCKS를 통해 인터넷을 탐색하는 것은 거의 불가능합니다 웹 브라우징이 실패했을 때 프록시와 PuTTY 터미널이 거의 항상 정지됩니다.

PuTTY 로그에 다음과 같은 오류가 자주 발생하며 잠시 후 스톨이 중지 된 것으로 나타납니다.

2014-01-11 17:12:03 Forwarded connection refused by server: Administratively prohibited [open failed]

일반적으로 이것은 로그 대신에 표시됩니다. SOCKS 지원 브라우저가 SOCKS 프록시가 어떤 IP 주소를 연결하는지 알지 못하는 인상을줍니다.

2014-01-11 17:18:11 Opening forwarded connection to superuser.com:80

ssh 데몬을 중심으로 DNS 서버를 변경하는 것은 임시 솔루션 일 뿐이며 이러한 상황에서 OpenSSH / PuTTY가 멈추는 근본적인 문제는 해결하지 못합니다. (SOCKS를 통해 호스트 이름을 사용하지 않는 것 역시 잘못된 것 같습니다.)

ssh 실속을 완화시킬 수있는 방법이 있습니까?

(아주 최소한, 내가 /etc/resolv.conf 파일에 지정된 여러 서버가 있습니다. SSHD가 다른 서버와의 시간이 초과 DNS, 재 시도에 더 공격적으로해야처럼 보일, 그리고 것 dig다음에 요청을 다시 발행 보인다 서버가 정확히 1 초 후에 sshd가 수행하는 것보다 더 적합합니다.)



답변

공식 메일 링리스트 ( http://lists.mindrot.org/pipermail/openssh-unix-dev/2014-January/031974.html) 의 OpenSSH 개발자에 따르면 이는 표준 libc 리졸버가 사용되기 때문입니다. 동기적이고 차단되는 OpenSSH에 의해 해결이 진행되는 동안 다른 트래픽은 처리되지 않습니다.

이 문제를 해결 하려면 libS의 기본 getaddrinfo 와 다른 리졸버 함수를 사용하기 위해 OpenSSH에서 ssh / channels.c # connect_to ( 버그 # 1357 에서 Mozilla가 사용하는 SOCKS5의 코드 경로에 있음을 확인)에 대한 수정이 필요합니다 .