войти зарегистрироваться

BSDельники whois

индекс
106,19

Мастер-класс управления FreeBSD: Делаем домашний сервер с собственным именем в Internet'е

или Использование сервисов DynDNS.com во FreeBSD



Провайдер по соглашению с пользователем, как правило, для работы в Интернете выдаёт тому временный IP-адрес (так называемый «динамический IP»), который периодически меняется — чаще при перезагрузке ADSL-модема или же при регистрации компьютера пользователя в сети провайдера.

Другие пользователи получают доступ к любому серверу в Интернете, вводя в строке адреса Web-браузера (или другого сетевого клиента) имя сервера, а не его реальный IP-адрес — резолвинг, то есть соотнесение имени сервера с IP-адресом — разрешение имён, необходимым для сетевого «общения» программ — обеспечивается системой DNS, работающей на независимых серверах в Интернете.

Так как имя сервера должно разрешаться браузерами клиентов в реальный IP-адрес, необходимо установить жёсткую связь между именем сервера и его IP-адресом. Услуга по регистрации выделенного IP-адреса (да-да, и за выделенный, т.н. «статический IP», тоже взимается плата — но это другой случай) во всемирной системе DNS предоставляется на платной основе, что ограничивает число публичных Web- и FTP-серверов платёжеспособными клиентами. Однако сервисы, подобные DynDNS, понижают планку выхода на просторы Web-хостинга для обычных пользователей Интернета! Пользователи могут бесплатно использовать для своих страничек, расположенные на их собственных компьютерах, доменные имена третьего уровня.

Устанавливается все просто



  1. На ADSL-модеме выводим наш компьютер в демилитаризованную зону — то есть вводим IP-адрес сетевой карты в настройках ADSL-модема в поле ввода на страничке DMZ и открываем доступ к компьютеру извне.
  2. Идём на сайт www.dyndns.com и регистрируем на нём учётную запись.
    После подтверждения регистрации вводим имя и пароль для входа в пользовательский аккаунт. Идём на страничку настройки: My Services → Host Services → Add Hostname

    На страничке «Add New Hostname» вводим имя сервера (в поле Hostname);
    выбираем домен из списка доступных;
    вводим IP-адрес (в поле IP Address для начала можно использовать автоопределённый IP).

    Подтверждаем создание хоста нажатием кнопки «Create Host».
  3. Жёсткая связь между именем сервера (хостом) и IP-адресом во FreeBSD может поддерживаться посредством демона ddclient.

    При загрузке компьютера этот демон определяет назначенный провайдером IP-адрес пользователя и отсылает на сервер DynDNS информацию о новом IP-адресе, используя регистрационные данные пользователя сервиса. Сервер DynDNS присваивает этот IP-адрес ранее зарегистрированному хосту и вносит данные во всемирную систему DNS. Демон периодически отсылает данные на сервер DynDNS, если IP-адрес хоста пользователя изменяется.

    Клиент ddclient устанавливается из порта:
    % cd /usr/ports/dns/ddclient
    % make install clean


    Копируем и правим файл конфигурации демона:
    % cp /usr/local/etc/ddclient.conf.sample /usr/local/etc/ddclient.conf
    % chmod 600 /usr/local/etc/ddclient.conf
    % ee /usr/local/etc/ddclient.conf


    Содержимое конфиг-файла:
    # метод определения IP-адреса, назначенного провайдером пользователю
    use=web, web=checkip.dyndns.com/, web-skip='IP Address'
    # логин и пароль к dyndns
    login=izen
    password=vеrytорseсret
    server=members.dyndns.org, \
    protocol=dyndns2 \
    izenfire.dyndns.info
    daemon=300 # проверять обновление IP-адреса каждые 300 секунд
    syslog=yes # использовать syslog для журналирования деятельности
    #-mail=root # можно включить отправку административных сообщений для root'а
    #-mail-failure=root # можно включить отправку административных сообщений для root'а об ошибках
    pid=/var/run/ddclient.pid # record PID in file.
    ssl=yes # использовать ssl — работать через библиотеку ssl


    Обеспечиваем автозапуск демона при старте системы:
    % echo 'ddclient_enable="YES"' >> /etc/rc.conf

    Запускаем ddclient в текущей сессии:
    % /usr/local/etc/rc.d/ddclient start
    Или запускаем ddclient как демона с интервалом проверки 10 минут:
    % ddclient -daemon 600 -syslog

    Контролировать работу демона можно так:
    % cat /var/log/messages | grep ddclient
  4. Установка и настройка публичного Web-сервера на примере Apache Tomcat объясняется в этой статье: Apache Tomcat 6.0 во FreeBSD 7.0.


P.S.
Замеченые неисправности
Иногда после продолжительной работы или смены IP-адреса на модеме ddclient перестает обновлять IP-адрес, привязанный к доменному имени. В системный журнал /var/log/messages при этом пишутся сообщения примерно такого содержания: «Dec 4 01:01:55 comp ddclient[12910]: WARNING: cannot connect to checkip.dyndns.org:80 socket: IO::Socket::INET: Bad hostname 'checkip.dyndns.org'». Однако сервер checkip.dyndns.org по порту 80 доступен и должно быть всё в порядке. Такое поведение ddclient лечится только его рестартом:
% /usr/local/etc/rc.d/ddclient stop
% /usr/local/etc/rc.d/ddclient start

комментарии (42)

  • молодэц ;-)

    ЗЫ: но хостинг стоит таких копеек…
    • Не обязательно использывать DynDNS для хостинга сайта, я использовал когда-то чтобы с работы с помощью RAdmin подключаться к домашней тачке.
      Можно использовать чтобы захостить игровой сервер и т.д. применений множество.
      • Копеечный хостинг — копеечные возможности. VPS с достаточным количеством оперативки, чтобы работал JDK, уже стоит около $80/месяц (по крайней мере, столько он стоил в 2006, когда мне потребовалось настроить сервер для удаленной компиляции). Через год такого хостинга вполне дозрела до того, чтобы настроить веб-сервер на домашнем компе.
  • Все конечно хорошо и заманчиво. Но Вы знаете какая скорость репликации баз неймсерверов? Обычно до двух дней доходит в некоторые сегменты сети измененная информация. Боюсь айпишник будет чаще меняться.
    • ИМХО, скорость репликации правильно настроенных DNS зависит от записи SOA и таймаутов в ней прописанных…
    • У меня быстро всё реплицируется. Менял свой внешний IP раз в двадцать минут — всё очень быстро восстанавливалось.
    • В службе DynDNS значение TTL по-умолчанию — 1 минута. Больше чем на минуту DNS-сервера не имеют права кешировать эту запись.
    • Обновление информации dyndns происходит обычно, каждые пять минут.

      Неймсервер настроен на сервер dyndns, и потом уже идёт перенаправление. Так что всё работает очень даже шустро.
  • no-ip.com тоже еще есть.
    • Тоже есть порт клиентского демона.

      /usr/ports/dns/noip/pkg-descr:
      «This is a port of No-IP.com's dynamic DNS update client. When
      configured correctly, the client will check the local IP address at a
      given time interval for any changes. If the local IP address has
      changed it will notify the DNS servers at No-IP.com and update the IP
      corresponding to your No-IP/No-IP+ hostname.

      WWW: www.No-IP.com/

      — Eyal Soha
      esoha@attbi.com»
  • Таки мастер-класс?
  • Когда то использовал DynDNS.com, обновлял IP с помощью программы inadyn. Есть версии для разных ОС, вначале использовал по Windows XP, потом под Linux, есть порт и для FreeBSD и версия для Mac OS
    www.dyndns.com/support/kb/using_inadyn_with_dyndns_services.html#system
  • В очень многих роутерах за 20 баксов есть фича DynDNS — ставишь такой на выход из твоей домашней сети и прописываешь логин/пароль — все.
    • FreeBSD и есть такой роутер. ;) Правда, по совместительству дома работает мультимедиа-компьютером.
      • Ну ниняй… за 20 баксов мультимедийный комп 8/
        • Не за двадцать, а за пятьсот. Вполне современный комп с Athlon X2 5400+/2Gb RAM/HDD 320Gb/интегрированной видеокартой GeForce 6150/гигабитная сетевушка.

          Говорю же: работает по совместительству. Хотя может маршрутизировать с гигабитными сетевушками очень большой трафик.
          • А HD видео смотреть умеет?
            • По ТТХ должон. CSS ведь в Wine идёт без тормозов в окне 800x600.
    • кстати, мой di-524 поддерживает и dyndns.org, и no-ip.com, а еще и парочку незнакомых мне tzo.com и dhs.org
  • Ой, а я как раз на днях велосипед изобретал. Сделал скрипт на пайтоне по этой вот спецификации. Хотя не совсем следует, из «дополнительного» только кеширование IP, чтоб не абузить с nochg, а ошибки не обрабатывает, но все же :)
    • Я тоже собирался на днях изобрести. Хорошо что лениво было. А сейчас вот статья попалась и за 10 минут все настроил. Спасибо ТС!
  • Жутко смутило…
    На ADSL-модеме выводим наш компьютер в демилитаризованную зону — то есть вводим IP-адрес сетевой карты в настройках ADSL-модема в поле ввода на страничке DMZ и открываем доступ к компьютеру извне.

    На мой взгляд «попав» в Интернет, «открыв доступ к компьютеру извне», наоборот попадаешь в милитаризованную зону.
    • Да нет, тут все правильно. Милитаризованная зона — закрытая от вторжений извне. Демилитаризованная — где нет границ и охраны. :)

      Только вот открывать все подряд, ИМХО, — не лучший подход. Вполне достаточно пробросить отдельные сервисы. Например, http, ftp и ssh. Большинство других сервисов, если нужно, можно туннелировать через тот же ssh.
  • А у меня уже столько лет простой скрипт на машине, как только меняется ip посылает мне мейл с этим ip, елси надо кому, что показать, то просто захожу в почту, беру ip и работаю с ним :) Дешево и сердито.
    Иногда легче заказчику показывать именно так, чем каждый раз заливать на сервак, тем более когда проект в стадии очень динамичных изменений.
  • мда тогда мой корч (в ласковом наименовании кузя, тип домовой) стоящий на балконе, в стратегические задачи которого, входит ночная закачка торрентов это годмод-класс? кузя может похвастаться: mldonkey как самый удобный клиент p2p сетей с wap/web-фейсом, c ddclient'ом чтобы можно было найти кузю и рулить закачками не из дома по телефону, с mpd5 качестве звонилки к провайдеру, а также в качестве впн сервера для домашних компов, с вифи карточкой настроенный в режиме точки чтобы можно было коннектится с кузе с ноутбука, дхсп-сервером и кучкой правил для фаера в обязанности которого входит охрана это добра, шейпер трафика и нат домашней локалки. У вас есть еще 5 тем для хабра)

    имхо не вижу разницы с этим топиком

    для мастер-класса слабовато
    • ссылка на аналогичный топик съедена, а до съедения выглядела так litos.habrahabr.ru/blog/42654/
      • Ух ты, почти один-в-один! Здесь, как нельзя кстати, пригодилась бы Wiki-публикация, чтобы не писать одно и то же разными словами, а дополнять материал по мере увеличения числа используемых функций.
      • А ещё к этому хозяйству можно подключить 24" монитор, поставить спутниковую карту, 1Тб хдд и установить MythTV. После чего получим ещё и мультимедийный центр + IP-телефония.
        Вот только с балкона его прийдётся перенести в комнату.
    • Ну человек вшутку про мастер-класс сказал ;) Мне например статья очень пригодилась, т.к. хотел городить такой велосипед самостоятельно :)
      • семь раз гугли, один раз изобретай велосипед
  • НЛО прилетело и опубликовало эту надпись здесь.
  • Не домашний это вовсе — ну как же он может быть домашним, если при развертывании используется командная строка. Думаю кто с Unix работает тому данный мануал ни к чему, он и раньше это знал, а вот если бы описали как установить и настроить какой нибудь не требовательный к ресурсам web-server… Например аналог JumpBox только с простейшим GUI, и возможностью устанавливать несколько приложений, вот тогда это было бы очень и очень интересно… Эх, скачал бы такой сервер и установил через vmware, устанавливать сайты для опытов гораздо проще бы стало и главное не зависело от системы.

    Успехов!
  • Клёво!!! Я под винду настроил!!! С трассировкой на виртуальную машину!!!
  • Хочу добавить, что практически каждый ADSL модем имеет встроенный dyndns клиент.
    Когда я городил домашний мини сервер, я хотел было навернуть на него все. И ddns клиент, и шейпер, и самбу, и еще тучу всего. Но позже пришел к выводу, что модем как фаервол, шейпер, ppoe клиент меня устраивает. Тем более, что при отключении скажем электричества, тот сервер долго на UPS не протянет, а модем в купе с точкой доступа и ноутом вполне. Поэтому решено было функции разделить. А тот самый сервачек живет у меня в качестве домашнего файл сервера и хоста для виртуальных машин.
    Правда динамический dns мне сейчас не требуется, так как имею статический IP.
  • А я вот вам спасибо скажу. У меня раньше никак руки не доходили это дело развернуть.
    И еще вопрос, где выгоднее брать привязку с нормальным доменным именем (в dynDns это стоит порядка $30)?
  • Есть ещё служба freedns.afraid.org.
    Там много доменов с интересными именами.
    Один из путей обновления данных — не демоном, а специальным url-ом, который даётся при регистрации. Этот url можно дёргать с помощью fetch cron-ом.
    Может быть, не совсем безопасно, но зачастую ведь бывает как в истории про неуловимого Джо.
  • еще хотел заметить что все конечно замечательно когда один интерфейс который связан с провайдером, но иногда требуется указать ип какого интерфейса нужно отсылать днсу, чтобы он потом делился этим ип со всеми
    в кузе (откуда он взялся см выше по топику) 2 100мбс сетевых xl0 и dc0, вифи карточка ral0 и пппое соединение с провайдером ng0(созданное мпдой), ип какого слать?
    по умолчанию в документации отсылается ип ppp0, у меня такого не имеется поэтому нужно добавить

    use=if, if=ng0
    • По умолчанию:
      use=web # via web
      То есть IP-адрес, с которого пришёл запрос на обновление, и будет считаться «входящим» для хоста.

      А так — ещё один слой гибкости.
    • Если IP-адрес сетевой карты принадженит «частным» адресам немаршрутизированной сети, например: 10.10.10.1, то отсылать его на сервер не имеет смысла по понятным причинам. Те, кто пользуется ADSL-модемами имеют на сетевых картах (интерфейсах машин) именно такие адреса, и такого типа: 192.168.x.x.
      • адсл модемы ставлю в бридж «пппоешусь» с самой машины, а не с модема отпадает настройка ерунды типа редиректа портов, появляется пару строчек касательно ната если за машиной еще есть домашний десктоп или нотик
  • у меня с этим adsl можем справляется. позавчера кстати только сервак поставил для теста в офисе таким способом.
  • эм, для no-ip по моему проще:

    cd /usr/ports/dns/noip
    make install clean
    rehash
    noip2 -C
    > вводим свои данные <

    добавляем в "автозагрузку":
    echo 'noip_enable="YES"' >> /etc/rc.conf

    запускаем:
    /usr/local/etc/rc.d/noip start
    или просто:
    noip2

    вроде ничего не забыл
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.