Назначение должно быть fqdn полным доменным именем. Последствия пропущенной точки. Изменение FQDN имени

В этой статье мы поясним принципы создания и управления FQDN именем сервера 3CX. Это поможет вам лучше спланировать инсталляцию системы и избежать многих проблем в будущем.


Как вы, возможно уже знаете, при первоначальной инсталляции 3CX v15 ваш лицензионный ключ привязывается к FQDN имени, выбранном администратором в мастере первоначальной конфигурации. Поэтому продумайте удобное FQDN имя еще до начала установки!

FQDN имя от компании 3CX

Начиная с 3CX v15, при условии, что у вас активна подписка на обновления , вы можете воспользоваться DNS сервером 3CX. DNS 3CX (фактически, это DNS инфраструктура Google) предоставляет следующие возможности:

  • Поддерживает публичное FQDN имя вашего сервера в одном из принадлежащих 3CX доменов верхнего уровня.
  • Реализует функцию Dynamic DNS, то есть, при смене публичного IP адреса сервера, изменение DNS записи происходит автоматически.

Кроме сервиса DNS, 3CX предоставляет бесплатные доверенные SSL сертификаты безопасности от организации Let’s Encrypt , которые используются для подключений клиентов к серверу, видеоконференции и других важных функций.


Как было сказано, выбранное имя сервера привязывается к лицензионному ключу. Если вы получили бесплатный ключ PBX Edition Key и хотите просто протестировать 3CX, не выбирайте ваше основное имя (например, имя вашей компании), а используйте тестовое. Например, test-company.3cx.ru , а не company.3cx.ru .


C другой стороны, домен верхнего уровня изменить можно. Т.е. вы можете “переехать” с FQDN company.3cx.eu на company.3cx.ru . Имя хоста должно быть уникально в выбранном домене. Поэтому, если имя company.3cx.ru уже занято, вам придется выбирать другое. Имена резервируются по принципу первой заявки, поэтому поспешите с переходом на 3CX v15, чтобы успеть получить красивое имя.


Внимание: 3CX оставляет за собой право отменить регистрацию любого FQDN имени, если оно нарушает патентные права или содержит оскорбительные слова. Также 3CX не может переназначить имя для вас, если оно уже зарегистрировано на другую компанию.

Ваше собственное FQDN имя

Если вы планируете использовать собственное имя сервера, например, хост в вашем корпоративном домене, заранее подготовьте доверенный SSL сертификат для этого имени. Вы укажете его в мастере первоначальной настройки системы. В этом случае 3CX не выдает и не поддерживает для вас сертификат Let’s Encrypt.


Затем ваш лицензионный ключ будет привязан к собственному FQDN имени. Однако, тут есть одна особенность, связанная с работой сервиса 3CX Webmeeting: если ваше FQDN имя имеет вид pbx.company.com , портал Webmeeting автоматически генерирует для вас URL pbxcompany.3cx.*. Убедитесь, что такое имя еще не занято другим пользователем!

Изменение FQDN имени

Чтобы изменить FQDN имя сервера, необходимо сперва убедиться, что новое выбранное имя свободно, а затем отвязать старое имя от вашего лицензионного ключа. Это делается через пользовательский портал https://erp.3cx.com .


Для коммерческих и бесплатных лицензий – зайдите в портал с вашими учетными данными и нажмите Release. Ключ будет отвязан от FQDN.



Для NFR лицензий – откройте заявку в техподдержке 3CX https://erp.3cx.com и укажите в ней ваш NFR ключ и текущее FQDN имя сервера.

Заключение

