Eles fazem algo para isso chamado de nome DNS. Se for um servidor público, é mais do que provável que ele tenha um. Se não, então você vai querer fazer o seu próprio, se você já tem um nome DNS em sua organização, basta adicionar um novo registro em seu servidor DNS que especifica um novo subdomínio para aquele servidor. Em geral, todos os servidores públicos usam endereços IP estáticos, embora isso não seja realmente necessário. O IP nunca deve mudar, basta usá-lo. Se o IP estiver mudando, você precisará instalar um cliente de DNS dinâmico no servidor que manterá a entrada DNS atualizada para você automaticamente ou projetará seu próprio sistema (possivelmente um script que mantém seus arquivos host ) atualizado [refiro-me aos arquivos host em cada um de seus clientes; não ao servidor]). Além disso, não há necessidade de se preocupar com IP local versus IP público. Isso é algo que seu roteador sabe gerenciar automaticamente. Contanto que sua tabela de roteamento esteja configurada corretamente, ela encontrará o melhor caminho para o servidor. Se você tiver um roteador doméstico, tudo será tratado automaticamente nos bastidores.
Atualizar
Na verdade, pensei em uma boa solução que funcionasse. Obtenha uma unidade na nuvem, como o Google Drive. Configure-o em ambos os computadores para sincronizar corretamente. Em seguida, faça o outro pc gravar um arquivo na pasta de sincronização que contém o IP local:
echo 'ifconfig eth0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'' > /home/user/share/pcname_current_ip
Agora, você só precisa ler esse arquivo para encontrar o IP atual desse computador (desde que ambos tenham sido sincronizados, é claro).