![Google Cloud 自定义 GCE 主机名](https://static001.infoq.cn/resource/image/ce/b7/ce796fa0225018f38985351526ae1eb7.png?x-oss-process=image/crop,x_-194,y_-74,w_2100,h_1181/resize,w_726,h_408)
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:
![](https://static001.infoq.cn/resource/image/3c/0b/3c11fea9d0ffac4149e5ae3382dd5a0b.png)
系统日志信息:
![](https://static001.infoq.cn/resource/image/0e/34/0eca2adff0a38cb16edbc94a8735b134.png)
点击以下文件:
cat /etc/dhcp/dhclient.d/google_hostname.sh
![](https://static001.infoq.cn/resource/image/a0/e7/a05e1cfe9a8ac92727e96b526d42c1e7.png)
点击文件
cat /usr/bin/google_set_hostname
![](https://static001.infoq.cn/resource/image/62/9e/624f7329d3a831f8bf300584ecff3c9e.png)
如果您已经修改了 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
![](https://static001.infoq.cn/resource/image/97/bb/97e17805a034b2c90952a39f52ba7ebb.png)
NetworkManager 自动生成的配置文件将包含 2.1.2 中的先前配置。
2.1.4 测试
![](https://static001.infoq.cn/resource/image/1c/a3/1c056d2973c65d9b9803ce8abe6d54a3.png)
如果重新引导 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
![](https://static001.infoq.cn/resource/image/b2/a9/b276a9d33fa88bf7a2d616950436f9a9.png)
2.2.4 设置 hostname
hostname `cat /etc/hostname
2.2.5 测试
![](https://static001.infoq.cn/resource/image/d5/26/d57a85c3140186341c3b626e1564cf26.png)
在 reboot 之后,主机名仍还没有变化:
![](https://static001.infoq.cn/resource/image/57/80/5795980136585e50dbd5fd7e62d43e80.png)
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 测试
![](https://static001.infoq.cn/resource/image/9e/a7/9e684045f1b6a918373fad689f7d5da7.png)
3.总结
谷歌计算引擎的代理将更改虚拟机的主机名,通过更改 dhcp 客户端配置,以及谷歌代理脚本,可以保持主机名不变。
文章版权归作者所有,未经许可不得转载。
评论