Een SOCKS-verbinding kan lokaal mislukken voordat de proxy de kans krijgt de bestemming op te lossen. Controleer of je code het doel heeft opgelost tijdens het bouwen van het socketadres.

Behoud voor een Java SOCKS-socket de doelhostnaam met een onopgelost bestemmingsadres:

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);

Het eindpunt en de hostnaam zijn plaatsaanduidingen; gebruik je SOCKS5-dienst of een kandidaat uit de SOCKS5-proxylijst voor toegestane tests met een openbare bestemming. Het belangrijke verschil is tussen de proxy oplossen zodat je die kunt bereiken en de bestemmingsnaam bewaren voor de SOCKS-uitwisseling.

Na het verbinden heeft een HTTPS-client nog steeds een TLS-sessie voor de hostnaam van de bestemming nodig. Een TLS-wrapper moet de hostnaam van de proxy niet als de identiteit van de peer gebruiken.

Controleer ook code op een hoger niveau: een bibliotheek kan haar eigen opzoeking doen voordat ze je connector aanroept. Een hostnaam in dit socketadres bewaren kan een opzoeking elders in de applicatie niet ongedaan maken.

Gerelateerde artikelen