SSH 동적 터널은 PuTTY의 동적 포워딩을 포함해 SOCKS 인터페이스를 제공합니다. HTTP 프록시만 받아들이는 애플리케이션은 그 포트를 HTTP라고 부르는 것만으로는 사용할 수 없습니다.

둘 사이에 로컬 프로토콜 브리지를 둘 수 있습니다. 애플리케이션은 HTTP 프록시 요청을 브리지로 보내고, 브리지는 SOCKS 서비스를 통해 목적지 연결을 엽니다.

Privoxy는 이 구성을 자신의 포워딩 규칙으로 문서화합니다. 기존 로컬 SOCKS5 터널의 경우 설정 조각은 다음과 같습니다.

forward-socks5 / 127.0.0.1:1080 .

애플리케이션은 1080번 포트가 아니라 Privoxy의 HTTP 리스너에 연결합니다. 그 리스너는 의도한 접근 정책에 따라 로컬로 유지하십시오. 규칙 끝의 마침표는 문서화된 의미가 있으며, 빠진 인터넷 호스트 이름을 위한 자리 표시자가 아닙니다.

이것은 프로토콜 변환입니다

Privoxy 포워딩 문서는 SOCKS 포워딩 구문과 호스트 이름 처리를 설명합니다. 단순한 TCP 포트 포워딩은 같은 변환을 하지 않습니다. 클라이언트의 HTTP 바이트를 그대로 SOCKS 리스너로 전달하는데, 그 리스너는 여전히 SOCKS 협상을 기대합니다.

브리지는 또한 이해해야 할 구성의 일부가 됩니다. Privoxy에는 자체 콘텐츠 필터링과 접근 설정이 있을 수 있습니다. 브리지를 추가하는 것은 원래 애플리케이션이 SOCKS를 기본 지원하게 만드는 것과 같지 않습니다.

HTTPS 사이트의 경우 애플리케이션은 보통 HTTP 브리지에 CONNECT를 요청하고, 브리지는 SOCKS를 통해 목적지 연결을 얻습니다. 사이트의 일반 TLS는 애플리케이션과 사이트의 관계로 남으며, 브리지가 이 경로를 제공하기 위해 사이트를 사칭할 필요는 없습니다.

애플리케이션이 SOCKS를 직접 사용할 수 있다면 추가 구성 요소는 불필요할 수 있습니다. 실제 프로토콜 불일치를 해결하는 데 브리지를 사용하고, 리스너와 상류를 명확히 구분하십시오.

관련 글