スポンサードリンク

vagrant-parallels + ubuntu 14.04 でDHCP環境上でDNSサーバーを変更(追加)する方法

Macbookでvagrant+parallelsの組み合わせでvagrantを大変便利に利用していますが、各ゲストのdnsサーバーを変更したいときにちょっと困って何とかした話です。

問題

DHCPでアドレスを貰っている状態で、DHCP側で貰ったDNSのアドレスを変えたい時があります。今回はvagrant上のUbuntuマシンにsamba4 Domain Contorollerを実験的に入れて試している最中で、DNSだけをsambaで使うDNSサーバーへ変えたくなりました。
(なおvagrantのpublic networkの設定でstaticにはしていないです。)

普段、Ubuntu serverの固定IPで設定した時のDNSを変えたいときは、 /etc/network/interfaces ファイルにdns-nameserverを加えるだけです。自動的にresolvconf/etc/resolv.conf を書き換えてくれます。

$ sudo vim /etc/network/interfaces
iface br0 inet static
        address 192.168.3.50
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255
        gateway 192.168.3.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.3.1

DHCPで貰ったDNSサーバーを書き換える方法は、確か /etc/resolvconf/resolv.conf.d/base に必要なnameserverを足せばいいらしいです。 その後 sudo resolvconf -u を使うと更新されます。(Ubuntu 14.04ではこの操作で良いらしく、ubuntu 12.04までは sudo /etc/init.d/networking restart が必要だったはず。記憶はうろ覚えですが)

で、Vagrant-parallelsで作った(正確にはparallelsがプロバイダのparallels/ubuntu-14.04 というbox)Ubuntu 14.04では 、/etc/resolvconf/resolv.conf.d/base を編集しても反映されませんでした。

解決方法(回避方法?)

で、解決方法を見つけてからもしっくりこないのですが、 /etc/resolvconf/resolv.conf.d/head にnameserverを足しました。 sudo resolvconf -u を使うと反映されます。

vagrant@vagrant:~$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 192.168.3.10

vagrant@vagrant:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 192.168.3.10
nameserver 10.211.55.1 # ここからresolvconfが生成したもので、この行はvagrant側で振られたもの
nameserver 192.168.3.1 # vagrantのpublic networkの設定をしたネットワークから振られたもの
search localdomain

この例だと、headファイルにあるコメントの後のnameserverがheadファイルに追加したものになります。
resolvconfのDNSの解決方法は/etc/resolv.confの一番上にあるnameserverから解決しようとするので、これで使いたいDNSサーバーのアドレスを優先させることが出来ます。

必要なら、この作業をvangrant側で流し込めるスクリプト的なものにすればいいと思います。詳しくないのでやり方は割愛です。

謎が残るのは、baseに何かを追加しても反映されない所です。そもそもUbuntu 14.04がこういう仕様なのか、このBox(Parallels向けのBox)の仕様なのか、Vagnratでこうなってしまうのか、いまいちわからないです。だれか教えて><

参考

  • networking - override dns nameserver - Ask Ubuntu
  • Ubuntu 14.04上のman resolvconf (このmanpageにはbaseの使い方が上の説明通りに書かれているようでした。ただ反映されなかったということは、ubuntu側の問題ではないと思います)

スポンサードリンク

About Me

実家の自動車プレス金型設計業(sano-design.info)に所属。
また東海大学石井研究室(ishiilab.net)でたまにお手伝いしてます。
サイト制作/python/Ubuntu 作ったり扱います。 小さいガジェットがとっても好き。
最近は諸事情で家事業が多めです。

スポンサードリンク