Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: как настроить работу сервера на динамичеком IP через DDNS сервис?  (Прочитано 1996 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ploxish

  • Автор темы
  • Любитель
  • *
  • Сообщений: 97
    • Просмотр профиля
Здравствуйте.
Есть проблема-имеется web server на офтопе, сам сервак висит на динамичиском ip на нем стоит софтина DirectUpdate  для динамичиского обнолвения dns записей на сервере  changeip.com , вся работа этой проги заключается в проверке ip на интерфейсе в заданном промежутке времени и только в случае его изменения обновление на dns. Есть идея перевести все это хозяйство на ubuntu.
Все скрипты что я нашел в нете принудитльно отправляют запрос на сервер с заданным промежутком времени, не проверяя изменился ip или нет, проблема  в том что vpn может разорваться 1 раз в сутки а может падать каждые 2 часа, если много пустых запросов приходит к ddns провайдеру, аккаунт просто банится-установка большего интервала срабатывания скрипта проблему не решает т.к. сайт может оказаться в дауне на продолжительное время до следующего срабатывания скрипта.
Вариант с покупкой статического ip не предлогать ибо сервер может переезжать, а время на его развертывание на новом месте нужно минимальное( а то пока обновиш записи на DNS и тп много времени уйдет), а нужно сделать из серии- ткнул питание, lan нажал кнопку включения и забыл про него.
Внимание вопрос: Как сдлать чтобы скрипт парсил ip на интерфейсе И ТОЛЬКО В СЛУЧАЕ ЕГО ИЗМЕНЕНИЯ обнолял записи на ddns сервере. Ну а если посоветуете программу аналогичную заявленной то с меня 100гр и пончик...  ;)
« Последнее редактирование: 09 Октября 2008, 08:56:45 от ploxish »

Оффлайн ploxish

  • Автор темы
  • Любитель
  • *
  • Сообщений: 97
    • Просмотр профиля
Ну неужели никто с подобной проблемой не сталкивался?  :-\

Оффлайн tramX

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Владейте:

Создать файл cip.sh
#!/bin/bash

wanted_interface="eth0"
ddns_agent="/путь/к/агенту/дин-днс/имя_запускаемого_скрипта_или_бинарника"
log_file="/var/log/cip.log"
# timeout in seconds
time_out="1"

ip_and_mask_current="$(ip addr show $wanted_interface | grep inet | grep -v inet6 | awk '{print $2}')"
while sleep $time_out ; do
 ip_and_mask_old="$ip_and_mask_current"
 ip_and_mask_current="$(ip addr show $wanted_interface | grep inet | grep -v inet6 | awk '{print $2}')"
 if [ "$ip_and_mask_old" != "$ip_and_mask_current" ] ; then
  echo "$(date) : detected new ip" > $log_file
  $ddns_agent
 fi
done
Сделать chmod +x cip.shТеперь cip.sh можно запускать откуда угодно. Например при старте системы из rc.local


Штука эта считывает адрес в формате адрес/маска.
И в вечном цикле:
    сначала ждёт тайм-аут,
    затем проверяет,
    и если изменилось, то сбрасывает в лог время и вызывает агента.

P.S.
man ip
man grep
man awk

man bash
или поиском найдутся многие мануалы по программированию на Баш.
StarDict и Mueller помогут против английского мануала.

Оффлайн ploxish

  • Автор темы
  • Любитель
  • *
  • Сообщений: 97
    • Просмотр профиля
А вот за это БОЛЬШОЕ спосибо. :)

tartan

  • Гость
И от меня пять копеек в ту же тему:

#!/bin/bash

# скрипт для отправки запроса на dyndns.com при смене внешнего ip
# добываем текущий ip
CURRIP=$(wget -O - http://whatismyip.org/ | tail)

# тот ip, который был выявлен при последней проверке, хранится в специальном файле, его надо создать
# и прописать к нему путь:
PREVIP=$(cat /home/tipa-server/nfs/logs/ipchange/previp)

# Сравниваем текущий ip с тем, что был раньше, если они не совпадают, рестартим клиент обновления
# (в данном случае inadyn) в режиме демона с долгой задержкой и обновляем файл, содержащий
# ранее обнаруженный ip

if [ "$CURRIP" != "$PREVIP" ];
    then
        killall inadyn
        inadyn --background -u tipa-server -p мой пароль -a моё доменное имя --dyndns_system dyndns@dyndns.org --update_period_sec 600000
        echo $CURRIP >  /home/tipa-server/nfs/logs/ipchange/previp
fi
exit 0

Предлагаю перетащить тему в хауту. )



Оффлайн ploxish

  • Автор темы
  • Любитель
  • *
  • Сообщений: 97
    • Просмотр профиля
Вопрос назревший по ходу решения основной проблемы- выявилась критическая уязвимость.
Как сделать чтобы соединение с ddns сервисом и пепедачей имени и пароля от акаунта шло через ssl, а то проснифать пароль в нете за пару суток работы
это как 2 байта переслать.
« Последнее редактирование: 13 Октября 2008, 09:08:47 от ploxish »

tartan

  • Гость
Боюсь, что это уже на dyndns на самом надо копать - поддерживают они такое или нет.

Оффлайн ploxish

  • Автор темы
  • Любитель
  • *
  • Сообщений: 97
    • Просмотр профиля
просто я пользуюсь chengeip.com, там точно есть. Без ssl это потенциальная огромная дыра. И там дешевле и время обновления dns записи 2 мин. :coolsmiley:
Вот я еще не совсем понял, inadyn с ними работает или нет?
« Последнее редактирование: 13 Октября 2008, 23:15:56 от ploxish »

tartan

  • Гость
Это опять у них надо смотреть. Но в скрипт можно ведь любой клиент обновления запихать

(я пользуюсь dyndns бесплатно и наружу оставляю торчать только один порт - для ftp, так что не парюсь особо)

 

Страница сгенерирована за 0.038 секунд. Запросов: 23.