CentOS 7のネットワーク管理基礎(前編)

この連載が、書籍『CentOS 7 実践ガイド』になりました!
IT技術者のための現場ノウハウ CentOS 7 実践ガイド
CentOS 7を取り巻く市場動向、サーバーシステムの選定、システム設計、構築手順など
今回は、CentOS 7のネットワーク設定について取り上げます。新しい設定ツールの登場や、従来のCentOS 6まで慣れ親しんだネットワーク関連の基本的なコマンド群の使用が非推奨になるなど、様々な変更点があります。CentOS 7から一新されたネットワークの具体的な設定手順、Tips等をご紹介します。
CentOS 7のネットワーク管理基礎
CentOS 7におけるネットワーク管理では、NetworkManagerによって行います。CentOS 6系では、Network Administration Toolに含まれるsystem-config-networkを使った管理やファイルを直接編集する運用形態が一般的でしたが、CentOS 7では、NetworkManagerを使った管理手法が推奨になりました。従来のNetworkManagerは、全てのネットワーク機能を制御できるわけではなかったため、/etc/sysconfig/network-scripts/ifcfg-ethXファイル等を直接編集しサービスの起動や停止を行う運用が一般的でした。これに対し、CentOS 7のNetworkManagerは、ネットワーク関連の操作が大幅に強化され、/etc/sysconfig/network-scripts/ifcfg-ethXファイルを直接編集することなくコマンドラインやGUIツールによって設定ファイルを生成する運用方法に改められています。また、NICに付与されるインタフェース名の管理についても、従来のCentOS 6までとは全く異なるスキームが採用されています。CentOS 7におけるsystemd及びudevdは、NICのインタフェース名に対する複数の命名体系をサポートしています。インタフェース名は、ファームウェアやサーバーのオンボードに搭載されているNICのトポロジーやロケーション情報によって異なります。CentOS 7におけるudevによるネットワークインタフェースの命名体系をまとめると以下のようになります。
命名体系 | 例 |
---|---|
オンボード・デバイスに対応するインデックス番号を組み込んだ名前 | eno1、eno2 |
PCI Expressホットプラグスロットインデックス番号を組み込んだ名前 | ens1、ens2 |
ハードウェアのコネクタの物理位置を組み込んだ名前 | enp2s1、enp2s2 |
インタフェースのMACアドレスを組み込んだ名前 | enx78f2e1ba38c2 |
従来のカーネルネイティブの命名体系 | eth0、eth1 |
CentOS 7におけるNICのインタフェース名の命名体系にはいくつかのタイプが存在します。以下は、命名体系をタイプ別にまとめたものです。
種類 | フォーマット |
---|---|
オンボード上にあるデバイス番号 | o |
ホットプラグスロットのインデックス番号 | s |
MACアドレス値 | x |
PCIのロケーション | p |
USBポート番号チェイン | p |
CentOS 7のインストーラの時点において、どの命名体系が利用されているかを確認することができます。
CentOS 7におけるネットワークインタフェース名は、永続的に付与されます。この永続的な命名のことをConsistent Network Device Namingと言います。デフォルトでは、 Predictable Network Interface Namesが利用され、一般的なx86サーバーに搭載されているオンボードのNICは、 eno1、eno2という名前が付与されます。拡張カードスロットに装着するNICの場合は、ens1、ens2、あるいは、ens7f0, ens7f1などの名前が付与されます。これらは、従来のbiosdevnameと同様に物理的な位置を示しています。例えば、オンボードの4ポートNICのeno1、 eno2、eno3、eno4は、HP ProLiant Gen8サーバーの筺体の背面に印字されているNIC1、NIC2、NIC3、NIC4に対応します。さらに、拡張カードスロットに装着したNICのens7f0、ens7f1は、それぞれサーバー筺体内の拡張スロット7番に装着したカードのポート1番とポート2番です。拡張カードスロットに装着したデバイスの位置が判別不可能の場合、PCIバス番号を元に、enp2s1, enp2s2のように命名されます。CentOS 6までの従来の命名体系と大きく異なるため、インタフェース名の文字列を基にした独自のスクリプト等を運用管理に組み込んでいる場合は、注意が必要です。このため、従来のNICのインタフェース名で慣れ親しんだインタフェース名で利用したい場合があります。CentOS 7におけるNICのインタフェース名を自動的に命名される機能を無効にするには、ブートパラメータにnet.ifnames=0を引き渡す事で可能です。また、ブートパラメータにbiosdevname=1を付与すると、従来のbiosdevnameによるNICのインタフェース名を利用する事も可能です。

