DHCP で取得した DNS サーバーの IP アドレスを確認

https://fishrimper.blogspot.hk/2014/07/dhcp-dns-ip.html



Ubuntu Desktop のデフォルト設定だと DHCP で割り当てられた DNS サーバーの IP アドレスを簡単に確認できなかったので調べてみました。

環境
Ubuntu 14.04 Desktop 日本語 Remix

一般的に DNS の IP は resolv.conf に書いてあるので、見てみると

$ 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 127.0.1.1

というように自 PC (127.0.1.1) になっています。デフォルト設定だと NetworkManager が有効になっていて、ローカルで dnsmasq が DNS キャッシュサーバーとして動いているようです。

以下のように 53番ポートをリッスンしているサービスが dnsmasq であることが確認できます。

$ sudo lsof -i:53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 1274 nobody 4u IPv4 12279 0t0 UDP MyPC:domain
dnsmasq 1274 nobody 5u IPv4 12280 0t0 TCP MyPC:domain (LISTEN)

DHCP で割り当てられた DNS にはこの dmsmasq が問い合わせをしているはずですが、どうやって dnsmasq に DNS の IP を渡しているのかいまいちわかりません。

いろいろファイルを探してみると

/var/lib/NetworkManager/dhclient-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX-wlan0.lease

このファイルに DNS の IP を含む DHCP で得られた情報が書かれているようです。

また、NetworkManager の設定を変更して dnsmasq を使わないように設定すると /etc/resolv.conf に DNS の IP が出てきます。

まず、以下のように設定ファイルを変更します。

$ pwd
/etc/NetworkManager

$ diff -u NetworkManager.conf.org NetworkManager.conf

      • NetworkManager.conf.org 2014-07-06 22:23:50.756556963 +0900
      1. NetworkManager.conf 2014-07-08 21:40:07.869708314 +0900

@@ -1,6 +1,5 @@
[main]
plugins=ifupdown,keyfile,ofono

  • dns=dnsmasq

[ifupdown]
managed=false

NetworkManager を再起動

$ sudo restart network-manager
network-manager start/running, process 3249

resolv.conf に DCHP で取得した DNS の IP が出てきました。

$ 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 xx.xx.xx.xx

確認後は設定を戻して NetworkManager を再起動しときます。