作業環境
- CentOS 8.0
IP アドレス設定方法について
CentOS 8 においてネットワークインターフェースを設定する方法としては以下のような方法があります。
- NetworkManager を使用
- テキスト形式のユーザーインターフェースツール
nmtui
- コマンドラインツール
nmcli
- グラフィカルユーザーインターフェースツール
GNOME GUI
- テキスト形式のユーザーインターフェースツール
ifcfg
ファイルを手動で編集ip
コマンドを使用
ここでは NetworkManager の nmcli
を使用した設定方法について記載します。
IP アドレスの設定方法(忙しい人向け)
対象のコネクションの確認(コネクション一覧の表示)
nmcli c
IP アドレスの設定変更
nmcli c modify コネクション名 ipv4.method manual ipv4.addresses x.x.x.x/prefix
- IP アドレス設定方式を静的(手動)にした上で IP アドレスを設定する場合
nmcli c modify コネクション名 ipv4.addresses x.x.x.x/prefix
- IP アドレス設定のみ行う場合
nmcli c modify コネクション名 ipv4.method auto
- DHCP を利用するよう設定する場合
デフォルトゲートウェイの設定
nmcli c modify コネクション名 ipv4.gateway x.x.x.x ipv4.never-default no
- ゲートウェイ設定と同時に
ipv4.never-default no
を設定することでルーティングテーブルに掲載されるようにする
- ゲートウェイ設定と同時に
設定変更の反映
nmcli c up コネクション名
NetworkManager でのネットワーク設定について
NetworkManager では、操作対象としてデバイスとコネクションの 2 つがあります。
デバイス
- 物理 NIC または論理 NIC のこと
- デバイスに対するコマンドは
nmcli d [オプション]
d
は device の略で、d の代わりに device や dev でも同じ意味になる
コネクション
- デバイスに対応するネットワーク接続のこと
- IP アドレス、デフォルトゲートウェイなどはコネクションに対して設定する
- コネクションに対するコマンドは
nmcli c [オプション]
c
は connection の略で、c の代わりに connection や con でも同じ意味になる
デバイスに対する操作
デバイス一覧の表示
nmcli d
# nmcli d
DEVICE TYPE STATE CONNECTION
ens33 ethernet 接続済み ens33
virbr0 bridge 接続済み virbr0
lo loopback 管理無し --
virbr0-nic tun 管理無し --
個別のデバイスの詳細情報を表示
nmcli d show デバイス名
# nmcli d show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:CD:83:54
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 192.168.139.145/24
IP4.GATEWAY: 192.168.139.2
IP4.ROUTE[1]: dst = 192.168.139.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.139.2, mt = 100
IP4.DNS[1]: 192.168.139.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::e780:5b7f:218d:cc/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP4.ADDRESS[1]:
の行で現在の IP アドレスを確認できます。
コネクションに対する操作
コネクション一覧の表示
nmcli c
# nmcli c
NAME UUID TYPE DEVICE
ens33 bf21e9b0-f371-4615-90ec-057e409ef0ff ethernet ens33
virbr0 b5c2570f-5ea6-480c-87f7-1a6d078950bc bridge virbr0
個別のコネクションの詳細情報を表示
nmcli c show コネクション名
# nmcli c show ens33
connection.id: ens33
connection.uuid: bf21e9b0-f371-4615-90ec-057e409ef0ff
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: はい
(略)
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
(略)
コネクションの追加
nmcli d
コマンドの出力結果で STATE が「切断済み」となっているデバイスについては、まずデバイスに対してコネクションを追加する必要があります。
設定コマンドは以下の通りです。
nmcli c add type ethernet ifname デバイス名 con-name コネクション名
追加するコネクション名については、一般的にはデバイス名と同じにします。
コネクションの削除
nmcli c delete コネクション名
コネクションの設定
nmcli c modify コネクション名 項目名 値
項目名は nmcli c show コネクション名
コマンドで表示される項目の中から指定します。主な項目は以下の通りです。
項目 | 値の選択肢 | 説明 |
connection.id | string | コネクション表示名 |
ipv4.method | ・manual ・auto ・link-local ・shared ・disabed | アドレス設定方式 ・manual ⇒ 静的アドレス設定 ・auto ⇒ DHCP 利用 ・disabled ⇒ IPV4 を利用しない ※manual にするには先に ipv4.addresses が設定されている必要がある |
ipv4.addresses | xxx.xxx.xxx.xxx/prefix | IP アドレス |
ipv4.gateway | xxx.xxx.xxx.xxx | デフォルトゲートウェイ ※ルーティングテーブルに追加されるようにするには ipv4.never-default を no と設定する |
ipv4.never-default | ・yes ・no | デフォルトゲートウェイとして使用しないかどうか ・yes ⇒ 使用しない ・no ⇒ 使用する |
- コマンドテンプレート
項目 | コマンド |
コネクション名 | nmcli c modify コネクション名 connection.id 新コネクション名 |
アドレス設定方式 | nmcli c modify コネクション名 ipv4.method manual|auto |
IP アドレス | nmcli c modify コネクション名 ipv4.addresses x.x.x.x/prefix |
ゲートウェイ | nmcli c modify コネクション名 ipv4.gateway x.x.x.x |
ゲートウェイ使用有無 | nmcli c modify コネクション名 ipv4.never-default no|yes |
以下のように複数の項目を一行で設定することも可能です。
- アドレス設定方式を手動にして、IP アドレスを設定する場合
nmcli c modify コネクション名 ipv4.method manual ipv4.addresses x.x.x.x/prefix
コネクションの設定変更の反映およびアクティブ化
コネクションの設定変更は即座には反映されず、以下コマンドを実行することで反映されます。
nmcli c up コネクション名
コネクションの非アクティブ化
nmcli c down コネクション名
IP アドレス設定例
新規に接続した外付け USB NIC の IP アドレスを設定する例です。
USB NIC を接続した直後のデバイス一覧は以下の通りです。
# nmcli d
DEVICE TYPE STATE CONNECTION
ens33 ethernet 接続済み ens33
virbr0 bridge 接続済み virbr0
ens35u1 ethernet 切断済み --
lo loopback 管理無し --
virbr0-nic tun 管理無し --
ens35u1
が接続した USB NIC です。STATE が切断済みになっていることが確認できます。
まずデバイスに対してコネクションを追加します。
# nmcli c add type ethernet ifname ens35u1 con-name ens35u1
接続 'ens35u1' (3eda9d46-e138-47c9-8619-bd4b8e4791c3) が正常に追加されました。
# nmcli c
NAME UUID TYPE DEVICE
ens33 bf21e9b0-f371-4615-90ec-057e409ef0ff ethernet ens33
virbr0 b5c2570f-5ea6-480c-87f7-1a6d078950bc bridge virbr0
ens35u1 3eda9d46-e138-47c9-8619-bd4b8e4791c3 ethernet ens35u1
コネクションが追加されました。コネクションのデフォルトの設定を確認します。
# nmcli c show ens35u1
connection.id: ens35u1
(略)
ipv4.method: auto
(略)
ipv4.addresses: --
ipv4.gateway: --
(略)
DHCP を利用する設定になっていることが分かります。ここで以下の通りコネクションの設定を行います。
- アドレス設定方式: manual (手動)
- IP アドレス: 10.100.1.5/24
# nmcli c modify ens35u1 ipv4.method manual ipv4.addresses 10.100.1.5/24
# nmcli c show ens35u1
(略)
ipv4.method: manual
(略)
ipv4.addresses: 10.100.1.5/24
設定変更ができました。nmcli c up
コマンドで設定変更を反映させます。
# nmcli c up ens35u1
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/11)
デバイスの設定を確認します。
# nmcli d show ens35u1
GENERAL.DEVICE: ens35u1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 1C:C0:35:03:54:68
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: ens35u1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/11
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 10.100.1.5/24
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 10.100.1.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]: fe80::6692:58ea:aaff:d47b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
設定した通り IP4.ADDRESS[1]: 10.100.1.5/24
となっていることが確認できます。
10.100.1.0/24
セグメントとの疎通確認を行います。
# ping 10.100.1.254
PING 10.100.1.254 (10.100.1.254) 56(84) bytes of data.
64 bytes from 10.100.1.254: icmp_seq=1 ttl=255 time=4.46 ms
64 bytes from 10.100.1.254: icmp_seq=2 ttl=255 time=3.19 ms
64 bytes from 10.100.1.254: icmp_seq=3 ttl=255 time=3.16 ms
64 bytes from 10.100.1.254: icmp_seq=4 ttl=255 time=3.01 ms
^C
--- 10.100.1.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 3.013/3.454/4.460/0.585 ms
疎通が取れることを確認できました。
必要に応じてデフォルトゲートウェイも設定します。以下の通り設定します。
- デフォルトゲートウェイ: 10.100.1.254
- デフォルトゲートウェイとして利用する
# nmcli c modify ens35u1 ipv4.gateway 10.100.1.254 ipv4.never-default no
# nmcli c up ens35u1
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/12)
デバイスの設定を確認します。
# nmcli dev show ens35u1
GENERAL.DEVICE: ens35u1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 1C:C0:35:03:54:68
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: ens35u1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/12
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 10.100.1.5/24
IP4.GATEWAY: 10.100.1.254
IP4.ROUTE[1]: dst = 10.100.1.0/24, nh = 0.0.0.0, mt = 101
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.100.1.254, mt = 101
IP6.ADDRESS[1]: fe80::6692:58ea:aaff:d47b/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
設定した通り IP4.GATEWAY: 10.100.1.254
となっていることが確認できます。
ルーティングテーブルも確認してみます。
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 ens33
default _gateway 0.0.0.0 UG 101 0 0 ens35u1
10.100.1.0 0.0.0.0 255.255.255.0 U 101 0 0 ens35u1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.139.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
Use Iface が ens35u1 となっているデフォルトルートが追加されていることが確認できます。
以上です。
―――――――――――――