Друг вариант за динамичен DNS на моя сайт или как изоставих dyndns

Отначало беше възможно да се използва безплатно едно име на домейн за акаунт. По-късно името на домейна започна да се нулира всеки месец - това периодично изискваше усилия за възстановяване на работата. Другите безплатни услуги не ми харесаха и по някое време се регистрирах за тяхната платена услуга за $25 на година, което ми даде възможност да използвам до 30 домейн имена.

Имаше неудобство - клиентската програма под Windows визуализира всички имена на домейни на моя акаунт по време на настройка и всеки клиент може случайно или умишлено да повреди обвързването на нечие име на домейн. Като цяло потискащо, но поносимо. Миналата седмица беше време да подновя абонамента си за една година. Цената се повиши до 30 долара, а рублата по това време падна до 60 рубли за долар. Стана ми жал за рублите и реших да натисна динамичния DNS на моя сайт. Изходни данни:

  • windows и *nix машини с динамичен ip
  • freebsd 9.3
  • свързване9
  • apache 2.4
  • php 5.3
  • вашия домейн
Какво да получите:
  • лесна за използване клиентска страна

Да предположим, че нашият домейн е MyDomain.ru. Нека го опишем като главна зона в /etc/namedb/named.conf:

Съответно в /etc/namedb/master/MyDomain.ru пишем нещо като:

Неговият изход е разделен на два файла:

Поставете в /etc/namedb/rndc.conf и

Можете да видите състоянието

Можете да прочетете man на rndc

Трябва да добавите някои права към потребителя, от чието име работи:

Създайте ddns потребител (с домашна директория /home/ddns), от чието име ще се изпълнява скриптът за актуализиране на записа на dns сървъра. Създайте скрипт със следното съдържание и го поставете в /home/ddns/ddns.sh, например:

Извикване с два параметъра

Основният нюанс е товаче този сайт може да бъде достъпен само с потребителско име и парола. Идентификационните данни се съхраняват в /usr/local/www/ddns/.htpasswd, в същата директория поставяме следния php скрипт:

За съжаление, не можах да стартирам bash скрипт директно от php, смятам, че това е причинено от настройките за сигурност на потребителя www, от името на който се изпълнява услугата на уеб сървъра. Затова използвам sudo от името на потребителя на ddns (обикновен потребител, чиято домашна директория съдържа самия скрипт). Ето съдържанието на файла /usr/local/etc/sudoers за това:

Е, всъщност не забравяйте да попълните файла с идентификационни данни:

Ако sudo е конфигуриран правилно, няма проблеми с правата за достъп на потребителя www, когато клиентът има достъп до ресурса

Получаваме покана за въвеждане на идентификационни данни.

Така че само разрешените имена на домейни да могат да се редактират с rndc-ключа. Също така би било хубаво да организирате комуникация между клиента и сървъра чрез https, така че отворените пароли да не се разхождат в Интернет.

Остава само да завършим клиента. Там всичко е просто.

Помощната програма curl в *nix системите трябва да е по подразбиране, за Windows ще трябва да бъде изтеглена. Направете тази команда в bat-файл или sh-скрипт и я поставете съответно в планировчика на задачи или cron с интервал на повикване от 5 минути.

За да свържем следващия клиент към тази схема, ние измисляме вход (домейн от 3-то ниво) и парола за него. Ние редактираме клиентския скрипт и добавяме идентификационни данни към .htpasswd.

Hardcore conf в C++. Каним само професионалисти.