DHCPクライアントが勝手にresolv.confを書き換えて困っている人に捧ぐ。
環境
- OS: raspbian buster lite
- DHCPクライアント: dhcpcd
未実証だが、dhclientでの対応方法も載せておいた。それぞれのクライアントとそれに適用可能な方法は次の通り。
client | 適用可能な方法 |
---|---|
dhcpcd | 1, 2, 3, 4 |
dhclient | 4, 5, 6 |
方法1 一番おすすめ(dhcpcd)
DHCPクライアントがDNS関連の情報を取得しないように設定する。
/etc/dhcpcd.confに以下を追記。
nooption domain_name_servers, domain_name, domain_search
他にも指定可能なオプションが色々。詳しくは、dhcpcd -V
で一覧をチェック。
参考サイト
方法2 (dhcpcd)
DHCPクライアントがresolvconfにDNS関連の情報を渡さないようにする。/usr/lib/dhcpcd/dhcpcd-hooks/20-resolv.confというフックを起動しないようにしているらしい。
/etc/dhcpcd.confに以下を追記
nohook resolv.conf
他のフックの起動も抑制できる。ls /usr/lib/dhcpcd/dhcpcd-hooks
で一覧をチェック。
参考サイト
方法3 (dhcpcd)
そもそもDHCPを使わずにstaticに設定してしまう。
/etc/dhcpcd.confに設定を追加する。
interface eth0
static domain_name_servers=8.8.8.8
方法4
resolv.confファイルのパーミッションを上げて、DHCPクライアントが触れないようにする。
chattr +i /etc/resolv.conf
参考サイト
方法5 (dhclient)
DNS関連情報をDHCPサーバーにリクエストしないように設定する。
/etc/dhcp/dhclient.confの以下の項目を書き換える。
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
この中から、domain-name、domain-name-servers、domain-searchを消す。
参考サイト
方法6 (dhclient)
DHCPで取得したDNS情報を上書きする。
/etc/dhcp/dhclient.confに設定を追加する。
supersede domain-name-servers 8.8.8.8
domain-name-servers以外のオプションの情報も上書きできる。
参考サイト
まとめ
結局、存在すると面倒な情報は取得しないのが一番。