【RHEL】PEERDNSとDNS設定(resolv.conf)の関係

【RHEL9】PEERDNSとDNS設定(resolv.conf)の関係 Linuxサーバ

RHELサーバでNW設定(IPアドレス設定)を行うときにDNS設定は必須となります。
DNS設定は「/etc/resolv.conf」ファイルで定義され、ファイルが保存されると即反映します。
但し、「/etc/resolv.conf」ファイルを直接修正して設定することは推奨されていません。

「/etc/resolv.conf」の設定は、NW設定を行う「ifcfgスタイル」ファイル内の「PEERDNS」パラメーターで行います。

「ifcfgスタイル」ファイルのパラメーターである「PEERDNS」を用いた、正しいDNS設定方法について解説します。


スポンサーリンク

PEERDNSパラメーターについて

  • 「ifcfgスタイル」ファイルでNW設定を行うときに利用するパラメータの1つになります。

  • DHCPサーバからDNSの設定情報を取得するかしないか?決めるパラメーターになります。
    ※「BOOTPROTO」パラメーターと深く関係しています。

  • 他のパラメータ(「BOOTPROTO」・「DNS1とDNS2(DNS3)」)と連動してDNSの設定をします。

  • NWデバイス毎に設定できます。すなわち、「ifcfgスタイル」ファイル毎に設定できます。



PEERDNSによる「resolv.conf」ファイルの設定方法について

「PEERDNS」パラメーターは、「BOOTPROTO」・「DNS1とDNS2(DNS3)」パラメータの設定とも深く関わっており、「resolv.conf」ファイルの設定に影響をあたえます。

これら、DNSの設定に影響をあたえる3つのパラメーター
 ・「PEERDNS」
 ・「BOOTPROTO」
 ・「DNS1とDNS2(DNS3)」

これら3つのパラメーターの設定の組合せで、「resolv.conf」がどのように変化するのかをまとめました。

■前提条件
/etc/resolv.conf.saveファイルがない事(存在していれば事前に削除)
/etc/resolv.confファイルに設定が入っていない事


「NetworkManager」サービスを利用時【NWデバイスが1つ】

NW設定を「NetworkManager」で管理した場合のDNS設定について動作検証した結果になります。

利用頻度「ifcfgスタイル」
設定
「/etc/resolv.conf」解説
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
「BOOTPROTO=none」となっており、DHCPサーバへアクセスしません。かつ、「PEERDNS=no」となっているため、DHCPからDNSの設定情報は入手しません。

「ifcfgスタイル」に設定されたDNS情報を取得します。
そのDNSのIPが「y.y.y.y」と「z.z.z.z」となり、「resolv.conf」へ反映れます。
BOOTPROTO=DHCP
PEERDNS=yes
nameserver x.x.x.xDHCPサーバにアクセスしてサーバのNW設定を行うと共にDNSの設定情報も取得します。

DHCPサーバから自動的にDNSのIPを取得して入手したDNSのIPが「x.x.x.x」となり「resolv.conf」へ反映されます。
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
「PEERDNS=yes」であっても「BOOTPROTO=none」となっており、DHCPサーバへアクセスしません。
DHCPサーバからDNSの設定情報は入手しません。

「ifcfgスタイル」内で明示的にDNS設定をする必要があります。
そのDNSのIPが「y.y.y.y」と「z.z.z.z」となり、「resolv.conf」へ反映れます。

※「PEERDNS」定義しない場合は、デフォルト設定で「yes」となります。結果、利用頻度が「◎」と同じ設定になります。
BOOTPROTO=DHCP
PEERDNS=no
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
DHCPサーバにアクセスしてサーバのNW設定を行いますが、DNSの設定情報は入手しません。

「ifcfgスタイル」内で明示的にDNS設定をする必要があります。
そのDNSのIPが「y.y.y.y」と「z.z.z.z」となり、「resolv.conf」へ反映れます。
×BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
nameserver x.x.x.x
DHCPサーバにアクセスしてサーバのNW設定を行うと共にDNSの設定情報も取得します。
また、「ifcfgスタイル」内で明示的にDNS設定も行っている為、こちらのDNS設定も反映されます。

優先順位は
「明示的なDNS設定」->「DHCPから入手したDNS情報」となります。