Повторим основные принципы использования FQDN имени в инсталляциях 3CX:

  1. Первоначальная настройка системы привязывает FQDN сервера к лицензионному ключу
  2. Если оказалось, что выбранное имя уже кем-то занято:
    • Появится ошибка Error creating FQDN: FQDN already in use. Please choose another one.
    • Выберите другое свободное FQDN имя
  3. Последующие инсталляции системы (переустановки) с данным лицензионным ключом требуют указания того же FQDN
  4. Если FQDN не соответствует ключу:
    • Появится ошибка Error creating FQDN: License key already bound to another FQDN.
    • Зайдите в портал erp.3cx.com и проверьте, какое FQDN соответствует вашему ключу, либо отвяжите FQDN от ключа, как показано выше.

Прежде всего, я искал сайт по аналогичной теме и читал RFC 1535 и FQDN wiki, они, похоже, не отвечали на вопрос.

Позвольте мне использовать www.youtube.com в качестве примера. Я использовал скрипт Python:

Import socket for host in ["www.youtube.com"]: print(host) try: hostname, aliases, addresses = socket.gethostbyname_ex(host) fqdn = socket.getfqdn(host) print(" Aliases: ", aliases) print(" Hostname: ", hostname) print(" FQDN: ", fqdn) print("Addresses: ", addresses) except socket.error as msg: print("%15s: ERROR: %s" % (host, msg))

Aliases: www.youtube.com Hostname: youtube-ui.l.google.com FQDN: sa-in-f93.1e100.net Addresses: ["74.125.200.93", "74.125.200.190", "74.125.200.136", "74.125.200.91"]

1) Какова связь между именем хоста и FQDN?

3 ответов

Независимо от семантики термина FQDN, мы должны увидеть, что делает Python socket.getfqdn() .

socket.getfqdn()

Верните полное доменное имя для имени. Если имя опущено или пустое, оно интерпретируется как локальный хост. Чтобы найти полное имя, проверяется имя хоста, возвращаемое gethostbyaddr() , за которым следуют псевдонимы для хоста, если они доступны. Выбирается первое имя, которое включает период. В случае отсутствия полного доменного имени возвращается имя хоста, возвращаемое gethostname() .

Socket.gethostbyaddr(ip_address)

Верните тройку (hostname, aliaslist, ipaddrlist) где имя хоста является основным именем хоста, отвечающим на заданный ip_address, aliaslist - это (возможно, пустой) список альтернативных имен хостов для одного и того же адреса, а ipaddrlist - список адресов IPv4/v6 для одного и того же интерфейса на одном и том же хосте (скорее всего, содержит только один адрес).

Другими словами, getfqdn() ищет обратную запись PTR , независимо от того, что указала на нее запись A или CNAME . Он ищет полное доменное имя (FQDN) и просто дает вам первый подходящий, то есть первый, который заканчивается. , корень.

Таким образом, FQDN: sa-in-f93.1e100.net поступает из записи PTR для IP 74.125.200.93 .

93.200.125.74.in-addr.arpa. 86400 IN PTR sa-in-f93.1e100.net.

Здесь FQDN для этого имени хоста www имеющего домен youtube.com по сути является по определению www.youtube.com. , включая точку. Аналогично, sa-in-f93.1e100.net не является sa-in-f93.1e100.net доменным именем, так как на самом деле это должно быть sa-in-f93.1e100.net. :

  • имя хоста sa-in-f93 как субдомен для 1e100
  • sa-in-f93.1e100 как субдомен для net
  • sa-in-f93.1e100.net в подобласти для корня, . ,

Почему sa-in-f93.1e100.net. выбирается через www.youtube.com. просто происходит от того, как socket.getfqdn() предназначен для определения полного доменного имени для данного имени.

С другой стороны, каноническое имя CNAME записи СЛЕДУЕТ по дизайну (RFC 1035, 3.2.2) указать на каноническое имя, но оно обычно используется, как будто это просто псевдоним, потому что он работает как один. Кроме того, запись PTR SHOULD (RFC 1912, 2.1) дает тот же результат, что и представление канонического имени для данного IP.

Если бы это было выполнено, метод socket.getfqdn() был бы полностью уместным. Здесь CNAME youtube-ui.l.google.com. без соответствующей записи PTR (93.200.125.74.in-addr.arpa. IN PTR youtube-ui.l.google.com.) сделало это предположение ложным.

