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

Hav*_*c P 7 dhcp centos rhel5 linux-networking amazon-ec2

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

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

这个仅供内部使用的主机名会中断发送电子邮件,因为 SMTP 服务器想要查看真实(和公共)主机名。我可以通过手动运行“主机名”命令来设置真正的公共主机名来修复电子邮件。

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

有没有一种好的/正确的方法来设置我的主机名并且总是忽略 DHCP 对它的看法,而仍然使用 DHCP 否则?

我可以想到很多麻烦的事情要做(运行一个脚本来撤销 DHCP 所做的事情,或者其他什么),但想知道是否有一个实际的配置设置来强制主机名。

Mik*_*ike 8

试试这个.. 编辑

/etc/sysconfig/network-scripts/ifcfg-eth0
Run Code Online (Sandbox Code Playgroud)

然后加

DHCP_HOSTNAME=host.domain.com
Run Code Online (Sandbox Code Playgroud)

看看这是否清除它。


小智 5

对于 Centos 6 和 Redhat 6,每次获得新 IP 或重新启动,同时使用 DHCP 时,您将不断丢失您希望主机在本地使用的任何主机名。(Redhat 5 / Centos 5 信息也在下面)

(如果您编写备份或类似脚本,依赖静态主机名,这可能会很痛苦)

如果您使用 dhclient 并不断让您想要的 localhostname 被 DHCP 提供的主机名覆盖(忘记),请继续阅读。

要强制使用本地主机名(并且仍然让 DHCP 为您提供它想要的任何 IP),您需要修改(或创建)文件/etc/dhcp/dhclient-eth0.conf.

(将字符串 eth0 替换为您的主机名被覆盖的任何网络接口,eth0 适用于大多数)

对于我的设置,这个简单的文件内容有效:

interface "eth0"  
   {    
     supersede host-name "myworkbox";  
   }
Run Code Online (Sandbox Code Playgroud)

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

如果您有 Redhat 5 / Centos 5,请尝试执行相同操作,但文件位置应为/etc/dhclient-eth0.conf.

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

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


Don*_*ill 2

迈克的答案听起来更好并且可能会起作用,但如果它给您带来麻烦,您可以随时使用大锤。:)

添加

/bin/hostname HOSTNAME
Run Code Online (Sandbox Code Playgroud)

/etc/rc.local
Run Code Online (Sandbox Code Playgroud)

:)