CentOSで回転、タイムアウトなどのresolv.confオプションを永続化する方法は?


9

CentOSは/etc/resolv.conf定期的に行われた手動の変更をすべて消去します。Linuxのデフォルトは、妥当な時間内にフェイルオーバーするという点で不十分です(クエリネームサーバーは毎回同じ順序で、タイムアウトは5秒、再試行は2回です)。

したがって、最初のDNS resolv.confは基本的にクリティカルパスです。失敗した場合は、フェイルオーバーする前の10秒を見ている可能性があります。

これらのデフォルトは微調整可能ですが(resolv.confの manページを参照)、CentOSで変更を永続化し、再起動後も維持するにはどうすればよいですか?

回答:


12

答えはで見つけることができます/sbin/dhclient-script

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

しかし、RES_OPTIONSスクリプトがそれを取得するように設定できる場所はそれほど明白ではありません。検索ドメインなどの一部はifcfg-ethXファイルで設定できますが、リゾルバーオプションは他の場所で設定されます。あなたが望むファイルは実際に/etc/sysconfig/networkです。関連するオプションを設定するには、次の行のようなものをそのファイルに追加します。

RES_OPTIONS="rotate timeout:1 retries:1"

これは、タイムアウトを1秒に設定し、1回の再試行を使用して、毎回リストを順番に処理するのではなく、要求ごとにリゾルバーをローテーションするようにクライアントに指示します。

変更をすぐに有効にしたい場合は、service network restartコマンドを発行して、新しいもの/etc/resolv.confをすべてチェックしてください。これをテストしたときの私の様子は次のとおりです。

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1

1

受け入れられた答えは、レガシーネットワークスクリプトを使用する場合です。あなたが使用している場合にNetworkManagerをあなたも持っていない可能性があり/etc/sysconfig/network、そしてあなたがしなければ、それはまだによって管理される接続に使用されることはありませんNetworkManagerを

NetworkManagerを使用する場合

追加オプション、EX追加するrotateにはbond0

nmcli con mod bond0 +ipv4.dns-options rotate

そのオプションを削除するには:

nmcli con mod bond0 -ipv4.dns-options rotate

+あまりにオプションを変更するには良いです。NetworkManagerは、既存のオプションを検出して更新するのに十分スマートです。たとえば、タイムアウト値を変更します。

root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:3"

これは、値が削除のために無視され、必要でさえないことを意味します。タイムアウトを削除するには:

nmcli con mod bond0 -ipv4.dns-options timeout

タイムアウト値でも機能しますが、その値は無視されるため、削除するtimeout:5と他のタイムアウト値も削除されます。

NB:このに見ながら私が出会った、関連のバグで修正されたネットワーク・マネージャ v1.14.6v1.15.2-devのv1.16。問題が発生した場合は、まずネットワークマネージャーのバージョンを確認してください。


1
受け入れられた古い回答に新しい回答を追加する場合、質問と回答がどれだけ古いかを書き留めておくことをお勧めします。現在レガシーと見なされているのは、4年以上前の質問ではありませんでした。レガシーとしてタグ付けするのではなく、デフォルトがいつ変更されたか(おそらくCentOSのバージョン-8でしょうか?)または、自分のバージョンを再確認して回答し(新しいCentOSバージョンの場合、またはNetwork Managerを使用している場合など)、参照用にこの古いバージョンにリンクし直してください。
アダムC

古い方法はまだ有効かもしれませんが... NetworkManagerは長い間使用されていますが、DebianとCentOSの両方で古い方法を構成できます。
Thomas Guyot-Sionnest

0

nmcliコマンドではなくフラットファイルを使用してこれを行う必要がある場合(構成管理ツールなどを使用)、Red Hatは別のソリューションを提供します。

/etc/NetworkManager/dispatcher.d/15-resolvカスタム/etc/resolv.confを所定の場所にコピーするスクリプトを作成します。

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

NetworkManagerを再起動すると、このスクリプトが実行され、ファイルが独自のものに置き換えられます。

https://access.redhat.com/solutions/61921


0

NetworkManagerに/etc/resolv.confファイルをまとめて管理しないように指示できます。

  1. /etc/NetworkManager/conf.d/90-dns-none.conf次の内容のファイルを作成します。

    [main]
    dns=none
    
  2. NetworkManagerサービスをリロードします。

    systemctl reload NetworkManager
    

これが出てきたドキュメントには、/etc/resolv.confファイルへのシンボリックリンクで置き換えることを含む2番目の解決策があります。

これを読んでください:22. /etc/resolv.confファイルを手動で設定する


-1

追加するだけ

resolv_conf_options=rotate\ timeout:1\ retries:1

あなたの resolvconf.conf


あなたはそれがCentOSのオプションであると確信していますか(それを表示するdocs / somethingへのリンクを取得しました)?私はそれをFreeBSDオプションとUbuntuとして見ていますが、CentOSでそれが見つかりません
Adam C

これはopenresolvパッケージの一部です
Evgeny F

1
これは標準パッケージではないようです。CentOSのオプションではなく、特に制御された環境では、他の場所では悪いオプションではありません
Adam C

-3

前回購読したLinux VPSで同じ問題に直面しました。私がそれを解決した方法は、ファイルを不変にするためにchattr + iコマンドを使用することでした。/ etcフォルダーに移動し、resolv.confファイルに必要な変更を加えた後、これを実行します。

chattr + i resolv.conf

設定を元に戻す場合は、次のようにします。

chattr -i resolv.conf

参考のための完全なガイドライン:http : //boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/


DHCPからネームサーバーへの変更を取得できないため、これは潜在的な問題になります。変更は頻繁には行われませんが、引き続き機能させたいと思います
Adam C
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.