AlmaLinuxでネットワーク設定変更について記載します。
IP Addressやホスト名などを変更しようとするとき、最も簡単なのはnmtuiコマンドを使用する方法です。
# nmtui |
GUI感覚で操作が可能です。設定を変更した場合、同じ画面からそれをアクティベートすることも可能なのですが、IPアドレスを変えた場合、一旦接続が切れてしまうのでCLIから行うことを奨励します。
# systemctl restart NewtworkManager |
DNSの設定も上記のnmtuiから変更可能なのですが、従来からLinuxでは/etc/resolv.confにDNSのIPアドレスを記載する文化がありました。
これは今も変わっておりませんが、NetworkManagerによって管理されており、記載を書き換えれば変更は有効になるもののOSを再起動するともとに戻ってしまいます。
resolv.confにはtimeoutオプションなども記載可能なのでこちらで制御したい場合は以下の記載をする必要があります。
# vi /etc/NetworkManager/NetworkManager.conf [main] dns=none ← 追記 |
そしてNetworkManagerを再起動します。
# systemctl restart NetworkManager |
これで直接resolv.confが編集可能で、なおかつ再起動しても設定が維持されます。
resolv.confに指定可能なDNSサーバは最大3つまでです。また、option項目としてtimeoutとattemptsを設定可能です。それぞれの意味は下記のようになります。
項目 | 意味 |
timeout | 「レゾルバが他のネームサーバで問い合わせをリトライする前に、リモートネームサーバからの応答を待つ時間」を設定する。単位は秒で、デフォルトは RES_TIMEOUTである(現状では5秒、<resolv.h>を参照) |
attempts | 「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、ネームサーバに問い合わせを行う回数」を設定する。デフォルトは RES_DFLRETRY 回である (現状では 2回、<resolv.h> を参照) |
timeoutに関しては指定したDNSが丸ごと死んだのかポートだけ空いていないのかによって挙動が異なります。大抵の場合、DNSのポートだけ死ぬということはまずなく、丸ごと死亡の場合がほとんどで理論的にセカンダリまでの切り替わり時間はデフォルトで以下の計算式になります。
5秒(timeout) × 2回(attempts) = 10秒
以下のコマンドで試して確認してみました。
# time ping www.yahoo.co.jp -c1 PING edge.g.yimg.jp (182.22.24.124) 56(84) bytes of data. 64 bytes from 182.22.24.124 (182.22.24.124): icmp_seq=1 ttl=56 time=11.9 ms --- edge.g.yimg.jp ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 11.980/11.980/11.980/0.000 ms real 0m10.038s user 0m0.000s sys 0m0.005s |
理論値通りの結果が出ています。このtimeoutとattemptsを変更することが可能です。resolv.confに次のように設定します。
# vi /etc/resolv.conf nameserver xx.xx.xx.xx nameserver yy.yy.yy.yy options timeout:3 attempts:1 |
この状態で再度実行すると以下の結果となりました。
# time ping www.yahoo.co.jp -c1 PING edge.g.yimg.jp (182.22.24.124) 56(84) bytes of data. 64 bytes from 182.22.24.124 (182.22.24.124): icmp_seq=1 ttl=56 time=11.9 ms --- edge.g.yimg.jp ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 11.980/11.980/11.980/0.000 ms real 0m6.048s user 0m0.000s sys 0m0.005s |
てっきり3秒×1回=3秒になるのかなと思ったのですが6秒でした。attemptsを2にしても結果は6秒だったのでひょっとしたらattemptsの最小値は2なのかもしれません。このあたりご存知の方がおられたらぜひ教えてください。
またresolv.confのnameserverは記載した順番に引きにいくのですが、これをランダムに引きにいくようにして分散させることができます。これもoptionsで指定可能で以下のように記載します。
# vi /etc/resolv.conf nameserver xx.xx.xx.xx nameserver yy.yy.yy.yy options timeout:3 attempts:1 options rotate |
これらのオプションはDNSサーバが死んだときのことを考えると設定しておいたほうが安全だと言えそうです。