Назад | Перейти на главную страницу

Переопределить имя хоста DHCP в RHEL5 / CentOS / Amazon Linux

Я использую Amazon Linux (на основе RHEL5) на EC2.

У меня есть собственное доменное имя, указывающее на эластичный IP-адрес экземпляра. Amazon автоматически назначает экземпляру общее (не видимое в Интернете) имя хоста через DHCP.

Это внутреннее имя хоста мешает отправке электронной почты, поскольку SMTP-сервер хочет видеть реальное (и общедоступное) имя хоста. Я могу исправить электронную почту, вручную запустив команду hostname, чтобы установить настоящее публичное имя хоста.

Я установил HOSTNAME в / etc / sysconfig / network, но имя хоста DHCP, похоже, отменяет это.

Есть ли хороший / правильный способ установить мое имя хоста и всегда игнорировать то, что DHCP говорит об этом, в противном случае все еще используя DHCP?

Я могу придумать множество непонятных вещей (запустить сценарий, отменяющий действия DHCP, или что-то еще), но мне интересно, есть ли где-нибудь фактическая настройка конфигурации, чтобы принудительно указать имя хоста.

Попробуйте это .. Редактировать

/etc/sysconfig/network-scripts/ifcfg-eth0

Затем добавьте

DHCP_HOSTNAME=host.domain.com

Посмотрим, проясняет ли это это.

Для Centos 6 и, следовательно, Redhat 6 вы будете постоянно терять любое имя хоста, которое вы хотите, чтобы ваш хост был известен как локальный, каждый раз, когда вы получаете новый IP или перезагружаетесь при использовании DHCP. (Информация о Redhat 5 / Centos 5 также ниже)

(что может быть проблемой, если вы создаете резервные копии сценариев или аналогичные, полагаясь на статическое имя хоста)

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

Чтобы принудительно указать локальное имя хоста (и при этом позволить DHCP предоставлять вам любой IP-адрес, который он хочет), вам необходимо изменить (или создать) файл /etc/dhcp/dhclient-eth0.conf.

(замените строку eth0 любым сетевым интерфейсом, которым вы перезаписываете свое имя хоста, eth0 работает в большинстве случаев)

Для моей настройки работает этот простой файловый контент:

interface "eth0"  
   {    
     supersede host-name "myworkbox";  
   }

и я откладываю на /etc/dhcp/dhclient-eth0.conf.

Если у вас Redhat 5 / Centos 5, попробуйте сделать то же самое, но расположение файла должно быть /etc/dhclient-eth0.conf.

Вы поймете, почему это происходит, просмотрев раздел, в котором упоминается dhclient-${DEVICE}.conf в файле /etc/sysconfig/network-scripts/ifup

Если вам нужно получить конкретный IP-адрес, вам нужно просмотреть страницу руководства для dhclient.

Для CentOS 7 AMI установите статическое имя хоста, закомментировав строки:

- set_hostname
- update_hostname

в /etc/cloud/cloud.cfg. Символ комментария для YAML - #.

Это в дополнение к обычной настройке имени хоста.

Ответ Майка звучит лучше и, вероятно, сработает, но если это доставляет вам проблемы, вы всегда можете использовать кувалду. :)

Добавить

/bin/hostname HOSTNAME

Чтобы

/etc/rc.local

:)

Просто добавь

PEERDNS="no"

в / etc / sysconfig / network-scripts / ifcfg-ethX (проверено на CentOS 6)

Дополнение /etc/dhcp/dhclient-eth0.conf (для AWS AMI (CentOS)) с содержимым:

interface "eth0"  
{    
  supersede host-name "myworkbox";  
}

казалось, работает нормально (конечно, при использовании dhcp). Спасибо!