SOCKS5 연결 실패 코드 읽기
모든 SOCKS 오류를 죽은 프록시로 판단하기 전에 SOCKS 협상, 인증, 대상 연결 중 무엇이 실패했는지 확인합니다.
SOCKS5 서버는 TCP 연결을 받아들이고도 대상에 접근하는 요청을 거부할 수 있습니다. 어느 엔드포인트가 실패했는지 판단하기 전에 올바른 단계의 응답을 읽으세요.
먼저 방식 선택이 이뤄집니다. 사용자 이름과 비밀번호 인증이 선택되면 자체 결과가 있습니다. 그 뒤에야 서버가 CONNECT 또는 다른 SOCKS 명령에 대한 응답을 반환합니다. 한 단계의 바이트 값을 다른 단계의 표로 해석할 수 없습니다.
요청 응답은 서로 다른 실패를 나타냅니다
| 응답 값 | SOCKS5 요청 응답에서의 의미 |
|---|---|
| 0x01 | 일반 서버 실패. |
| 0x02 | 규칙 집합이 연결을 허용하지 않음. |
| 0x03 | 네트워크에 도달할 수 없음. |
| 0x04 | 호스트에 도달할 수 없음. |
| 0x05 | 연결 거부. |
| 0x06 | TTL 만료. |
| 0x07 | 명령을 지원하지 않음. |
| 0x08 | 주소 유형을 지원하지 않음. |
예를 들어 요청 수준의 거부는 SOCKS 서비스에 도달한 뒤 보고됩니다. 운영체제가 해당 서비스로의 초기 TCP 연결을 거부하는 것과 다릅니다.
주소 유형 오류는 IPv4, IPv6 또는 호스트 이름 표현과 관련될 수 있습니다. 엔드포인트 전체가 SOCKS5를 지원하지 않는다는 뜻은 아닙니다. 마찬가지로 지원하지 않는 UDP 명령이라는 결과만으로 별도의 TCP CONNECT 요청에 대해 단정할 수 없습니다.
코드에 의미를 주는 맥락을 수집하세요
오류 보고서를 작성할 때 프록시 주소, 명령, 대상 호스트와 포트, 주소 계열, DNS 모드를 결과와 함께 남기세요. 엔드포인트를 관리한다면 서버 측 정책 로그도 유용합니다. 규칙 집합의 거부는 연결 시간 제한을 늘릴 이유가 아니라 적용 권한을 확인할 이유입니다.
응답은 서버의 보고이며 대상 네트워크의 완전한 독립 진단이 아닙니다. 클라이언트 문구도 다릅니다. 짧게 번역된 오류 메시지에만 의존하지 말고 가능하면 단계와 원래 응답을 기록하세요.