Debian.pro

Блог для пользователей и администраторов Debian


Большой мануал: часть 5. hostname, файл hosts, ptr и вот это вот всё.

Эта статья — часть Большого Мануала по настройке lamp-сервера на debian.

Предыдущая статья цикла — Настраиваем openssh-server.

Следующая статья цикла — Настраиваем locales и клавиатуру для ipmi/vnc-консолей

Сегодня мы поговорим про одну из самых важных вещей при настройке сервера. Был такой анекдот (дословно не помню):
- чего так сильно задумался?
- да hostname серверу выбираю.
- ну ты прям как имя ребенку выбираешь, час уже сидишь.
- ну ты чо. Ребенку можно имя сменить потом, а вот hostname у сервера хрен сменишь.

И действительно — оооочень много геморроя в моей жизни (а особенно в районе почты) было связано с тем, что предыдущие админы/владельцы сервера/рандомные фрилансеры не понимали важности fqdn. Для чего оно вообще нужно? Сервер при обращении к другим серверам будет «представляться» и называть своё «имя». Это имя должно быть корректным (и у нас должны быть документы, бгыгы, чтобы полиция не арестовала). Шутки шутками, но hostname очень важен во «взаимоотношениях» почтовых серверов — если вы пропустите эту статью, то письма с сервера будут улетать в спам почти на всех почтарях.
Много софта тоже завязан на fqdn и будет работать не совсем корректно, если ваш сервер отвечает херню в ответ на команду hostname -f.

Что такое fqdn в принципе? Это доменное имя (да, обычное доменное имя, вроде www.debian.pro). Можно почитать википедию. Я вам лучше покажу на пальцах на примере корректно настроенного сервера, так будет понятнее.

Возьмём для примера корректно настроенный сервер.
Заходим на него по ssh и проверяем hostname:

root@server:~# hostname -f
messer.qs.biz

В ответ на эту команду мы должны получить именно fqdn сервера, а не короткое имя (не messer, например).

Далее узнаем «дефолтный» IP сервера (если у вас всего один IP на сервере — то можете просто скопировать его из письма).
Вообще нужно иметь в виду, что все исходящие коннекты с сервера (если вы не настраивали маршрутизацию локально) будут проходить с одного IP-адреса, вопреки всяческой мифологии.
Собственно, быстрее всего узнать исходящий IP сервера примерно так:

root@server:~# curl ifconfig.me
46.4.251.93

Или так:

root@server:~# curl ip.vlad.pro
46.4.251.93

Запоминаем — с этого адреса (если вы не предпринимали ничего для того, что было по другому) сервер будет открывать все исходящие коннекты — например, обращаться к другим сайтам курлом из php-кода (даже в том случае, если ваш сайт «смотрит» А-записью во второй-третий-десятый IP сервера).

Теперь проверим, что у этого IP есть PTR-запись:

root@server:~# host 46.4.251.93
93.251.4.46.in-addr.arpa domain name pointer messer.qs.biz.

И напоследок проверим, что мы не совсем сошли с ума и прописали прямую запись для нашего хоста в правильный IP:

root@server:~# host messer.qs.biz.
messer.qs.biz has address 46.4.251.93

Вообще всё это было присказка. Теперь начинается сама 5-я часть мануала.
Нам нужно сделать, чтобы в итоге все команды выше отдавали в ответ правильные данные.

Первым делом выберите fqdn для сервера. Обычно fqdn — это домен третьего уровня, на котором «не будет сайта». Проще говоря, www.qs.biz — хреновый fqdn в перспективе (потому что www.qs.biz домен когда-нибудь захочет переехать на другой сервер), а вот messer.qs.biz — неплохое имя, вряд ли я когда-нибудь решу поднять там сайт.
Так же не очень хорошая идея делать fqdn второго уровня по той же причине (хотя если вам не лень регистрировать домен второго уровня только ради этого и вы точно не собираетесь на него вешать сайт — то милости просим).

Когда выбрали fqdn, прописываем прямую А-запись (и AAAA-запись, если есть ipv6) на IP сервера. Здесь я не возьмусь описывать, как именно прописать — регистраторов миллион, панелей управления DNS ещё больше. Если ваш домен делегирован на NS-ы регистратора, то можете подглядеть в инструкции Яндекс.ПДД — http://help.yandex.ru/pdd/add-domain/hoster-settings.xml , там для некоторых регистраторов есть инструкция с картинками.

