Узнать белый IP-адрес роутера с сервера, который за NAT-ом?

Приветствую!



Есть небольшая задачка, надеюсь, всезнающий Хабр поможет её решить.



Итак, есть ADSL роутер, который получает 1 белый IP-адрес (динамический) от провайдера. Далее имеем сервер с FreeBSD, который за NAT-ом с серым IP-адресом (статическим). На роутере настроен dynamic dns (dyndns.org). Периодически роутер переподключается к провайдеру, и IP-адрес меняется, однако сервис dyndns не обновляется, так как (я так полагаю), роутер и служба dyndns на нем так устроена, что информация будет синхронизироваться только 1 раз за 1 загрузку роутера. Грубо говоря, чтобы обновился IP-адрес модема на NS серверах dyndns, роутер надо перезагружать. Этот вариант неприемлем.



Что же интересует: нужно в каждый момент времени знать, какой же используется белый IP. Можно ли как-то с сервера с серым IP отправлять по крону белый IP роутера себе на почтовый ящик, к примеру, скриптом из консоли ssh? Если можно, то также интересует, как именно можно добыть этот белый IP? Может выполнить php cкрипт, как-то «грепнуть» IP, а далее уже отправить его на email или с помощью php-mail, или из консоли ssh с помощью sendmail?



В общем, буду рад любым предложенным решениям!

П.С. Если нужна еще какая-то дополнительная информация, предоставлю :)
  • Вопрос задан
  • 14013 просмотров
Пригласить эксперта
Ответы на вопрос 5
FilimoniC
@FilimoniC
Поставь DynDns на сервер. Так ты будешь хотя бы знать что там происходит
Ответ написан
xaker1
@xaker1
Можно брать ip с ifconfig.me/ip, тем же curl`om — а там уже делайте что хотите, можно сразу же по api на dyndns сообщать новый ip.
Ответ написан
Комментировать
mastini
@mastini
А почему dyndns не обновлять с сервера по крону?
Ответ написан
Комментировать
074909
@074909
группа медленного нереагирования
1. Забрать внешний адрес с роутера по SNMP, если роутер это поддерживает;
2. забрать с консоли роутера, если он умеет telnet сервером быть;
3. забрать с веб-морды роутера curl`ом или wget`ом статусную страницу и распарсить внешний адрес.
Ответ написан
Комментировать
lmaxximl
@lmaxximl
все просто у меня модем на бридже и скрипт в кроне каждые 10 минут:

#!/bin/sh
#Скрипт отправляет на почту текущий динамический адрес

#Переменные
LAST_IP=`cat /root/last_ip`
INTERFACE="dsl1"
STRING=`ifconfig $INTERFACE | grep "inet addr"`
IP=`echo $STRING | gawk -F: '{print $2}' | gawk -F' ' '{print $1}'`;

#Узнаем IP и заносим его в файл /root/last_ip если ip совпадаеи с ip что в файле то он не перезаписываеться
if [ "$LAST_IP" != "$IP" ]; then

#Если отличаеться то записываеться
echo $IP > /root/last_ip

#Отправляем содержимое на email 
cat | grep "" /root/last_ip | ssmtp -v -s 'ADSL' user@gmail.com

fi
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы