Java SOCKS 대상 주소를 해석하지 않은 채로 두기
대상 호스트 이름을 유지하여 Java SOCKS 연결을 만들 때 로컬 대상 DNS 조회를 피합니다.
SOCKS 연결은 프록시가 대상을 확인하기 전에 로컬에서 실패할 수 있습니다. 소켓 주소를 구성할 때 코드가 대상을 확인했는지 점검하세요.
Java SOCKS 소켓의 경우 확인되지 않은 대상 주소로 대상 호스트 이름을 유지하세요:
Proxy proxy = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
"destination.example", 443), 5000);엔드포인트와 호스트 이름은 자리 표시자입니다. 허용된 공개 대상 테스트에는 SOCKS5 서비스나 SOCKS5 프록시 목록의 후보를 사용하세요. 중요한 차이는 프록시에 도달하기 위해 프록시를 확인하는 것과 SOCKS 교환을 위해 대상 이름을 유지하는 것입니다.
연결된 후에도 HTTPS 클라이언트에는 대상 호스트 이름에 대한 TLS 세션이 여전히 필요합니다. TLS 래퍼는 프록시의 호스트 이름을 상대방 신원으로 사용해서는 안 됩니다.
상위 수준 코드도 확인하세요. 라이브러리가 커넥터를 호출하기 전에 자체 조회를 수행할 수 있습니다. 이 소켓 주소에서 호스트 이름을 유지해도 애플리케이션 다른 곳에서 수행된 조회를 되돌릴 수는 없습니다.