Через пару часов после того, как вы прописали прямую запись (или сколько у вас там TTL), можно прописывать PTR-запись (или по-другому — обратную запись). Как это сделать, опять же, нужно уточнить в саппорте своего хостера. Могу только отметить, что у PTR-записи на конце должна быть точка, если будете прописывать сами в веб-морде.

Ну и после всего этого остаётся настроить hostname сервера. Для этого нужно поправить 2 файла.
/etc/hostname:

messer.qs.biz

То есть пишем fqdn без точки на конце.

В файл /etc/hosts нужно добавить такую строку:

46.4.251.93 messer.qs.biz messer

Обратите внимание на порядок столбцов в строке — сначала ip, потом fqdn целиком, потом короткое имя хоста (до первой точки).

И в конце нужно запустить команду:

root@server:~# /etc/init.d/hostname start

Для убунты 14.04 и дебиана 8-го (и новее):

root@server:~# service hostname start

На этом всё. Остаётся только дождаться, когда PTR и A записи созданные ранее разъедутся по всем резолверам (обычно — TTL*2) и можно начинать использовать сервер.

28.06.2015 byinkvizitor68sl|big-manual

Комментарии (24):

  1. FiX :

    Таки какой хостнейм выбирать, еслм собираешься на нем поднять сайт? А если несколько?

  2. FiX :

    На самом деле, сильно не хватает описания как /etc/hosts ломает hostname/hostname -f и пр.

  3. > Таки какой хостнейм выбирать, еслм собираешься на нем поднять сайт?
    Любой домен, на котором не будет сайта крутиться.

    > А если несколько?
    hostname один, условие предложением выше не нарушается и в этом случае.

    > На самом деле, сильно не хватает описания как /etc/hosts ломает hostname/hostname -f и пр.
    Например?
    Или вы имеете в виду, что люди додумкаются перечислить 2 строки в hosts с hostname? Или 2 строки с ip-адресом?
    Я все такие случаи описывать не возьмусь. Люди много могут херни придумать, я столько не придумаю =)

  4. FiX :

    Я про то, что
    ip debian.pro debian
    Не то же самое, что
    ip debian debian.pro

  5. FiX :

    Вообще, в hosts много костылей бывает вроде 127.0.1.1, ipv6-localhost и пр. Каждый что-то одно чинит, а что-то другое ломает.

  6. > Вообще, в hosts много костылей бывает вроде 127.0.1.1, ipv6-localhost и пр. Каждый что-то одно чинит, а что-то другое ломает.
    Эти строки на hostname не влияют.

    А пояснение написал, спасибо.

  7. FiX :

    Просто прочитав в заголовке «hostname, файл hosts, ptr и вот это вот всё» я ожидал немного другого нежели разбора очевидных вещей.

  8. > я ожидал немного другого нежели разбора очевидных вещей.
    Ох нет, это далеко не очевидные вещи подавляющему большинству людей. Честно говоря, вне яндекса я не встречал НИ ОДНОГО сервера, на котором ptr+hostname были бы корректно настроены. Достаточно просто посканить большую сетку (что-то вроде /20) и вы поймете, что я не шучу.

  9. Балда, это не анекдот;) https://xkcd.com/910/

  10. Ну и у меня в конторе всё это дело правильно настроено, кому надо — те заморачиваются. Хочешь, тукни в джаббер, дам примеры хостов, полюбуешься.

  11. > Ну и у меня в конторе всё это дело правильно настроено, кому надо — те заморачиваются
    У меня в «конторе» тоже все до единого хоста правильно настроены.

    Но мануал-то не для контор (и даже не для опытных админов, думаю, разве что для новичков, которые, настраивая лампу, всё ещё не понимают, что именно настраивают и зачем). А у «виртуалок за десять баксов» с хостнеймами всё плохо.

  12. Михаил :

    а для сервера сайтов и почты , с условияем что вебмейл на поддомене mail.mydomen.ru , можно поставить mail.mydomen.ru

  13. Влад :

    Спорная идея. Если потом захочется выносить почту к внешнему провайдеру — он, скорее всего, попросит домен mail.domain в себя (для той же вебморды) направить.

  14. Антон :

    Огромное спасибо! Ну наконец-то с этим все ясно, я всегда домен второго уровня прописывал, но все равно были проблемы после каждого переезда.
    p.s. у меня вот так на debian

    sudo /etc/init.d/hostname.sh start

  15. an :

    Поясните, пожалуйста.

    > Проще говоря, http://www.qs.biz — хреновый fqdn в перспективе (потому что http://www.qs.biz домен когда-нибудь захочет переехать на другой сервер), а вот messer.qs.biz — неплохое имя, вряд ли я когда-нибудь решу поднять там сайт.

    Вот я взял VPS для проекта. Купил домен supermydomain.com. Виртуалке я назначаю адрес supermydomain.com ? Или лучше frodo.supermydomain.com ? А вебсайт лучше делать http://www.supermydomain.com? Мне казалось, сейчас все отказываются от www. Спасибо.

  16. > Мне казалось, сейчас все отказываются от www.
    Отказываться-то они отказываются, но никто не забывает делать редирект с http://www.domain на domain, чтобы не терять упоротых людей, которые руками пишут www

    Так что лучше hostname делать frodo, сайт вешать на domain, делать редирект с www (или вешать на www, а с domain делать редирект — дело вкуса).

  17. Visteras :

    Хм… а имеет ли смысл использовать домен 4 уровня конкретно для серверов?
    Т.е. не server.example.org а main.s.example.org ?

  18. inkvizitor68sl :

    > а имеет ли смысл использовать домен 4 уровня конкретно для серверов?
    Без разницы.

  19. MoonHowl :

    А http://www.qs.biz прописывать в качестве hostname — это нормально? (хостер так по дефолту настроил).

  20. Нет, не очень.
    «Проще говоря, http://www.qs.biz — хреновый fqdn в перспективе (потому что http://www.qs.biz домен когда-нибудь захочет переехать на другой сервер), а вот messer.qs.biz — неплохое имя, вряд ли я когда-нибудь решу поднять там сайт.»

  21. Slam :

    Здравствуйте,

    Подскажите, пожалуйста, есть виртуалка, уже рабочая. На ней крутиться вебсервер + почта.
    Начал колупаться в почте, чтобы настроить DKIM и дошел до того, что с hostname у меня черти что.

    hostname -f — http://www.site.ru
    hostname — http://www.site.ru
    hostname -d — site.ru

    Почту мне вообще настроили на http://www.site.ru, что, как понимаю, не совсем корректно. Виртуальный хост настроен на реддирект www > site.ru

    Почта вроде бы ходит, но на рамблер, к примеру, не попадает.

    Думаю, перенастроить почту на mail.site.ru. Попросил хостера добавить PTR для mail.site.ru и сижу, ломаю голову, как быть с изменениями hostname согласно правильности.
    Во первых, повлияет ли изменения этих параметров на работу сейчас?

    Как понимаю, hostname лучше отредактировать на master.site.ru, hosts также вроде бы понятно. mail.site.ru я уже потом просто в postfix вместо http://www.site.ru подставлю.

    Теоретически должно работать все, но может ткнете пальцем, что не так?

    Спасибо заранее :)

  22. > hostname -f — http://www.site.ru
    > hostname — http://www.site.ru
    > hostname -d — site.ru
    Ну так то оно верно, хоть и имя неудачное.
    Нужно смотреть, что в PTR.

    > Думаю, перенастроить почту на mail.site.ru. Попросил хостера добавить PTR для mail.site.ru и сижу, ломаю голову, как быть с изменениями hostname согласно правильности.
    Почту лучше настроить так, чтобы она уходила с домена @site.ru, от fqdn-а оно не сильно зависит.
    fqdn должен быть валидным, почту же можно отправлять не только с fqdn.

    > Попросил хостера добавить PTR для mail.site.
    PTR должен совпадать с fqdn.

    В общем, перечитывайте внимательно статью.

  23. garcol :

    То что пишет автор противоречит man hostname и тому как debian автоматически заполняет данные файлы.
    Если при установке дебиан задать host.local.ru, то в /etc/hostname будет написано: host. В /etc/hosts: 127.0.1.1 host.local.ru host. В мануале сказано что в файле hostname должно быть только имя.

    Или debian всё врёт?

  24. > В /etc/hosts: 127.0.1.1 host.local.ru host.
    И чем статья противоречит этому?

    > В мануале сказано что в файле hostname должно быть только имя.
    Не должно быть, а «рекомендуется». По большей части это актуально для хостов, которые «бывают в разных сетях с разным доменом» (чего у сервера со статическим адресом, конечно же, не будет).

    Ну и, собственно, цитата из man hostname про файл /etc/hostname:
    /etc/hostname Historically this file was supposed to only contain the hostname and not the full canonical FQDN. Nowadays most software is able to cope with a full FQDN here.

Написать комментарий