1) Это сложно, и результаты от них зависят от настроек разрешения имени системы, используемых библиотек и контекста. В типичном linux install hostname является каноническим именем, связанным с хостом, и может быть либо FQDN, либо коротким именем, но должно быть разрешено либо (если правильно настроить). Если используется нечто вроде NIS, имя хоста может быть только коротким именем, а не полным доменным именем.

Ваш пример (с использованием DNS):

$host www.youtube.com www.youtube.com is an alias for youtube-ui.l.google.com. youtube-ui.l.google.com has address 216.58.193.78

www.youtube.com имеет CNAME в ответе DNS ("C" означает канонический) youtube-ui.l.google.com поэтому "имя хоста", возвращаемое вашим вызовом библиотеки, является каноническим именем в соответствии с DNS.

Обратный запрос на IP-адрес с использованием DNS производится путем запроса записи PTR на 78.193.58.216.in-addr.arpa

$ host -t PTR 78.193.58.216.in-addr.arpa 78.193.58.216.in-addr.arpa domain name pointer sea15s07-in-f78.1e100.net.

Обратите внимание, что это указывает на другое имя, чем "имя хоста", которое мы получили ранее. Это связано с тем, как ISP, который владеет IP-адресом, устанавливает это и будет отличаться от хоста к хосту при использовании DNS. Довольно распространенной практикой является установление фиксированного сопоставления 1-к-1 между IP-адресами и именами для такого использования, даже если они не представляют то, что имеет хост для имени.

Другой пример (с использованием /etc/hosts):

#example hostfile 1.2.3.4 hosta hosta.example.net myothername.example.net 4.3.2.1 hostb.example.net hostb anothername

При использовании вашего кода, но с изменением "www.youtube.com" на "hosta","hostb" мы получаем:

Hosta (" Aliases: ", ["hosta.example.net", "myothername.example.net"]) (" Hostname: ", "hosta") (" FQDN: ", "hosta.example.net") ("Addresses: ", ["1.2.3.4"]) hostb (" Aliases: ", ["hostb", "anothername"]) (" Hostname: ", "hostb.example.net") (" FQDN: ", "hostb.example.net") ("Addresses: ", ["4.3.2.1"])

Таким образом, в главном файле "hostname" является первым именем после IP-адреса. Псевдонимы - это все после этого. FQDN - это первое имя с точкой.

Опять же, это может варьироваться между системами и библиотеками.

2) Обратный поиск дает вам PTR в DNS, который может быть чем-то действительно. Он мог бы вернуть localhost, если бы захотел. Нет требования, чтобы PTR являлся FQDN, но имеет смысл возвращать его как таковой. Результаты этого не могут и не должны использоваться взаимозаменяемо.

3) Да в DNS www.youtube.com является CNAME для youtube-ui.l.google.com.

4) Для протокола HTTP 1.1 ваш клиент сообщает серверу в запросе имя сервера в строке URL, если сервер получает имя, которое он не ожидает, что он может отклонить его. Youtube рассчитывает называться www.youtube.com и сервер, обрабатывающий этот запрос, возвращает ошибку 404, если вы подключаетесь к ней и называете ее любым другим именем.

"Hostname" - это плохо определенный термин, который используется во многих разных контекстах, чтобы означать много разных вещей, которые, грубо говоря, не имеют ничего общего, кроме как своего рода названия для чего-то, что можно считать хозяином. Попытка рассматривать все, что называется "имя хоста" как одно и то же, или даже какую-то определенную вещь, приведет только к разочарованию и путанице.

Полноценное доменное имя (FQDN) является специфичным для DNS термином, возвращающимся в RFC 1035, что означает доменное имя DNS, которое полностью изложено со всеми его метками компонента (в отличие от имени домена, которое оставляет некоторые ярлыки, подразумеваемые контекстом),

