Как стать автором
Обновить

Комментарии 16

еще нужно в SOA Serial менять.
Он автоматически меняется при обновлении зоны. За полтора месяца использования и 4 хостах с 3-4 интерфейсами Serial зоны у меня уже 16136.
Было бы еще интересно посмотреть на пример расширения этого до поддержки WAN DNS-SD.
Зачем делать велосипед если можно просто включить обновление DNS через DHCP?
а вы видимо не в теме, это не для сервисов в локалке, а внешних сервисов.
Если этот вопрос адресован мне, то отмечу, что все сервера территориально разнесены и ни в коем случае не находятся в рамках одной локальной сети. Кроме того, почти все они имеют динамический внешний IP адрес, получаемый от провайдера.
Тогда вам стоит в статье как-то это указать, из текста складывается впечатление что это в рамках одной сети.
Не хотелось бы спорить, но городить всё описанное в топике в рамках локальной сети, да ещё и на 4-5 серверов было бы по меньшей мере нелогично, поэтому я и не стал указывать расположение клиентов.
Мало ли какая у вас задача, я говорю о том что при написании статьи стоит все-таки описать решаемую задачу если вы хотите чтобы не было таких вопросов.
Кстати раз уж вы диспользуете wsgi то стоит, наверно, поднять это все не на Apache, а на том же Lighttpd или Nginx.
>по cron каждые, например, пол часа выполняем скрипт
Если клиент сам устанавливает соединение с провайдером посредством PPP, то в первую очередь нужно поставить скрипт обновления адреса при установлении соединения (т.е., к примеру в /etc/ppp/ip-up.d/10dyndns). Думаю, не нужно объяснять зачем.
Вы правы. Спасибо за уточнение. Я этот момент упустил, так как все сервера (так исторически сложилось) ходят через роутеры. Конечно, самый правильный вариант — дергать сервер только после перезагрузки клиента, либо после изменения состояния любого сетевого подключения (если сервер сам поднимает соединения с Интернетом и имеет «белый» IP адрес).
А еще есть такой милый, ничего не стоящий хак на случай поломки DynDNS, если на клиенте есть Dropbox:
/bin/echo "`date`: host.dyndns.example.com new ip is $MYIP" >> /home/user/Dropbox/ddns.log
Сорри, что не Питон, но тут главное — идея.
Но это только если сервера «личные», а у меня везде разные хозяева (включая иногда и рутовый доступ). А для себя — да, самый простой и действенный вариант.
надо только определить $MYIP и не забыть следить за размером этого лога, а вообще идея неплохая.
также, если есть какой-нибудь свой веб-сервер в интернете, можно кроном делать wget my-site/i-am-here, адрес он определит сам и логи не будут доступны окружающим, можно даже состояние сервера туда слать и настроить мониторинг (хотя бы скрипт на коленке) на анализ таких записей в логе, если лень делать нормальный мониторинг :)
У меня так (IPv4 only):
MYIP=`/sbin/ifconfig ppp0 | /bin/grep "inet addr" | /bin/sed 's/.*addr:\([0-9.]*\) .*/\1/'`
Работает много дольше года, но нужно будет принимать меры, если интернет не всегда поднимается на ppp0 — уже не помню откуда я это помню ))

Судя по man pppd, если скрипт запускается из /etc/ppp/ip-up.d/, а номер будущего интерфейса с интернетом неизвестен, то можно еще так:
MYIP=`/sbin/ifconfig $1 | /bin/grep "inet addr" | /bin/sed 's/.*addr:\([0-9.]*\) .*/\1/'`
А можно и вовсе вот так:
MYIP=$4

Только в последних 2-х случаях скрипт также будет срабатывать при подключении PPTP VPN, что меня не устраивало, а придумывать логику различения VPN было не за чем.
в целом решение не очень секьюрно
Почему же, если дергаем по https с нормальным паролем, то вполне себе ничего решение, даже без дополнительных ухищрений с проверкой строки/соли (масло-масленное). Увести https пароль или угнать https токен (ключ шифрования сессии) — та еще задача.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.