Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Инструкция VirtualHost *:80 позволяет принимать запросы на любой адрес присвоенный провайдером.
2. Регистрация домена
Регистратор – организация, предоставляющая доменные имена пользователям.
Самый известный российский регистратор NIC.ru, но все имена предоставляются им за плату. Есть один регистратор предоставляющей большинство доменных имен второго уровня в зоне .tk бесплатно – это Dot.tk.
tk – домен первого уровня островов Токелау (между Новой Зеландией и Гавайями)
Зарегистрироваться очень просто, либо создаем новую учетную запись, либо пользуемся уже имеющимися аккаунтами от GMAL, YAHOO или FaceBook.
После регистрации выбираем любое понравившееся имя
Красивые имена типа linux.tk и solaris.tk стоят 1000 USD за 2 года. А все остальные, не имеющие схожести с английскими словами – бесплатно, например lissyara.tk на момент написания статьи был свободен. Lissyara.tk можно зарегистрировать как бесплатно, так и платно за 6,95 евро. У бесплатного варианта есть обязательство: 25 посещений за 90 дней – вещь совершенно реальная для некоммерческих сайтов, у платного есть возможность продажи и переноса другому регистратору. Количество бесплатных доменов для одного пользователя не ограничено.
После добавления домена в панели управления выбираем ДНС от DotTK (Dot TK DNS Service)
Создаем запись типа А domen.tk со своим ip-адресом, на данный момент:
Свой ip адрес можно посмотреть в интернете, например тут http://pilo.tk/ip .
После сохранения настроек ДНС – необходимо убедиться что соответствие работает
|
Процедура обновления зоны может занять продолжительное время – до нескольких дней. В моем случае на нескольких доменах это заняло пять минут. В любом случае, не закончив этот шаг не следует приступать к следующему.
Если все в порядке необходимо убедиться, что наш веб-сервер отвечает. Для этого на веб-сервер загружаем любой контент (достаточно одного файла index.html) и заходим через адресную строку по адресу http://domen.tk если наш контент отображается, значит настройка ДНС от DotTk успешна и наш провайдер не блокирует 80 порт – это важно, т.к. без этого будет сложно доказать свои права на домен.
3. Регистрация на Яндексе
Процедуру регистрации на Яндексе не рассматриваем. Можно воспользоваться существующей записью от Яндекс почты.
Авторизуемся на Яндексе и переходим по адресу https://pdd.yandex.ru. Выбираем пункт «подключить домен», тип почты (корпоративная, личная) неважен – вводим наш домен @domen.tk и нажимаем подключить.
Далее нам необходимо подтвердить владение доменом. Это можно сделать тремя способами:
с помощью файла .html
с помощью CNAME записи
с помощью информации о почте владельца из базы WHOIS
Самый простой и надежный способ это первый. Второй способ может быть недоступен у одного из регистраторов. А третий способ может не сработать по причине непостоянства формата базы Whois. К тому же два последних способа требуют времени на обновление данных до нескольких дней.
Создаем на нашем веб-сервере в корне предложенный Яндексом файл .html и записываем в него информацию. После сохранения файла Яндекс автоматически по определенному таймайту (у меня моментально у кого-то несколько часов) проверит веб-сайт с нашим доменом на наличие файла – тем самым подтвердится право на обладание доменом. Не обращаем внимание на то, что Яндекс ругается на mx – запись:
4. Делегирование ДНС серверов
Переходим на сайт регистратора dot.tk для делегирования.
Входим в личный кабинет и в настройках домена (Domain panel) выбираем наш ДНС (Custom DNS). Вводим следующие записи, можно без ip-адресов:
|
Сохраняем и ждем, процесс делегирования может занять несколько дней, опять же в моем случае это заняло пять минут. О том, что делегирование успешное мы узнаем в кабинете Яндекса в разделе мои домены:
5. Получение токена
Если наш ip-адрес сменится можно поменять записи ДНС через личный кабинет, что не удобно делать каждый раз. Можно автоматизировать процесс с помощью API DNS -специальных команд передающихся поверх протокола http, т.е. с помощью большого количества приложений, включая адресную строку браузера, можно поменять любое значение без редактора ДНС в личном кабинете Яндекса. Список этих команд можно посмотреть тут.
Для того, чтобы записи ДНС были защищены применяется специальный пароль называемый токеном (token). Прежде чем приступить к выполнению команд необходимо сгенерировать этот самый токен. Авторизуемся на Яндексе и в адресной строке вводим адрес (команду):
|
где domen.tk – ваш домен
После ввода капчи и нажатия кнопки Get token (получить токен) имеем:
”
где token=34r04udcluf0948tf
” – и есть наш токен.
Если данная информация не отображается, необходимо посмотреть исходный код страницы.
Сохраняем наш токен. Токен нужно получить один раз для одного домена, при желании токен можно всегда поменять процедурой описанной выше.
Опробуем наш токен – введем в адресную строку браузера:
|
из данного кода убираем пробелы и символы новой строки
Получаем:
|
В полученной информации ищем записи типа А для domen.tk и www.domen.tk нам нужны их id – это 11749043 и 11749044. У каждого домена и у каждого пользователя id будут другими.
У нас есть токен и у нас есть 2 id – этого достаточно чтобы c помощью команды DNS API edit_a_record заменять ip для нашего домена.
Можно попробовать поменять наш ip 8.8.8.8 на 9.9.9.9.
Вставим в адресную строку браузера:
|
из данного кода убираем пробелы и символы новой строки
где,
token – наш секретный токен
domain – наш домен
record_id – id
content – наша переменная – ip адрес
На выходе получаем страницу:
|
если <error>ok</error> - значит команда выполнена успешно. Проверяем результат в кабинете Яндекса и убедившись в том, что запись изменена, возвращаем старый адрес.
Для полноценной работы необходимо менять две записи и для www.domen.tk тоже, но добавив еще константу subdomain=www:
|
из данного кода убираем пробелы и символы новой строки
Данный процесс можно автоматизировать написав скрипт и поместив его в cron либо создав демона.
Но, для начала нужно узнать свой ip-адрес.
6. Узнаем свой адрес
Наш сервер может быть подключен к интернету напрямую, либо через роутер в зависимости от этого и выбираем способ получения информации о своем ip-адресе:
с помощью ifconfig
с помощью SNMP
и с помощью сайтов-информаторов
Самый легкий способ это периодический заход на сайты
“информаторы
” типа:
http://pilo.tk/ip
http://dns-ip.ru/home/simple
http://www.showmyip.com/simple
Почему эти сайты, а не популярные 2ip.ru или internet.yandex.ru? Открыв предложенные мной сайты вы поймете, что на них содержится только ваш ip, т.е. при написании скрипта вам не нужно очищать ненужную информацию и как следствие, каждый раз у нас будет уходить меньше трафика при обновлении информации. Данный способ подойдет для всех и кто подключен через роутер и напрямую. Но, есть и свои минусы, данный способ перестает работать если наш сайт «информатор» не работает, либо нет доступа к определенным сегментам сети интернет, либо некорректно работает ДНС сервер провайдера.
Команда в консоли покажет ваш адрес:
|
Способ с ifconfig самый правильный, достоверный и надежный, но он не работает если мы за роутером (NAT).
|
Сетевой интерфейс eth0 – меняем на свой.
И компромиссный, но самый сложный в плане настройки вариант логирование по SNMP с нашего роутера. С одной стороны данный метод обладает большей надежностью по сравнению с сайтами-информаторами, а с другой ему не страшен NAT. Есть и недостатки не все роутеры поддерживают SNMP и почти у всех отличается формат вывода, к тому же данный способ потребует от пользователя дополнительной настройки роутера и серверной системы.
Большинство роутеров в своих настройка позволяют вести журнал событий (логирование) во внутреннею память самого устройства и на внешний источник (сервер) по протоколу SNMP. Логирование по SNMP нужно включить в настройках роутера, указав внутренний адрес сервера и уровень логирования (рекомендую ставить максимальный уровень). На сервере FreeBSD в /etc/rc.conf добавить:
|
В /etc/syslog.conf добавить внутренний адрес роутера, а под ним указать файл куда сохранять логи:
|
И перезапустить систему логирования. Подробнее можно почитать тут.
Из-за разных форматов логирования нет единого стандарта команды для обработки информации из логов. Пример команды для получения своего адреса у роутеров DLINK:
|
7. Пишем скрипт
Для успешной работы скрипта необходимо наличие программы curl:
|
Далее сам скрипт:
|
|
Не забываем сделать скрипт исполняемым:
|
Скрипт делится на две части: переменные и программа. Переменные задаются пользователем. Окружение предназначено для FreeBSD, пользователи Linux легко могут адаптировать скрипт под свою систему.
В скрипте по умолчанию активирован (раскомментирован) способ определения ip-адреса с помощью сайта-информатора, другие способы активируются также раскомментированием нужного, и закомментированием ненужного параметра.
Скрипт помещенный в автозагрузку запускается при старте системы проверяя адрес на соответствие, в случае смены динамического адреса, приводит в порядок записи на ДНС сервере Яндекса, также помещает информацию в журнал /var/log/ip.log: дату и время изменения, новый ip-адрес, домен и статус выполнения, в случае успеха это «ок», в случае ошибки ее код, типа «bad token» (неверный токен) и т.д.
Скрипт обновляется через промежуток времени заданный переменной TIME. После while : двоеточие обязательно, т.к. это бесконечный цикл.
Данный скрипт легко модифицировать для обновления нескольких доменов. После получения новых токенов и id записей нужно создать новые переменные типа DOMEN1, DOMEN2….DOMEN1_TOK, DOMEN2_TOK … и соответствующие команды API . Необходимо соблюдать правила для переменных в шелле: запрещено начинать переменную с цифры (1DOMEN) и внутри переменной запрещены точки (DOMEN.TK). Есть еще правила, о которых лучше почитать в специализированной литературе.
Заключение
Данная статья является редакцией другой публикации, размещенной мной полтора года назад на форуме http://forum.lissyara.su/viewtopic.php?t=35711.
Желательно комментарии, вопросы и замечания оставлять по этой ссылке. Возможно, там найдутся ответы на большинство вопросов.
При написании данной редакции постарался учесть вопросы с форума. Было замечание, что при данном способе обновления динамического ip адрес, по неведомым причинам, перестал меняться – подтверждаю за полтора года у меня все тот же адрес – такой вот способ бесплатно получить статику.
В данной статье использовал как пример domen.tk, никакого отношения к нему не имею, по каким-то причинам доступ к нему ограничен Ростелекомом.
Ip адрес 8.8.8.8 тоже ко мне никакого отношения не имеет – это многими известный ДНС сервер от Гугла – часто им пользуюсь для проверки доменных имен, т.к. легко запомнить.
Пару слов про сам Яндекс - не являюсь сотрудником или поклонником данной компании, но факты вещь упрямая: за все это время служба ДНС работала без сбоев. Поменялся немного интерфейс в личном кабинете, поменялось пару ссылок внутри кабинета, но инструкции API остались прежними, в отличие от службы WHOIS, которая регулярно меняет формат своих данных. Есть еще бесплатная функция от Яндекса, которая будет полезна владельцу веб-сервера - это Яндекс.Метрика, позволяющая не только смотреть детальную статистику своего сайта (вплоть до движения мышки посетителя – вебвизор), но и бесплатно отправлять СМС на мобильный телефон в случае сбоев на веб-сервере – проверено работает оперативно.
Для кого была написана данная статья? Данная статья возможно содержит излишние подробности, кому-то может показаться скучной и давно пройденным материалом. Но, на просторах интернета не встречал аналогов. Была в одной статье попытка связать noip.com и ДНС Яндекса как многоуровневую систему, без использования API, и как результат баги и неполный функционал. Встречал много статей про привязку к Яндексу статики и ни слова про динамику. В силу уникальности материал будет полезен не только студентам и школьникам, но и всем кто хочет организовать домашний хостинг. Статья не является переводом зарубежного материала, не является пересказом, а является полностью моим трудом – поэтому желательно при копировании и размещении на своих ресурсах делать ссылочку на оригинал.
Что хотел получить от публикации? Web API является активно развивающимся направлением почти у всех социальных сетей и порталов таких как Яндекс, Google, Facebook, Mail.ru и многих других. Если кто-то заметил, что с помощью Web API той или иной системы можно получить доступ к бесплатным либо интересным сервисам, то жду ваши мысли и идеи.
размещено: 2013-07-27,
последнее обновление: 2013-11-10,
автор: allseen
xmaster83, 2013-08-01 в 19:11:38
Спасибо тебе, очень актуально для меня
Roman, 2013-08-09 в 13:37:33
Спасибо, идеальная статья. Ясная, понятная, логичная. В стиле ранних статей Лиссяры про Екзим например. Спасибо большое, читая такое и самому хочется написать :)
Анатолий, 2013-11-08 в 14:44:07
Спасибо за статью!
Полагаю, вместо
NSIP=`host 1cru.ru dns1.yandex.ru | grep has | awk '{print $4}' 2>>$LOG`
будет
NSIP=`host domen.tk dns1.yandex.ru | grep has | awk '{print $4}' 2>>$LOG`
allseen, 2013-11-10 в 0:15:00
2 Анатолий. Спасибо - исправил.
maloy, 2013-12-05 в 15:01:09
пользуюсь этим интсрументом http://dns-ip.ru/Home/DynDns
MuxauJI, 2015-01-18 в 13:09:09
Домен pilo.tk отвалился. Начал гуглить как получить свой айпи, наткнулся на самый удобный способ тем же курлом
curl ifconfig.co
В ответ строка с адресом. Спасибо за скрипт, пришлось адаптировать под себя.
Artem, 2015-02-06 в 12:00:10
При маршрутизации устройству предоставляется адрес:
постоянный (динамический)
временный (статический)
Местами поменяй.
Временный - динамический
Постоянный - статический
DmitryR, 2015-02-21 в 14:16:38
Спасибо за статью. Очень пригодилась.
Хотя, для субдоменом www, проще сделать запись в DNS Яндекса вида:
www CNAME domen.tk.
А не обновлять ip дополнительным запросом в скрипте )
Sebor, 2017-04-16 в 15:27:03
Я для себя немного упростил скприт - закинул в крон, т.к. у меня адрес если и меняется, то только после переподключения роутера.
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [9 шт.]