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.x | DHCPサーバにアクセスしてサーバの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.x | resolv.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.x | resolv.conf.saveが作成されない DHCPサーバから取得したDNSのIPを設定する |
BOOTPROTO=DHCP PEERDNS=yes DNS1=y.y.y.y | BOOTPROTO=none PEERDNS=no | nameserver y.y.y.y | resolv.conf.saveが作成される |
BOOTPROTO=DHCP PEERDNS=yes | BOOTPROTO=none PEERDNS=yes DNS1=z.z.z.z | nameserver z.z.z.z | resolv.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.z | resolv.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.y | resolv.conf.saveが作成される |
BOOTPROTO=none PEERDNS=yes DNS1=y.y.y.y | BOOTPROTO=none PEERDNS=yes DNS1=z.z.z.z | nameserver z.z.z.z | resolv.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.z | resolv.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.y | resolv.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.x | resolv.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.x | resolv.conf.saveが作成される DHCPサーバから取得したDNSのIPを設定する 「PEERDNS=yes」のifcfgスタイルファイルが複数ある場合は、あとに読み込まれたNWデバイスの設定を優先 ※「ip addr show」コマンドで番号が高いものが、あとに読み込まれたNWデバイス |
BOOTPROTO=none PEERDNS=yes | BOOTPROTO=none PEERDNS=yes | 設定なし | resolv.conf.saveが作成されない |
コメント