我在 Vultr 上的 Trac 自動開票程式有時候會爛掉,沒把票開出來,把 stderr 輸出到檔案後發現是找不到 hostname:
socket.gaierror: [Errno -3] Temporary failure in name resolution
看了看 /etc/resolv.conf
發現系統使用的 DNS server 設定是透過 DHCP 取得設定的。但 Vultr 只有提供一組 DNS server,當查不到東西時就爆掉了... 所以找了一下,看到「How to override the DHCP-provided nameserver?」這篇,但裡面是用「增加到前面的方式」,跟我想要改成只用 1.1.1.1
與 1.0.0.1
不太一樣。
知道目錄後拿關鍵字去 dhclient.conf
的 manpage 裡面找,就可以看到四種設定方式:
default [ option declaration ] ; supersede [ option declaration ] ; prepend [ option declaration ] ; append [ option declaration ] ;
這四組看名字就大概知道用途了。接下來就是把對應的 interface 查出來以後,用 supersede
就搞定了:
supersede domain-name-servers 1.1.1.1, 1.0.0.1;
重開機測試可以確認 /etc/resolv.conf
的內容改變了。接下來再來觀察看看還會不會有狀況...