У меня есть сервер OS X за экстримом аэропорта, обслуживающий услуги через открытые порты в аэропорту.
Сервер имеет локальный адрес 10.0.x.x, всегда один и тот же. Экстремальный аэропорт получает свой внешний IP-адрес через PPPoE, и иногда ... раз в неделю он меняется.
По соображениям безопасности НАМ ДЕЙСТВИТЕЛЬНО нравится такое поведение. Но мне нужен способ узнать внешний IP-адрес на тот случай, если мне нужно подключиться и что-то сделать с сервером, находясь снаружи.
Что я могу сделать?
Получите услугу динамического DNS. Есть много таких услуг, доступных в разных местах в Интернете ...
Сайт, который я использую именно для такого поведения, - ifconfig.me. Это может возвращать данные в любом формате, который вы можете использовать. Например. В сценарии bash, где вам нужен только ip:
IP=`curl http://ifconfig.me/ip`
Конечно, вы захотите проверить код возврата, если что-то пойдет не так. Тем не менее, он кажется довольно надежным для написания сценариев.
Или купите статический IP-адрес, но если вам просто нужно знать время от времени / на всякий случай, вы бы поступили именно так. И убедитесь, что вы настроили IPv6 / NAT / переадресацию портов, чтобы соединение действительно шло к серверу, когда оно попадает на шлюз.
Процитирую @MichaelHampton:
Вы можете настроить задание cron для выполнения следующего скрипта:
#!/bin/bash
TIME='date' $TIME
IP='curl http://ifconfig.me/ip' $IP
echo $TIME - $IP >> ~/iplogging.txt
Это выведет временную метку и IP-адрес во время запуска скрипта и сохранит его в ~ / iplogging.txt.