Единственное отношение между "именем хоста" и полным доменным именем заключается в том, что для некоторых видов использования "имя хоста" его значение должно быть FQDN.

Иван Коробко

PowerShell. Определяем имя текущего домена

При подключении к каталогу Active Directory первый шаг – определение имени текущего домена. Для этого используется виртуальный объект RootDSE.

PowerShell позиционируется компанией Microsoft как скриптовый язык, поддерживающий библиотеки.Net Framewok и призванный заменить существующие VBScript и JScript. Принципиальное отличие PowerShell от своих предшественников – поддержка объектно-ориентированного программирования.

Framework – с помощью библиотеки System.DirectoryServices.

Поскольку PowerShell в первую очередь ориентирован на работу с.NET Framework, то администраторам придется узнать основы программирования в Visual Studio в облегченном варианте.

Способы подключения к Active Directory

Для доступа к каталогу Active Directory используется один из двух провайдеров: WinNT или LDAP. Первый из них использовался в доменах Windows NT и в настоящее время используется для совместимости. Основным протоколом доступа к Active Directory является LDAP. В связи с этим провайдер WinNT рассматриваться не будет.

Виртуальный каталог RootDSE

Виртуальный объект RootDSE является точкой входа в любой домен, который содержит информацию о домене в целом, доступных пространствах имен, поддерживаемой версии LDAP и др. Первоначально объект RootDSE был определен в RFC 2251 как часть спецификации LDAP версии 3.

Для подключения к RootDSE используется бессерверное подключение. Чтобы определить имя домена, используется локатор контроллера домена, который находится на каждом контроллере. Доступ к объекту осуществляется анонимно.

Определение имени текущего домена

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

Как известно, существуют три варианта обозначения имени домена:

  • RDN (Relative Distinguished Name) – относительное уникальное имя, например DC=ISLAND,DC=RU;
  • FQDN (Fully Qualified Domain Name) – полное доменное имя или DNS-имя, в котором компоненты разделены точкой, например ISLAND.RU;
  • NetBIOS-имя – обычно первая часть DNS-имени домена, например ISLAND.

На практике для управления объектами Active Directory с помощью провайдера LDAP используется имя домена, записанное в RDN-формате. Домен имеет древовидную структуру, в которой доступны несколько пространств имен. Каждое из них имеет свою точку входа:

  • defaultNamingContext. Описываемое этим параметром пространство имен используется для управления учетными записями пользователей, групп, контейнеров и других объектов в оснастке Active Directory Users and Computers.
  • sсhemaNamingContext. Данным параметром описывается местоположение схемы домена.
  • configurationNamingContext. Содержит RDN-путь к разделу, содержащему путь к конфигурации леса текущего домена.
  • rootDomainNamingContext. Значением параметра является RDN-путь к корню домена (домен, который был создан первым в лесу).

Имя текущего домена является значением параметра defaultNamingContext. Поскольку PowerShell представляет собой нечто среднее между Visual Studio и VBScript, то рассмотрим управление объектом RootDSE с помощью трех языков программирования (VB.NET, VBScript и PowerShell), чтобы наглядно показать все преимущества PowerShell.

Удаленное подключение к каталогу Active Directory (провайдер LDAP) обеспечивается с помощью Active Directory Services Interface (ADSI). В VBScript для этого используется функция GetObject(), в качестве аргумента которой фигурирует путь к объекту. В PowerShell для решения идентичной задачи вместо функции GetObject() в квадратных скобках указывается ключевое слово ADSI, а в кавычках, следующих далее, – путь к объекту.

Определение RDN-имени текущего домена с помощью виртуального объекта RootDSE состоит из двух этапов. Первый этап – получение доступа к RootDSE, второй – чтение строкового значения параметра defaultNamingContext. На языке VBScript для этого используется функция GetObject(), аргументом которой является путь к виртуальному объекту: LDAP://RootDSE, и чтение значения с помощью функции GET, аргументом которой в свою очередь является имя параметра (см. листинг 1).

