文/Google Cloud魏衡和盛駿
DHCP客戶端將覆蓋GCE主機名
GCE的網(wǎng)卡IP地址是由DHCP分配,同時,DHCP服務(wù)器還將發(fā)送DNS服務(wù)器和主機名,使用的DHCP Option有:DHCP Option 6-DNS服務(wù)器,以及DHCP Option 12-主機名。
NetworkManager DHCP租約信息
cat/var/lib/NetworkManager/dhclient-xxx.lease:
系統(tǒng)日志信息:
點擊以下文件:
cat/etc/dhcp/dhclient.d/google_hostname.sh
點擊文件
cat/usr/bin/google_set_hostname
如果您已經(jīng)修改了DNS服務(wù)器和主機名,則當(dāng)dhcp客戶端請求IP地址時,配置將會被覆蓋。
操作流程如下:
change DNS server & hostname(更改 DNS 服務(wù)器或者主機名)
這篇文章將說明如何保持主機名(hostname)不被改變。
解決方案
根據(jù)上面的描述,我們可以更改以下的任何一項:
Don’t receive NetworkManager config on dhcp option 12
Change/etc/dhcp/dhclient.d/google_hostname.sh
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設(shè)置/etc/hostname
設(shè)置靜態(tài)主機名:
echo whvm05.weiheng.ink>/etc/hostname
2.1.2取代dhcp選項的12-hostname
Create a config file,add config to supersede the dhcp option:
創(chuàng)建一個配置文件,添加配置以取代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
NetworkManager自動生成的配置文件將包含2.1.2中的先前配置。
2.1.4測試
如果重新引導(dǎo)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
2.2.4設(shè)置hostname
hostname`cat/etc/hostname
2.2.5測試
在reboot之后,主機名仍還沒有變化:
2.3更改google_set_hostname
2.3.1編輯google_set_hostname
設(shè)置新的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測試
總結(jié)
谷歌計算引擎的代理將更改虛擬機的主機名,通過更改dhcp客戶端配置,以及谷歌代理腳本,可以保持主機名不變。