DHCPサーバから配布されたDNSサーバのIPアドレスを/etc/resolv.confに自動反映する


Table of Contents

1 目指すresolv.confの内容

192.168.11.2は内部ネットワーク(hiroom2.com)向けのDNS情報を管理し、192.168.11.1は外部ネットワークのDNS情報を管理しつつ外部ネットワーク向けのルーターとなっています。

これらの要求を満たすresolv.confは以下のようになります。

search hiroom2.comnameserver 192.168.11.2nameserver 192.168.11.1

2 DHCPサーバの設定

dhcpd.confにてIPアドレスや経路情報だけでなく、domain-nameでドメイン名を、domain-name-serversでDNSサーバのアドレスを配布します。

subnet 192.168.11.0 netmask 255.255.255.0 { option domain-name “hiroom2.com”; option domain-name-servers 192.168.11.2, 192.168.11.1; option routers 192.168.11.1;}

dhcpd.confとresolv.confの対応は以下にようにになります。

 

dhcpd.conf resolv.conf option domain-name serach option domain-name-servers nameserver

 

3 Fedora/CentOSのクライアントの設定

ifcfg-xxxにてPEERDNSをyesに設定することで、DHCPサーバから配布されたDNS情報を用いるようになります。

インストールした状態で以下の設定になっていると思います。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0TYPE=”Ethernet”BOOTPROTO=”dhcp”DEFROUTE=”yes”PEERDNS=”yes”PEERROUTES=”yes”DEVICE=”eth0″ONBOOT=”yes”NAME=”eth0″

なおifup-postスクリプトにてPEERDNS、DNS1、DNS2等を判定してresolv.confを作成しています。

/etc/sysconfig/network-scripts/ifup-post

4 Debianのクライアントの設定

インストールしたままのNetworkManager.confで問題ないはずです。

$ sudo cat /etc/NetworkManager/NetworkManager.conf[main]plugins=ifupdown,keyfile[ifupdown]managed=false

5 Ubuntuのクライアントの設定

インストールしたままのNetworkManager.confだとdnsmasqを用いるようになっており、DHCPサーバから配布されたDNSサーバが反映されません。

$ 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# OVERWRITTENnameserver 127.0.1.1search hiroom2.com

以下のようにdnsmasqをコメントアウトし、network-managerを再起動します。

$ sudo diff -uprN /etc/NetworkManager/NetworkManager.conf{.org,}— /etc/NetworkManager/NetworkManager.conf.org 2016-04-28 01:07:32.015679999 +0900+++ /etc/NetworkManager/NetworkManager.conf 2016-04-28 01:07:45.307679999 +0900@@ -1,6 +1,6 @@ [main] plugins=ifupdown,keyfile,ofono-dns=dnsmasq+#dns=dnsmasq [ifupdown] managed=false$ sudo systemctl restart network-manager

目指していた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# OVERWRITTENnameserver 192.168.11.2nameserver 192.168.11.1search hiroom2.com

Android | Linux | SDL - Narrow Escape