Java DatagramSocket y retransmisión UDP por SOCKS5
Entiende por qué un socket UDP de Java necesita una implementación SOCKS5 UDP aunque las conexiones TCP ya usen SOCKS.
Tu petición HTTP de Java funciona a través de SOCKS, pero una función UDP sigue enviando tráfico directamente o falla. Configurar las propiedades SOCKS de la JVM no le da a DatagramSocket una implementación SOCKS5 UDP.
La API DatagramSocket envía y recibe datagramas dirigidos a puntos finales de red. Su método connect() elige un par para ese socket. No realiza una negociación SOCKS con el par.
Una ruta UDP por SOCKS5 requiere trabajo adicional
SOCKS5 define una asociación UDP establecida sobre una conexión de control TCP. Después, el cliente intercambia datagramas encapsulados con la dirección de retransmisión que proporciona el proxy. Cada mensaje encapsulado identifica su destino. Una implementación de cliente debe gestionar ese encapsulado y la vida de la conexión de control.
Apuntar un socket UDP normal al puerto de escucha TCP del proxy omite esos pasos. Enviar los datagramas crudos de tu aplicación a esa dirección no sustituye a la asociación.
Elige una biblioteca o una función de la aplicación que admita explícitamente la retransmisión UDP por SOCKS5 y confirma que el servidor también la admite. Una biblioteca que anuncia compatibilidad con SOCKS podría implementar solo TCP CONNECT. La especificación del protocolo distingue los comandos.
La retransmisión UDP también necesita una ruta utilizable
Una conexión TCP correcta al proxy solo establece la ruta de control. Los cortafuegos o el comportamiento de NAT aún pueden interferir con los datagramas enviados a la retransmisión. Recoge el punto final de retransmisión devuelto y cualquier error de retransmisión antes de concluir que el destino de la aplicación está fuera de línea.
Por último, la compatibilidad de transporte SOCKS no añade garantías de entrega a UDP. Los tiempos de espera propios de tu aplicación, el tratamiento de pérdidas y los límites de tamaño de mensaje siguen aplicándose después de que cambie la ruta.