CentOS 7のネットワーク管理基礎(前編)
/etc/resolv.confファイルの自動更新を抑制する方法
CentOS 7において、参照先のDNSサーバーのIPアドレスがNICに設定されている場合、デフォルトでは、/etc/resolv.confファイルが自動的に更新されるようになっています。しかし、環境によっては、NICの参照先DNSサーバーのIPアドレスの変更に伴う/etc/resolv.confファイルの自動更新を無効にしたい場合があります。以下では、/etc/resolv.confファイルの自動更新を無効にする手順を紹介します。まず、ネットワークインタフェースのeno1に設定されている参照先のDNSサーバーのIPアドレスを確認しておきます。
# nmcli device show eno1 |grep DNS IP4.DNS[1]: 10.0.0.254
上記により、eno1に設定されている参照先のDNSサーバーのIPアドレスは、10.0.0.254であることがわかります。デフォルトでは、/etc/resolv.confファイルがNetworkManagerによって自動的に生成されますので、上記のIPアドレスが/etc/resolv.confファイルに記述されているはずです。
# cat /etc/resolv.conf ... nameserver 10.0.0.254
/etc/resolv.confファイルが自動的に更新されないようにするには、/etc/NetworkManager/NetworkManager.confファイルの[main]の下にdns=noneを記述します。
# vi /etc/NetworkManager/NetworkManager.conf [main] plugins=ifcfg-rh dns=none
次に、eno1が参照するDNSサーバーのIPアドレスを変更しても、/etc/resolv.confファイルが自動的に更新されていないかを確認します。まず、eno1が参照するDNSサーバーのIPアドレスを10.0.0.253に変更します。
# nmcli connection modify eno1 ipv4.dns "10.0.0.253" # nmcli device show eno1 |grep DNS IP4.DNS[1]: 10.0.0.253
NetworkManagerと、ネットワークサービスを再起動します。
# systemctl restart NetworkManager # systemctl restart network
ネットワークインタフェースのeno1に対して新しく設定した参照先DNSサーバーのIPアドレスである10.0.0.253が、/etc/resolv.confファイルに自動的に設定されていないことを確認します。
# cat /etc/resolv.conf ... nameserver 10.0.0.254
インタフェースの接続の追加と削除
インタフェースの接続の追加と削除も、nmcliコマンドで行うことが可能です。先程、IPアドレスの変更を行ったばかりのインタフェースeno1を使って操作例を示します。まず、インタフェースの状況を確認します。
# nmcli device DEVICE TYPE STATE CONNECTION eno1 ethernet connected eno1 eno2 ethernet connected eno2 eno3 ethernet unavailable -- eno4 ethernet unavailable -- lo loopback unmanaged --
インタフェースeno1の接続を削除してみます。接続の削除は、nmcli connectionに「delete」を付与し、削除するインタフェース名を指定します。
# nmcli connection delete eno1 # nmcli device DEVICE TYPE STATE CONNECTION eno2 ethernet connected eno2 eno1 ethernet disconnected -- ←接続が切断されていることがわかる eno3 ethernet unavailable -- eno4 ethernet unavailable -- lo loopback unmanaged --
インタフェースeno1は接続が切断され、設定したIPアドレス等も破棄されます。インタフェースeno1に新規に接続を追加し、新たなIPアドレスを付与してみましょう。接続の追加は、nmcli connectionに「add type」を付与します。今回は、1GbEの有線のイーサネットですので、typeとしてethernetを指定します。インタフェース名は、ifnameで指定します。接続名はcon-nameで指定します。今回、接続名は、インタフェース名と同じeno1を指定することにします。
# nmcli connection add type ethernet ifname eno1 con-name eno1 Connection 'eno1' (8724b120-0270-40dc-982a-8a1be7ea1340) successfully added.
eno1のデバイスに対する接続が追加されているかを確認します。
# nmcli device DEVICE TYPE STATE CONNECTION eno2 ethernet connected eno2 eno1 ethernet connecting (getting IP configuration) eno1 ←接続が追加されている eno3 ethernet unavailable -- eno4 ethernet unavailable -- lo loopback unmanaged --
接続が追加されたら、インタフェースeno1に対して、IPアドレス等の設定が可能になります。今回は、固定IPアドレスとして192.168.0.82/24、ゲートウェイアドレスとして192.168.0.254を設定してみます。固定IPアドレスを設定するには、ipv4.method manualを付与します。
# nmcli connection modify eno1 ipv4.method manual ipv4.addresses "192.168.0.82/24 192.168.0.254"
設定を反映させます。
# nmcli connection down eno1 && nmcli connection up eno1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
インタフェースにeno1に固定IPアドレスが付与されていることを確認します。
# nmcli device show eno1 GENERAL.DEVICE: eno1 GENERAL.TYPE: ethernet GENERAL.HWADDR: 2C:76:8A:5D:F3:6C GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: eno1 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/13 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 192.168.0.82/24, gw = 192.168.0.254 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36c/64, gw = ::
上記の固定IPアドレスが設定されたインタフェースeno1の設定ファイルは、/etc/sysconfig/network-scripts/ifcfg-eno1として生成されています。
# cat /etc/sysconfig/network-scripts/ifcfg-eno1 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eno1 UUID=8724b120-0270-40dc-982a-8a1be7ea1340 DEVICE=eno1 ONBOOT=yes IPADDR0=192.168.0.82 PREFIX0=24 GATEWAY0=192.168.0.254 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
nmcliコマンドでホスト名の設定を行う
CentOS 6までは、ホスト名の設定を/etc/sysconfig/networkファイルに記述していましたが、CentOS 7では、/etc/hostnameファイルに記述するようになりました。/etc/hostnameファイルを直接編集してもよいのですが、CentOS 7では、nmcliコマンドでホスト名を設定します。以下は、nmcliコマンドで、ホスト名を設定する例を紹介します。まず、現在、設定されているホスト名を表示します。
# nmcli general hostname centos70n02.jpn.linux.hp.com
ホスト名を「centos70n254.jpn.linux.hp.com」に変更します。
# nmcli general hostname centos70n254.jpn.linux.hp.com
ホスト名が変更されたかどうかをhostnameコマンドで確認します。また、/etc/hostnameファイルの中身も確認します。
# hostname centos70n254.jpn.linux.hp.com # cat /etc/hostname centos70n254.jpn.linux.hp.com
このように、IPアドレス、デフォルトゲートウェイ、DNS、ルーティング、ホスト名等の設定をnmcliコマンドだけで一通り行うことができますので、設定ファイルのパラメータの記述方法や複数のコマンドを覚える負担を減らすことができます。しかも、nmcliコマンドは、それに続く引数の候補をキーボード入力のTABキー補完で表示してくれますので、従来の管理手法に比べ、習得のハードルが大幅に下がっています。nmcliコマンドに慣れると設定ファイルの記述方法を覚える必要がなくなるため、非常に便利です。是非nmcliコマンドを使いこなしてみて下さい。
nmtuiによる設定
先述のnmcliコマンドは、大量の管理対象サーバーのネットワーク設定を自動化する場合に威力を発揮しますが、管理対象サーバーが少数で、直感的な操作で1台ずつ設定を行いたいという場合は、nmtuiを利用するのがよいでしょう。nmtuiは、ネットワーク設定を行うサービスであるNetworkManagerデーモンに対して様々な指示を行うことでネットワークの設定を行うアプリケーションです。nmtuiは、GNOMEターミナルやTera Term等のターミナルエミュレータ内で起動すると、テキストベースの分かりやすいGUIが起動します。GUIでは、メニューの選択や空欄に値を入れることで、簡単にネットワーク設定を行うことが可能となっています。nmtuiの起動は、コマンドラインからnmtuiを入力します。nmtuiは、NetworkManager-tuiパッケージに含まれています。
# nmtui
nmtuiのGUIがターミナルエミュレータ内に表示されます。設定画面内で、キーボードの上下左右キーを使ってカーソルを合わせ、パラメータを入力することができます。