DNSのIPが
「明示的なDNS設定」->「y.y.y.y」と「z.z.z.z」
「DHCPから入手したDNS情報」->「x.x.x.x」
となり、「resolv.conf」へ反映れます。

このような設定はしません。
××BOOTPROTO=DHCP
PEERDNS=no
設定なしこのような設定はしません。
××BOOTPROTO=none
PEERDNS=yes
設定なしこのような設定はしません。


「network-scripts」サービスを利用時【NWデバイスが1つ】

NW設定を「NetworkManager」サービスを起動せずに、「network-scripts」サービスを起動して管理した場合のDNS設定について動作検証した結果になります。
※主流は、「NetworkManager」サービスを起動して利用するのが一般的になっており、RHEL9からは「network-scripts」サービスは廃止されて利用できません。

利用頻度「ifcfgスタイル」
設定
「/etc/resolv.conf」解説
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
「NetworkManager」サービス起動時と挙動は同じです。

※「PEERDNS」定義しない場合は、デフォルト設定で「yes」となります。
BOOTPROTO=DHCP
PEERDNS=yes
nameserver x.x.x.x「NetworkManager」サービス起動時と挙動は同じです。
×BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
DNS2=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
「NetworkManager」サービス起動時と挙動は異なります。

DHCPサーバからDNS情報を取得する設定となっていますが、DNSの設定情報は取得しません。
「ifcfgスタイル」内で明示的にDNS設定も行っている為、そちらの設定のみを利用します。


このような設定はしません。
××BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
DNS2=z.z.z.z
設定なし「NetworkManager」サービス起動時と挙動は異なります。

このような設定はしません。
××BOOTPROTO=DHCP
PEERDNS=no
設定なし「NetworkManager」サービス起動時と挙動は同じです。

このような設定はしません。
××BOOTPROTO=none
PEERDNS=yes
設定なし「NetworkManager」サービス起動時と挙動は同じです。

このような設定はしません。



PEERDNSを利用してDNS設定する時の注意事項

  • 直接、「/etc/resolv.conf」ファイルを修正しません。

  • 「ifcfgスタイル」とは
    「/etc/sysconfig/network-scripts/ifcfg-【NWデバイス名】」
    でNW設定するファイルを指します。

  • NW設定を「ifcfgスタイル」でおこなったときに「PEERDNS」を利用します。

  • 「ifcfgスタイル」の設定に合わせて「resolv.conf」が書き変わります。

  • 「ifcfgスタイル」ファイルに「PEERDNS」を設定しない(記述しない)場合は、「PEERDNS=yes」と同等の扱いとなり、「yes」がデフォルトになります。

  • 「ifcfgスタイル」の設定情報が反映されたタイミング(NWデバイスの再読込 or サーバ再起動)で「resolv.conf」更新されますので、「■前提条件」に注意する。

  • DNSの設定は「3つ」までとなっており、「4つ」以上を設定してもサポートされません。
    DNS1=y.y.y.y
    DNS2=z.z.z.z
    DNS3=w.w.w.w
    DNS4=a.a.a.a <-設定できない

  • RHEL9以降は、NW設定のデフォルトは「ifcfgスタイル」ではなく「キーファイル」になっており、設定方法が異なります。
    必ず、NW設定が「ifcfgスタイル」ファイルを利用しているかを確認してからDNS設定する必要があります。



【検証】複数の「ifcfgスタイル」にDNS設定した場合の「resolv.conf」の挙動について

通常は、1つの「ifcfgスタイル」ファイルにDNS設定を行うだけでよいのですが、複数の「ifcfgスタイル」ファイルにDNS設定を行った場合にどのようになるか?検証しました。
※意図したDNS設定にならないケースがあることを確認できます。

■前提条件
サーバにNWデバイスが「eth0」と「eth1」の2つNWデバイスが追加されている
/etc/resolv.conf.saveファイルがない事(存在していれば事前に削除)
/etc/resolv.confファイルに設定が入っていない事

「NetworkManager」サービスを利用時【NWデバイスが2つ】

NW設定を「NetworkManager」で管理した場合のDNS設定について動作検証した結果になります。