Листинг 1. Определение RDN-имени домена (VBScript)

Set obj = GetObject("LDAP://rootDSE")

domain = obj.Get("defaultNamingContext")

MsgBox domain

Эту же операцию в VB.NET можно осуществить двумя способами:

  1. с помощью COM-объекта. Так же как и в VBScript, осуществляется вызов функции GetObject() и с помощью метода GET – чтение значения параметра defaultNamingContext;
  2. с помощью класса DirectoryEntry, входящего в состав библиотеки Directory Services .Net Framework (см. листинг 2).

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

Для реализации второго способа необходимо к созданному в Visual Studio проекту подключить библиотеку System.DirectoryServices (см. рисунок).

Листинг 2. Определение RDN-имени домена (VB.NET)

Imports System.DirectoryServices

Dim obj As New DirectoryEntry("LDAP://RootDSE")

Dim domain As String = obj.Properties("defaultNamingContext").Value

MsgBox (domain)

Несмотря на то что PowerShell поддерживает COM-объекты, рекомендуется отдать предпочтение библиотекам.NET Framework, поскольку скорость работы сценария в этом случае увеличится. Для получения имени домена все так же используется библиотека System.DirectoryServices, однако ее нет необходимости подключать, поскольку многие популярные библиотеки сразу доступны после запуска оболочки PowerShell. Листинг сценария очень похож на листинг VB.NET (см. листинг 3).

Листинг 3. Определение RDN-имени домена (VB.NET)

$obj="LDAP://RootDSE"

$domain=$obj.defaultNamingContext

$domain

Обратите внимание: все имена переменных в PowerShell начинаются с символа доллара ($).

Как видно, листинг по своему объему сопоставим с листингом на VBScript, а по скорости работы – с VB.NET.

Заключение

После того как определено имя текущего домена, вы получаете доступ ко всему каталогу Active Directory. Степень дозволенности определяется правами, выданными системным администратором. В общем случае доступны поиск объектов, на которые есть соответствующие разрешения, и чтение их свойств.

  1. RFC2251 – Lightweight Directory Access Protocol (v3) – http://www.faqs.org/rfcs/rfc2251.html .
В Linux имя хоста используется многими сервисами и утилитами. Если имя хоста задано неправильно, то вы будете постоянно получать сообщения об ошибках и предупреждения. Всё зависит от того, как вы используете операционную систему. Если это обычный домашний компьютер, личный ноутбук, то можно задать любое имя и игнорировать ошибки. А если вы используете компьютер в качестве сервера, то очень важно правильно задать имя хоста (hostname).
Вот несколько причин настроить имя хоста:
  • Имя хоста отображается в подсказке Bash, сразу после символа @. Так намного проще понять на каком сервере вы залогинены.
  • MTA (message transfer agent) используют имя хоста при отправке писем (в зависимости от конфигурации MTA).

В чём разница между доменным именем и именем хоста?

