1 DHCP 客户端将覆盖 GCE 主机名

GCE 的网卡 IP 地址是由 DHCP 分配,同时,DHCP 服务器还将发送 DNS 服务器和主机名,使用的 DHCP Option 有: DHCP Option 6-DNS 服务器,以及 DHCP Option 12-主机名。

NetworkManager DHCP 租约信息

cat /var/lib/NetworkManager/dhclient-xxx.lease:
Google Cloud 自定义 GCE 主机名

系统日志信息:
Google Cloud 自定义 GCE 主机名

点击以下文件:
cat /etc/dhcp/dhclient.d/google_hostname.sh
Google Cloud 自定义 GCE 主机名

点击文件
cat /usr/bin/google_set_hostname
Google Cloud 自定义 GCE 主机名

如果您已经修改了 DNS 服务器和主机名,则当 dhcp 客户端请求 IP 地址时,配置将会被覆盖。

操作流程如下:
1.DHCP Server ->
2.NetworkManager DHCP Option ->
3.DHCP client ->
4.google_set_hostname ->
5.change DNS server & hostname
(更改 DNS 服务器或者主机名)

这篇文章将说明如何保持主机名(hostname)不被改变。

2 解决方案

根据上面的描述,我们可以更改以下的任何一项:

1.Don’t receive NetworkManager config on dhcp option 12
2.Change /etc/dhcp/dhclient.d/google_hostname.sh
3.Change /usr/bin/google_set_hostname

Can prohibit DHCP change the hostname.
这样做,就可以禁止 DHCP 更改主机名。

2.1 更改 NetworkManager 的配置

更改 NetworkManager 配置的目的,是取代 DHCP 选项 12-hostname。 DHCP 客户端将不再通过 DHCP 接收主机名。

2.2.1 设置 /etc/hostname

设置静态主机名:

echo whvm05.weiheng.ink > /etc/hostname

2.1.2 取代 dhcp 选项的 12-hostname

Create a config file, add config to supersede the dhcp option:
创建一个配置文件,添加配置以取代 dhcp 选项:

touch /etc/dhcp/dhclient-eth0.conf
echo ‘supersede host-name “”;’ >> /etc/dhcp/dhclient-eth0.conf

2.1.3 重新启动 NetworkManager

systemctl 重新启动 NetworkManager

检查配置:

cat /var/lib/NetworkManager/dhclient-eth0.conf
Google Cloud 自定义 GCE 主机名

NetworkManager 自动生成的配置文件将包含 2.1.2 中的先前配置。

2.1.4 测试

Google Cloud 自定义 GCE 主机名

如果重新引导 VM ,则主机名仍保持为 / etc / hostname 配置。

2.2 更改 google_hostname.sh

2.2.1 编辑 /etc/hostname 文件

echo whvm03.weiheng.ink > /etc/hostname

2.2.2 移除 yum-cron

任何配置的改变都会有 yum-cron 的存储,所以我们需要移除它们:

yum remove yum-cron -y

2.2.3 编辑 google_hostname.sh

将 “google_set_hostname” 替换为“:”:

sed -i “1,$ s/google_set_hostname/:/g” /etc/dhcp/dhclient.d/google_hostname.sh
cat /etc/dhcp/dhclient.d/google_hostname.sh
Google Cloud 自定义 GCE 主机名

2.2.4 设置 hostname

hostname `cat /etc/hostname

2.2.5 测试

Google Cloud 自定义 GCE 主机名

reboot 之后,主机名仍还没有变化:
Google Cloud 自定义 GCE 主机名

2.3 更改 google_set_hostname

2.3.1 编辑 google_set_hostname

设置新的 new_host_name
sed -i ‘1 anew_host_name=cat /etc/hostname’ /usr/bin/google_set_hostname
sed -i ‘1,$ s/%%.*//g’ /usr/bin/google_set_hostname

2.3.2 移除 yum-cron

正如 2.2 中提到的那样,需要移除 yum-cron ,以保证配置没有随之改变:

yum remove yum-cron -y

2.3.3 测试

Google Cloud 自定义 GCE 主机名

3. 总结

谷歌计算引擎的代理将更改虚拟机的主机名,通过更改 dhcp 客户端配置,以及谷歌代理脚本,可以保持主机名不变。

文章版权归作者所有,未经许可不得转载。

评论

发布