Pegando IP Local e Pegando IP Externo

[size=14]Essa foi uma das formas… pela qual consegui pegar o Ip… O Ip Local foi tranquilo… Mas o ip Externo que seria o dinâmico… Fiz essa Gambiarra ai…rs…[/size]

import java.net.HttpURLConnection;
import java.net.URL;

public class VerificaSite {
	
	public String verificandoSite(){

		String[] site = {"http://www.meuenderecoip.com", "http://meuip.datahouse.com.br", 
				         "http://www.hlera.com.br/meu_ip/", "http://www.abusar.org.br",
				         "http://www.mostrarip.com.br"};

		String siteValido = "";

		for(int i = 0; i < site.length; i++){

			try {

				URL url = new URL(site[i]);
				HttpURLConnection conexao = (HttpURLConnection) url.openConnection();

				int codigo = conexao.getResponseCode();

				if(codigo == 200){

					siteValido = site[i];
				  }

			} catch (Exception e) {
				
			       }
		}

		return siteValido;
	}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PegandoIps {		
	
	String ipLocal = "";
	String ipExterno = "";
	String linhas = null;
	Matcher m;

	String ipMaquina(){ 					 		 
		 
		 try{			
			 
			InetAddress end = InetAddress.getLocalHost();
		 	ipLocal = end.getHostAddress().toString();		
			
			URL url = new URL(new VerificaSite().verificandoSite());
			HttpURLConnection conexao = (HttpURLConnection) url.openConnection();
			BufferedReader buffer = new BufferedReader(new InputStreamReader(conexao.getInputStream()));

			Pattern pega = Pattern.compile("[0-9]{1,3}[.-]{1}[0-9]{1,3}[.-]{1}[0-9]{1,3}[.-]{1}[0-9]{1,3}");

			while((linhas = buffer.readLine()) != null){

				m = pega.matcher(linhas);

				while(m.find()){

					ipExterno = m.group();
				  }
			  }

			buffer.close();
			conexao.disconnect();

		} catch(MalformedURLException e1){

			    System.exit(1);

		}catch(IOException e2){

			    System.exit(1);
		    }		 
		

		return "Meu IP Local: " + ipLocal + "\nMeu IP Externo: " + ipExterno.replace("-", ".");

	}
}
public class IpTeste {
	
	public static void main(String[] args) {
		
		PegandoIps pegue = new PegandoIps();		 
		
		System.out.println(pegue.ipMaquina());				
	}
}

[size=14]Funcionou… me retorna o Ip Local e o Ip Externo como esperado…[/size]
[size=14]Se alguém tiver outro jeito de se Pegar o IP externo… poste aqui… obrigado[/size]