SOCKS5 서버는 TCP 연결을 받아들이고도 대상에 접근하는 요청을 거부할 수 있습니다. 어느 엔드포인트가 실패했는지 판단하기 전에 올바른 단계의 응답을 읽으세요.

먼저 방식 선택이 이뤄집니다. 사용자 이름과 비밀번호 인증이 선택되면 자체 결과가 있습니다. 그 뒤에야 서버가 CONNECT 또는 다른 SOCKS 명령에 대한 응답을 반환합니다. 한 단계의 바이트 값을 다른 단계의 표로 해석할 수 없습니다.

요청 응답은 서로 다른 실패를 나타냅니다

응답 값SOCKS5 요청 응답에서의 의미
0x01일반 서버 실패.
0x02규칙 집합이 연결을 허용하지 않음.
0x03네트워크에 도달할 수 없음.
0x04호스트에 도달할 수 없음.
0x05연결 거부.
0x06TTL 만료.
0x07명령을 지원하지 않음.
0x08주소 유형을 지원하지 않음.

예를 들어 요청 수준의 거부는 SOCKS 서비스에 도달한 뒤 보고됩니다. 운영체제가 해당 서비스로의 초기 TCP 연결을 거부하는 것과 다릅니다.

주소 유형 오류는 IPv4, IPv6 또는 호스트 이름 표현과 관련될 수 있습니다. 엔드포인트 전체가 SOCKS5를 지원하지 않는다는 뜻은 아닙니다. 마찬가지로 지원하지 않는 UDP 명령이라는 결과만으로 별도의 TCP CONNECT 요청에 대해 단정할 수 없습니다.

코드에 의미를 주는 맥락을 수집하세요

오류 보고서를 작성할 때 프록시 주소, 명령, 대상 호스트와 포트, 주소 계열, DNS 모드를 결과와 함께 남기세요. 엔드포인트를 관리한다면 서버 측 정책 로그도 유용합니다. 규칙 집합의 거부는 연결 시간 제한을 늘릴 이유가 아니라 적용 권한을 확인할 이유입니다.

응답은 서버의 보고이며 대상 네트워크의 완전한 독립 진단이 아닙니다. 클라이언트 문구도 다릅니다. 짧게 번역된 오류 메시지에만 의존하지 말고 가능하면 단계와 원래 응답을 기록하세요.

관련 글