在RHEL5 / CentOS / Amazon Linux上覆盖DHCP主机名

我在EC2上运行Amazon Linux(基于RHEL5)。

我有自己的域名指向实例的弹性IP。 Amazon自动通过DHCP为该实例分配一个通用(并且在Internet上不可见)主机名。

由于SMTP服务器希望看到一个真实的(和公共的)主机名,所以这个只有内部的主机名会中断发送电子邮件。 我可以通过手动运行“hostname”命令来设置真正的公共主机名来修复电子邮件。

我在/ etc / sysconfig / network中设置了HOSTNAME,但是DHCP主机名似乎覆盖了这个。

有没有一个好的/正确的方式来设置我的主机名,并总是忽略什么DHCP说,而仍然使用DHCP,否则?

我可以想到很多kludgy的东西要做(运行一个脚本,撤销什么DHCP做什么,或者其他),但想知道是否有一个实际的configuration设置强制主机名的地方。

迈克的回答听起来更好,可能会奏效,但如果给你带来麻烦,你总是可以使用大锤。 🙂

/bin/hostname HOSTNAME 

 /etc/rc.local 

🙂

试试这个..编辑

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

然后加

 DHCP_HOSTNAME=host.domain.com 

看看是否清除它。

对于Centos 6,因此Redhat 6,你将不断失去你希望你的主机被称为本地的任何主机名,每当你得到一个新的IP或重新启动,而使用DHCP。 (Redhat 5 / Centos 5信息也在下面)

(如果您使用静态主机名进行备份或类似的脚本,这可能会很痛苦)

如果您使用dhclient,并持续使用DHCP提供的主机名覆盖(忘记)所需的localhostname,请继续阅读。

要强制一个本地主机名(并且让DHCP给你任何它想要的IP),你需要修改(或创build)文件/etc/dhcp/dhclient-eth0.conf

(把eth0replace成你的主机名被覆盖的任何networking接口,eth0对于大部分工作)

对于我的设置,这个简单的filecontent工作:

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

我保存到/etc/dhcp/dhclient-eth0.conf

如果你有Redhat 5 / Centos 5,可以尝试一下,但文件位置应该是/etc/dhclient-eth0.conf

您将通过查看文件/etc/sysconfig/network-scripts/ifup中引用dhclient-${DEVICE}.conf的部分来了解为什么会发生这种情况

如果您需要获取特定的IP地址,则需要查看dhclient的联机帮助页。

对于CentOS 7 AMI,通过注释行来设置一个静态主机名:

 - set_hostname - update_hostname 

/etc/cloud/cloud.cfg 。 YAML的注释字符是#

这是除了正常设置主机名。

只需添加

 PEERDNS="no" 

在/ etc / sysconfig / network-scripts / ifcfg-ethX(在CentOS 6上testing)

/etc/dhcp/dhclient-eth0.conf添加(适用于AWS AMI(CentOS)),其内容如下:

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

似乎工作得很好(如果使用DHCP,当然)。 谢谢!