DHCP だけど DNS サーバを手動で指定したい [Linux]
さっき調べてたことのメモ。
Vagrant で Linux マシンを起動したときに、ネットワーク設定を NAT (+ DHCP) にした状態で、DNS サーバは社内のやつを使いたかった。 普通に /etc/resolv.conf を編集して
+ nameserver x.x.x.x
とかしても、/etc/init.d/network restart
とかしてネットワークを再起動すると DHCP (正確には dhclient-script) によって、/etc/resolv.conf が書き換えられてしまう。
$ cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 10.0.2.3
VirtualBox の 10.0.2.3 が指定される。これをなんとかしたいという話。
方法1:PEERDNS=no を使う
/etc/sysconfig/network-scripts/ifcfg-eth0 に PEERDNS=no を追加すると、DHCP で /etc/resolv.conf を更新されないようにできる。
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp PEERDNS=no
なので、あとは /etc/resolv.conf を手動でいじって良い
$ cat /etc/resolv.conf nameserver x.x.x.x nameserver y.y.y.y
方法2:DNS1/DNS2 を使う
DNS1/DNS2 を書いて置くと network を再起動した時に、/etc/resolv.conf に追記してくれる。
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp DNS1=x.x.x.x DNS2=y.y.y.y
$ sudo /etc/init.d/network restart $ cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver x.x.x.x nameserver y.y.y.y
ifcfg-eth1 もある場合どうなるんや!と思って試した所、どうやら後勝ちするようだ。
おわりに
PEERDNS=no がよさそう。なんかもっとうまい方法あればおしえてちょ。