Как ни странно, это не такой простой вопрос как может показаться на первый взгляд. Значение некоторых терминов может меняться в зависимости от контекста. Давайте начнем с доменного имени . Если вы знаете, как работают системы доменных имен (DNS), то вы знаете что такое доменное имя. Система доменных имен хранит запись типа A или AAAA, запись является соответсвием между доменным именем и IP-адресом. То есть, когда говорят о веб-сайте, под доменным именем обычно имеют в виду его адрес (например, "www.сайт").
Имя хоста - это символическое имя, назначенное устройству, подключенному к сети, которое может быть использовано для организации доступа к этому устройству. А какое же имя писать в качестве hostname? Здесь всё запутано, в документации к разным дистрибутивам Linux можно увидеть противоположные рекомендации . Но большинство участников дискуссий сходятся во мнении, что в качестве hostname лучше указывать короткое имя, а в файле /etc/hosts сначала следует писать доменные имена, а потом уже имя хоста.
Стоит ещё упомянуть термин Fully Qualified Domain Name (с англ. "полностью определённое имя домена"). FQDN получается если к имени хоста присоединить имя родительского домена. К примеру, есть сервер с Apache, ему назначено имя хоста websrv1. И есть сервер с базами данных, ему назначено имя dbsrv. И пусть родительским доменом для них будет example.org. Тогда полностью определенными доменными именами будут websrv1.example.org и dbsrv.example.org.
Так в чем же разница между доменным именем и именем хоста? У меня нет четкого ответа, но можно сказать, что имя хоста может зависеть от доменного имени. Наверно, можно сказать, что FQDN должно быть равно доменному имени. То есть если у вас есть сайт www.example.org, то hostname сервера может быть равен www. И в обратную сторону это правило тоже должно работать. То есть если вы в качестве имени хоста используете не www, а websrv1, то стоит добавить соответсвующую запись в DNS. При этом DNS-сервер может эту запись не распространять за пределы своей подсети, это может быть DNS-сервер для внутренних нужд.

Настройка имени хоста в Ubuntu

Есть в Linux специальная команда hostname, если вызвать её без аргументов, то она выведет текущее имя хоста.
Чтобы изменить имя хоста, передайте новое имя в качестве аргумента:
  1. hostname web-srv-1
Новое имя хоста будет активно сразу после выполнения, но после перезагрузки будет восстановлено имя из файла /etc/hostname. Поэтому нужно изменить ещё и файл hostname. В других статьях пишут, что надо перезапустить сервис hostname, но в моей Ubuntu 14.04 такого сервиса нет. Так что я просто перезагрую операционную систему. Кстати, в Ubuntu есть специальная утилитка, которая меняет и текущее значение hostname и файл /etc/hostname. Называется hostnamectl. Если вызвать её без аргументов, то кроме имени хоста она покажет ещё и версию Ubuntu, версию ядра, архитектуру и тип компьютера. А чтобы установить доменное имя, нужно выполнить команду:
  1. hostnamectl set-hostname web-srv-1
После этого необходимо произвести изменения в файле /etc/hosts. IP-адрес 127.0.1.1 должен соответствовать новому имени хоста.
  1. 127.0.1.1 web-srv-1
И для завершения настройки необходимо перезапустить сеть или перезагрузить операционную систему.

Автоматизированная настройка имени хоста с помощью Fabric

Если вы не знаете, что такое Fabric, то вот документация . Я же просто приведу код функции, с помощью которой я настраиваю имя хоста.
  1. def conf_hostname (hostname , domain = None ):
  2. fqdn = hostname if domain is None else hostname + "." + domain
  3. sudo ("hostname %s " % hostname )
  4. sudo ("echo " %s " > /etc/hostname" % hostname )
  5. fabfiles . sed ("/etc/hosts" , "^(127\.0\.1\.1\s+)[-a-z0-9]+" , " \\ 1 %s %s " % (fqdn , hostname ), use_sudo = True )
  6. sudo ("reboot" )
  7. time . sleep (20 )
В Linux имя хоста используется многими сервисами и утилитами. Если имя хоста задано неправильно, то вы будете постоянно получать сообщения об ошибках и предупреждения. Всё зависит от того, как вы используете операционную систему. Если это обычный домашний компьютер, личный ноутбук, то можно задать любое имя и игнорировать ошибки. А если вы используете компьютер в качестве сервера, то очень важно правильно задать имя хоста (hostname).
Вот несколько причин настроить имя хоста:
  • Имя хоста отображается в подсказке Bash, сразу после символа @. Так намного проще понять на каком сервере вы залогинены.
  • MTA (message transfer agent) используют имя хоста при отправке писем (в зависимости от конфигурации MTA).

В чём разница между доменным именем и именем хоста?