図2:CentOS 7のインストーラで認識されているHP ProLiant SL2500 Gen8サーバーのオンボードNICの様子。ブートパラメータとしてbiosdevname=1を付与しているため、biosdevnameによるインタフェース名が付与されている
CentOS 7のインストール後、NICに対する命名体系を知るには、/sys/class/net/ディレクトリの下にあるシンボリックリンクを確認します。
# ls -l /sys/class/net/ lrwxrwxrwx. 1 root root 0 9月 19 02:03 eno1 -> ../../devices/pci0000:00/0000:00:1c.0/0000:03:00.0/net/eno1 lrwxrwxrwx. 1 root root 0 9月 19 02:03 eno2 -> ../../devices/pci0000:00/0000:00:1c.0/0000:03:00.1/net/eno2 lrwxrwxrwx. 1 root root 0 9月 19 02:03 lo -> ../../devices/virtual/net/lo lrwxrwxrwx. 1 root root 0 9月 19 02:03 virbr0 -> ../../devices/virtual/net/virbr0 lrwxrwxrwx. 1 root root 0 9月 19 02:03 virbr0-nic -> ../../devices/virtual/net/virbr0-nic
上記の場合は、HP ProLiant SL2500 Gen8のオンボードに搭載されているIntel社製のギガビットイーサネットのネットワークカードがeno1、eno2として登録されていることがわかります。ブートパラメータにnet.ifnames=0を付与している場合は、NICのインタフェース名を自動的に命名しないため、ethX等の表記になります。以下は、オンボードにBroadcom社製の4ポートNICを搭載したHP ProLiant DL385 Gen8にCentOS 7をインストールし、ブートパラメータにnet.ifnames=0を付与した状態でNICの命名体系を確認した結果の例です。
# ls -l /sys/class/net/ lrwxrwxrwx. 1 root root 0 10月 7 06:01 br0 -> ../../devices/virtual/net/br0 lrwxrwxrwx. 1 root root 0 10月 7 06:01 docker0 -> ../../devices/virtual/net/docker0 lrwxrwxrwx. 1 root root 0 10月 7 06:01 eth0 -> ../../devices/pci0000:00/0000:00:0c.0/0000:04:00.0/net/eth0 lrwxrwxrwx. 1 root root 0 10月 7 06:01 eth1 -> ../../devices/pci0000:00/0000:00:0c.0/0000:04:00.1/net/eth1 lrwxrwxrwx. 1 root root 0 10月 7 06:01 eth2 -> ../../devices/pci0000:00/0000:00:0c.0/0000:04:00.2/net/eth2 lrwxrwxrwx. 1 root root 0 10月 7 06:01 eth3 -> ../../devices/pci0000:00/0000:00:0c.0/0000:04:00.3/net/eth3 lrwxrwxrwx. 1 root root 0 10月 7 06:01 lo -> ../../devices/virtual/net/lo lrwxrwxrwx. 1 root root 0 10月 7 06:01 virbr0 -> ../../devices/virtual/net/virbr0 lrwxrwxrwx. 1 root root 0 10月 7 06:01 virbr0-nic -> ../../devices/virtual/net/virbr0-nic
nmcliコマンドの基礎
nmcli(Network Manager Command Line Interface)は、CentOS 7におけるネットワークの設定を行うNetworkManagerの基本コマンドです。nmcliコマンドには、以下のパラメータが用意されています。
connection | 接続の設定 |
---|---|
device | デバイス管理 |
general | ホスト名設定、ロギング、権限操作、状態の表示 |
networking | コネクティビティのチェック、有効化、無効化の管理 |
radio | ワイヤレスネットワークの設定の有効化、無効化の管理 |
以下では、イーサネットに対応した物理NICに対するインタフェースの基本的な設定を紹介します。今回は、x86サーバー「HP ProLiant DL385 Gen8」に搭載されているオンボードの4ポート物理NICを使って設定を行います。まず、現在の接続状態を確認してみます。
# nmcli connection NAME UUID TYPE DEVICE eno1 9bf86c7e-b15d-480a-b4db-21e30a29bbe9 802-3-ethernet eno1 eno4 85bb51d1-6ffe-4a67-9e20-726c4d354f2d 802-3-ethernet -- eno2 56ed578c-da1b-47a7-b1b8-154e1bb720ff 802-3-ethernet eno2 eno3 de3ee89a-8b0e-4da0-97cd-14ba9fd660b6 802-3-ethernet --
上記では、オンボードの4ポート物理NICのインタフェース名がeno1~eno4として割り当てられていることがわかります。nmcli connectionでは、upやdownを指定することで、インタフェースの接続、切断を制御することができます。以下は、インタフェースeno1を切断させる例です。
# nmcli connection down eno1 # nmcli connection show NAME UUID TYPE DEVICE eno1 9bf86c7e-b15d-480a-b4db-21e30a29bbe9 802-3-ethernet -- eno4 85bb51d1-6ffe-4a67-9e20-726c4d354f2d 802-3-ethernet -- eno2 56ed578c-da1b-47a7-b1b8-154e1bb720ff 802-3-ethernet eno2 eno3 de3ee89a-8b0e-4da0-97cd-14ba9fd660b6 802-3-ethernet --
上記より、eno1のDEVICE欄が「--」に変化し、接続が断たれていることが分かります。接続するには、以下のように「up」を指定します。
# nmcli connection up eno1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
次にデバイス名とその状態を確認します。
# nmcli device DEVICE TYPE STATE CONNECTION eno1 ethernet connected eno1 eno2 ethernet connected eno2 eno3 ethernet unavailable -- eno4 ethernet unavailable -- lo loopback unmanaged --
物理NICが4ポートのサーバーで、デバイス名がeno1、eno2、eno3、eno4として割り当てられ、かつループバックデバイスのloが認識されていることがわかります。STATEから、eno1とeno2が接続されていることもわかります。
各デバイスのMACアドレス、IPアドレス、MTU等の詳細を見るには、nmcli deviceにさらにshowを付与します。
# nmcli device show 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/1 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 172.16.3.82/16, gw = 0.0.0.0 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36c/64, gw = :: GENERAL.DEVICE: eno2 GENERAL.TYPE: ethernet GENERAL.HWADDR: 2C:76:8A:5D:F3:6D GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: eno2 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 16.147.201.23/22, gw = 16.147.200.1 IP4.DNS[1]: 16.110.135.51 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36d/64, gw = :: GENERAL.DEVICE: eno3 GENERAL.TYPE: ethernet GENERAL.HWADDR: 2C:76:8A:5D:F3:6E GENERAL.MTU: 1500 GENERAL.STATE: 20 (unavailable) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: off GENERAL.DEVICE: eno4 GENERAL.TYPE: ethernet GENERAL.HWADDR: 2C:76:8A:5D:F3:6F GENERAL.MTU: 1500 GENERAL.STATE: 20 (unavailable) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: off GENERAL.DEVICE: lo GENERAL.TYPE: loopback GENERAL.HWADDR: 00:00:00:00:00:00 GENERAL.MTU: 65536 GENERAL.STATE: 10 (unmanaged) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- IP4.ADDRESS[1]: ip = 127.0.0.1/8, gw = 0.0.0.0 IP6.ADDRESS[1]: ip = ::1/128, gw = ::
インタフェース名を指定することで出力を絞ることも可能です。
# 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/1 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 172.16.3.82/16, gw = 0.0.0.0 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36c/64, gw = ::
インタフェースに割り当てたIPアドレスやゲートウェイアドレスを変更するにはnmcli connectionに「modify」を指定します。以下は、IPアドレスが172.16.3.82/16でゲートウェイアドレスが0.0.0.0で割り当てられているインタフェースeno1のIPアドレスを10.0.0.82/24、ゲートウェイアドレスを10.0.0.1に変更する例です。
# nmcli connection modify eno1 ipv4.addresses "10.0.0.82/24 10.0.0.1" # nmcli connection down eno1 && nmcli connection up eno1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
「nmcli connection down」が従来のifdown、「nmcli connection up」が従来のifupに相当します。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/5 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 10.0.0.82/24, gw = 10.0.0.1 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36c/64, gw = ::
さらに、DNSサーバーと静的ルーティングを変更するには、ipv4.dns、ipv4.routesを指定します。以下は、インタフェースeno1に対して、DNSサーバーのIPアドレス「10.0.0.254」と「10.0.0.253」を指定し、静的ルーティングとして「10.0.0.0/24」のネットワークでルーターのIPアドレス「10.0.0.1」を指定する例です。
# nmcli connection modify eno1 ipv4.dns "10.0.0.254 10.0.0.253" # nmcli connection modify eno1 ipv4.routes "10.0.0.0/24 10.0.0.1" # nmcli connection down eno1 && nmcli connection up eno1 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7) # 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/7 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 10.0.0.82/24, gw = 10.0.0.1 IP4.ROUTE[1]: dst = 10.0.0.0/24, nh = 10.0.0.1, mt = 0 IP4.DNS[1]: 10.0.0.254 IP4.DNS[2]: 10.0.0.253 IP6.ADDRESS[1]: ip = fe80::2e76:8aff:fe5d:f36c/64, gw = ::
/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がターミナルエミュレータ内に表示されます。設定画面内で、キーボードの上下左右キーを使ってカーソルを合わせ、パラメータを入力することができます。
iprouteのススメ
CentOS 7のアップストリームOSであるRHEL7では、ifconfigコマンド、netstatコマンド、arpコマンド等を提供するnet-toolsが利用可能です。現状、CentOS 7においても、net-toolsパッケージをインストールすれば、従来の慣れ親しんだifconfigコマンドやnetstatコマンドを利用することが 可能ですが、今後は、net-toolsではなく、新しいコマンド体系に慣れることをお勧めします。net-toolsに取って代わる新しいコマンド体系は、iprouteパッケージで提供されています。CentOS 7のiprouteパッケージに含まれているコマンドは以下のとおりです。
# rpm -ql iproute |grep bin /usr/sbin/arpd /usr/sbin/bridge /usr/sbin/cbq /usr/sbin/ctstat /usr/sbin/genl /usr/sbin/ifcfg /usr/sbin/ifstat /usr/sbin/ip /usr/sbin/lnstat /usr/sbin/nstat /usr/sbin/routef /usr/sbin/routel /usr/sbin/rtacct /usr/sbin/rtmon /usr/sbin/rtpr /usr/sbin/rtstat /usr/sbin/ss /usr/sbin/tc
以下では、CentOS 7に含まれるiprouteパッケージに含まれるコマンドを使って、日常業務でよく利用されるネットワーク管理のコマンドをいくつか抜粋して紹介します。
IPアドレス、MACアドレスの確認(旧:ifconfig 新:ip)
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 2c:76:8a:5d:f3:6c brd ff:ff:ff:ff:ff:ff inet 192.168.0.82/24 brd 192.168.0.255 scope global eno1 valid_lft forever preferred_lft forever inet6 fe80::2e76:8aff:fe5d:f36c/64 scope link valid_lft forever preferred_lft forever 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 2c:76:8a:5d:f3:6d brd ff:ff:ff:ff:ff:ff inet 16.147.201.23/22 brd 16.147.203.255 scope global eno2 valid_lft forever preferred_lft forever inet6 fe80::2e76:8aff:fe5d:f36d/64 scope link valid_lft forever preferred_lft forever 4: eno3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 2c:76:8a:5d:f3:6e brd ff:ff:ff:ff:ff:ff 5: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 2c:76:8a:5d:f3:6f brd ff:ff:ff:ff:ff:ff
一時的なIPアドレスの付与(旧:ifconfig 新:ip)
# ip addr add 192.168.0.82/255.255.255.0 dev eno3 # ip addr show eno3 4: eno3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 2c:76:8a:5d:f3:6e brd ff:ff:ff:ff:ff:ff inet 192.168.0.82/24 scope global eno3 valid_lft forever preferred_lft forever
NICのリンクアップの確認(旧:ifconfig 新:ip)
# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether 2c:76:8a:5d:f3:6c brd ff:ff:ff:ff:ff:ff 3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether 2c:76:8a:5d:f3:6d brd ff:ff:ff:ff:ff:ff 4: eno3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000 link/ether 2c:76:8a:5d:f3:6e brd ff:ff:ff:ff:ff:ff 5: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000 link/ether 2c:76:8a:5d:f3:6f brd ff:ff:ff:ff:ff:ff
デフォルトゲートウェイの追加、削除(旧:route 新:ip)
ip route add default via 192.168.0.254 ip route del default via 192.168.0.254
ルーティングテーブルの確認(旧:route 新:ip)
# ip route default via 16.147.200.1 dev eno2 proto static metric 1024 16.147.200.0/22 dev eno2 proto kernel scope link src 16.147.201.23 192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.82 192.168.0.0/24 dev eno3 proto kernel scope link src 192.168.0.82
ARPテーブルの確認(旧:arp 新:ip)
# ip neigh 172.16.1.115 dev enp0s25 lladdr 00:21:5a:eb:3a:86 STALE 172.16.70.1 dev enp0s25 lladdr 52:54:00:fe:fe:7c STALE 172.16.27.10 dev enp0s25 lladdr b4:b5:2f:fb:6b:ae DELAY 172.16.1.1 dev enp0s25 lladdr 00:0d:02:d7:e9:ce STALE
ARPキャッシュのクリア(旧:arp 新:ip)
# ip neigh flush 172.16.1.115 dev enp0s25 ←ARPキャッシュ内のIPアドレス「172.16.1.115」をクリア
インタフェース毎のパケットの確認(旧:netstat 新:ip)
# ip -s l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 3818 31 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3818 31 0 0 0 0 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 70:5a:b6:ab:5e:da brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 11451391 140360 0 0 0 52 TX: bytes packets errors dropped carrier collsns 290998119 217114 0 0 0 0 3: wls1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 00:26:c6:cf:da:02 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0
TCPソケット及びUDPソケットの状態の確認(旧:netstat 新:ss)
# ss -ant State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 5 *:5901 *:* LISTEN 0 64 *:35247 *:* LISTEN 0 128 *:111 *:* LISTEN 0 128 *:6001 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 128 *:35736 *:* ESTAB 0 0 172.16.25.30:22 172.16.27.10:53503 ESTAB 0 0 172.16.25.30:728 172.16.70.1:2049 LISTEN 0 ::1:25 :::* LISTEN 0 :::35547 :::* LISTEN 0 :::34443 :::* LISTEN 0 :::111 :::* LISTEN 0 :::6001 :::* LISTEN 0 :::21 :::* LISTEN 0 :::22 :::* LISTEN 0 ::1:631 :::* # ss -anu State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:868 *:* UNCONN 0 0 127.0.0.1:896 *:* UNCONN 0 0 *:111 *:* UNCONN 0 0 *:123 *:* UNCONN 0 0 *:5353 *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 *:53711 *:* UNCONN 0 0 *:34379 *:* UNCONN 0 0 :::868 :::* UNCONN 0 0 :::111 :::* UNCONN 0 0 :::123 :::* UNCONN 0 0 ::1:323 :::* UNCONN 0 0 :::59151 :::*
(年明け公開予定の後編に続く)
<編集部より>コマンドの一部にスペルミスがあったため修正しました(2015/1/15)、また一部の曖昧な表現を修正しました(1/29)
この連載が書籍になりました! | |
---|---|
![]() 古賀 政純 著 |
CentOS 7実践ガイド本書は、CentOS 7を取り巻く市場動向、CentOS 7が利用されるサーバーシステムの選定、CentOS 7の基礎、システム設計、OS管理やCentOS 7に対応したアプリケーションサーバーの構築手順などの勘所をご紹介します。連載では書ききれなかった本の内容、見どころが満載!
|