ifcfgスタイル
1番目のNIC:eth0
ifcfgスタイル
2番目のNIC:eth1
「/etc/resolv.conf」備考
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=DHCP
PEERDNS=yes
nameserver x.x.x.x「x.x.x.x」はDHCPサーバから取得したDNS設定情報になります。

同じDHCPサーバから取得したDNS情報の為、集約されて「resolv.conf」に反映されます。

※NIC毎に異なるDHCPサーバへアクセスした場合は、それぞれのDNS設定が反映されます。
「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver x.x.x.x
nameserver z.z.z.z
「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。

「x.x.x.x」はDHCPサーバから取得したDNS設定情報になります。
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver y.y.y.y
nameserver x.x.x.x
nameserver z.z.z.z
「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。

「x.x.x.x」はDHCPサーバから取得したDNS設定情報になります。

※NWデバイス内で明示的に設定されたものとDHCPサーバから取得されたDNS情報があれば、明示的に設定された方が優先されます。
BOOTPROTO=DHCP
PEERDNS=no
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver z.z.z.z「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。

※eth0にDNS設定はなし
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=DHCP
PEERDNS=no
nameserver x.x.x.x「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。

「x.x.x.x」はDHCPサーバから取得したDNS設定情報になります。

※eth1にDNS設定はなし
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=z.z.z.z
nameserver y.y.y.y
nameserver z.z.z.z
nameserver x.x.x.x
「ip addr show」コマンドで番号が低いNWデバイスの設定から順番に設定されます。

「x.x.x.x」はDHCPサーバから取得したDNS設定情報になります。

※NWデバイス内で明示的に設定されたものとDHCPサーバから取得されたDNS情報があれば、明示的に設定された方が優先されます。


「network-scripts」サービスを利用時【NWデバイスが2つ】

NW設定を「NetworkManager」サービスを起動せずに、「network-scripts」サービスを起動して管理した場合のDNS設定について動作検証した結果になります。
※主流は、「NetworkManager」サービスを起動して利用するのが一般的になっており、RHEL9からは「network-scripts」サービスは廃止されて利用できません。

ifcfgスタイル
1番目のNIC:eth0
ifcfgスタイル
2番目のNIC:eth1
「/etc/resolv.conf」備考
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver x.x.x.xresolv.conf.saveが作成されない
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
設定なしresolv.conf.saveが作成されない
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
設定なしresolv.conf.saveが作成されない
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=none
PEERDNS=no
nameserver x.x.x.xresolv.conf.saveが作成されない

DHCPサーバから取得したDNSのIPを設定する
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
nameserver y.y.y.yresolv.conf.saveが作成される
BOOTPROTO=DHCP
PEERDNS=yes
BOOTPROTO=none
PEERDNS=yes
DNS1=z.z.z.z
nameserver z.z.z.zresolv.conf.saveが作成される

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=z.z.z.z
nameserver z.z.z.zresolv.conf.saveが作成される

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
nameserver y.y.y.yresolv.conf.saveが作成される
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=yes
DNS1=z.z.z.z
nameserver z.z.z.zresolv.conf.saveが作成される

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=yes
DNS1=z.z.z.z
nameserver z.z.z.zresolv.conf.saveが作成される
BOOTPROTO=none
PEERDNS=yes
BOOTPROTO=none
PEERDNS=no
DNS1=z.z.z.z
設定なしresolv.conf.saveが作成されない
BOOTPROTO=none
PEERDNS=no
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=yes
設定なしresolv.conf.saveが作成されない
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=none
PEERDNS=yes
nameserver y.y.y.yresolv.conf.saveが作成される

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先するが設定するDNS情報がなければ、DNS設定がある方を優先する
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=none
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=DHCP
PEERDNS=yes
nameserver x.x.x.xresolv.conf.saveが作成される

DHCPサーバから取得したDNSのIPを設定する

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=DHCP
PEERDNS=yes
DNS1=y.y.y.y
BOOTPROTO=DHCP
PEERDNS=yes
nameserver x.x.x.xresolv.conf.saveが作成される

DHCPサーバから取得したDNSのIPを設定する

「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先
※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス
BOOTPROTO=none
PEERDNS=yes
BOOTPROTO=none
PEERDNS=yes
設定なしresolv.conf.saveが作成されない




コメント

タイトルとURLをコピーしました