DHCPでIPアドレスとかは設定するけどresolv.confはいぢられたくない場合
DHCPでIPアドレスとかは設定するけど /ec/resolv.conf は生成・変更されたくない場合のメモ。
Ubuntu
以下、14.04と15.04で確認。
手短に言うと、
- /etc/resolv.conf をsymlinkではなく実ファイルにした上で、
- 以下の内容で /etc/dhcp/dhclient-enter-hooks.d/disable-make_resolv_conf を作る
make_resolv_conf() { :; }
細かく書くと、こんな感じになってる。
- dhclientが/sbin/dhclient-scriptを折りにふれ実行する
- dhclient-script は resolv.conf を生成するためにシェル関数 make_resolv_conf を呼ぶ
- dhclient-script にはフックポイントがあり、以下の場所にあるファイルを . (source) でロードしてくれる。つまり、ここで同名で シェル関数 make_resolv_conf を上書き定義すれば、resolv.conf 生成の処理を制御できる
- resolvconf パッケージがインストールされていると /etc/dhcp/dhclient-enter-hooks.d/resolvconf というファイルが存在するはず
- /etc/dhcp/dhclient-enter-hooks.d/resolvconf は、デフォルトの make_resolv_conf を上書いて /sbin/resolvconf を使って /etc/resolv.conf を生成するようにしている
- ただし、/etc/resolv.conf が symlink ではない場合は make_resolv_conf の上書きはしない
CentOS 6.5
NetworkManagerを無効化した上で、ifcfg-IF に PEERDNS=no を書く。
chkconfig NetworkManager off service NetworkManager stop vi /etc/sysconfig/network-scripts/ifcfg-eth0 # PEERDNS=no と書く