Cómo obtener la dirección IP del cliente en Java HttpServletRequest

Estoy tratando de desarrollar una aplicación web Java (Servlet) que necesito para obtener la dirección IP de los clientes.

Por favor, no considere esto como una pregunta duplicada porque probé todas las respuestas posibles que están disponibles en el stackoverflow.

El siguiente es mi código hasta ahora:

1)

String ipAddress =  request.getRemoteAddr();

En este caso, la mayor parte del tomo me da la 'Dirección de puerta de enlace predeterminada' (147.120.1.5). No es la dirección IP de mi máquina (174.120.100.17).

2)

String ipAddress = request.getHeader("X-FORWARDED-FOR");  
   if (ipAddress == null) {  
       ipAddress = request.getRemoteAddr();  
   } 

En este caso, la mayor parte del tomo me da la 'Dirección de puerta de enlace predeterminada' (147.120.1.5). No es la dirección IP de mi máquina (174.120.100.17).

3)

InetAddress IP=InetAddress.getLocalHost();
System.out.println(IP.getHostAddress());

En este caso obtuve la dirección IP del servidor (147.120.20.1).

Mi dirección IP en 147.120.100.17. Ahora no sé cómo obtener la dirección IP del cliente real. Por favor haz una respuesta.

Muchas gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta