Como capturar informações de rede como: IP Local, IP de saída

Tem alguma API para capturar o ip local e de saída de uma máquina?
o que tenho faz a captura apenas do ip local não o ip de saída da maquina:

public static String localhost(){
    try
      {
         return InetAddress.getLocalHost().getHostAddress();
      }
      catch(UnknownHostException e)
      {
         return new String("127.0.0.1");
      }
}

O ip público você teria que perguntar para o teu modem roteador ou para alguem de fora da rede.