Я использую 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). Спасибо!