Как ни странно, это не такой простой вопрос как может показаться на первый взгляд. Значение некоторых терминов может меняться в зависимости от контекста. Давайте начнем с доменного имени . Если вы знаете, как работают системы доменных имен (DNS), то вы знаете что такое доменное имя. Система доменных имен хранит запись типа A или AAAA, запись является соответсвием между доменным именем и IP-адресом. То есть, когда говорят о веб-сайте, под доменным именем обычно имеют в виду его адрес (например, "www.сайт").
Имя хоста - это символическое имя, назначенное устройству, подключенному к сети, которое может быть использовано для организации доступа к этому устройству. А какое же имя писать в качестве hostname? Здесь всё запутано, в документации к разным дистрибутивам Linux можно увидеть противоположные рекомендации . Но большинство участников дискуссий сходятся во мнении, что в качестве hostname лучше указывать короткое имя, а в файле /etc/hosts сначала следует писать доменные имена, а потом уже имя хоста.
Стоит ещё упомянуть термин Fully Qualified Domain Name (с англ. "полностью определённое имя домена"). FQDN получается если к имени хоста присоединить имя родительского домена. К примеру, есть сервер с Apache, ему назначено имя хоста websrv1. И есть сервер с базами данных, ему назначено имя dbsrv. И пусть родительским доменом для них будет example.org. Тогда полностью определенными доменными именами будут websrv1.example.org и dbsrv.example.org.
Так в чем же разница между доменным именем и именем хоста? У меня нет четкого ответа, но можно сказать, что имя хоста может зависеть от доменного имени. Наверно, можно сказать, что FQDN должно быть равно доменному имени. То есть если у вас есть сайт www.example.org, то hostname сервера может быть равен www. И в обратную сторону это правило тоже должно работать. То есть если вы в качестве имени хоста используете не www, а websrv1, то стоит добавить соответсвующую запись в DNS. При этом DNS-сервер может эту запись не распространять за пределы своей подсети, это может быть DNS-сервер для внутренних нужд.

Настройка имени хоста в Ubuntu

Есть в Linux специальная команда hostname, если вызвать её без аргументов, то она выведет текущее имя хоста.
Чтобы изменить имя хоста, передайте новое имя в качестве аргумента:
  1. hostname web-srv-1
Новое имя хоста будет активно сразу после выполнения, но после перезагрузки будет восстановлено имя из файла /etc/hostname. Поэтому нужно изменить ещё и файл hostname. В других статьях пишут, что надо перезапустить сервис hostname, но в моей Ubuntu 14.04 такого сервиса нет. Так что я просто перезагрую операционную систему. Кстати, в Ubuntu есть специальная утилитка, которая меняет и текущее значение hostname и файл /etc/hostname. Называется hostnamectl. Если вызвать её без аргументов, то кроме имени хоста она покажет ещё и версию Ubuntu, версию ядра, архитектуру и тип компьютера. А чтобы установить доменное имя, нужно выполнить команду:
  1. hostnamectl set-hostname web-srv-1
После этого необходимо произвести изменения в файле /etc/hosts. IP-адрес 127.0.1.1 должен соответствовать новому имени хоста.
  1. 127.0.1.1 web-srv-1
И для завершения настройки необходимо перезапустить сеть или перезагрузить операционную систему.

Автоматизированная настройка имени хоста с помощью Fabric

Если вы не знаете, что такое Fabric, то вот документация . Я же просто приведу код функции, с помощью которой я настраиваю имя хоста.
  1. def conf_hostname (hostname , domain = None ):
  2. fqdn = hostname if domain is None else hostname + "." + domain
  3. sudo ("hostname %s " % hostname )
  4. sudo ("echo " %s " > /etc/hostname" % hostname )
  5. fabfiles . sed ("/etc/hosts" , "^(127\.0\.1\.1\s+)[-a-z0-9]+" , " \\ 1 %s %s " % (fqdn , hostname ), use_sudo = True )
  6. sudo ("reboot" )
  7. time . sleep (20 )