CentOS8設定の基礎 – ネットワークの設定 その2 実際に設定する

前回はネットワーク設定を行う為の nmcli コマンドについて説明しました。

しかし、それだけでは実際に何をどう設定するのか分かりづらいと思うので、今回は新しく有線LANのconnectionを追加してみたいと思います。

この記事で行うこと

  1. connectionの作成
  2. connectionの確認
  3. connection設定の変更
  4. ネットワークへの接続

1. connectionの作成

まず最初に新規のconnectionを追加します。

[root@localhost ~]# nmcli connection add type ethernet con-name test_ethernet
  • con-name test_ethernet : con-name はそのconnectionの名称を指定する物です。今回はtest_ethernet と指定しています。指定しない場合は自動的に適当な名前が振られます。

前回の記事で説明したとおり、有線LAN接続の場合は typeethernet と指定します。

この時点で引数を追加すればIPアドレスなど色々な指定が出来るのですが、今回は必要な項目である type と必須ではないものの con-name のみ指定して、他の項目は後ほど modify コマンドで変更したいと思います。

2. connectionの確認

まず、作成したconnectionが存在するかを確認します。

[root@localhost ~]# nmcli connection show
NAME           UUID                                  TYPE      DEVICE

test_ethernet  2f167aae-7bf7-44bb-9079-0a1801fceb0f  ethernet  --

ちゃんと作成されたことを確認したので、今度は作成したconnectionの詳細を確認してみます。

[root@localhost ~]# nmcli connection show test_ethernet
connection.id:                          test_ethernet
connection.uuid:                        2f167aae-7bf7-44bb-9079-0a1801fceb0f
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              --
connection.autoconnect:                 はい
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   0
connection.read-only:                   いいえ
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     不明
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.wait-device-timeout:         -1
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          いいえ
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist:   --
802-3-ethernet.mtu:                     自動
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            auto
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         --
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.ignore-auto-routes:                いいえ
ipv4.ignore-auto-dns:                   いいえ
ipv4.dhcp-client-id:                    --
ipv4.dhcp-iaid:                         --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                はい
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.dhcp-hostname-flags:               0x0 (none)
ipv4.never-default:                     いいえ
ipv4.may-fail:                          はい
ipv4.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv6.method:                            auto
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.routing-rules:                     --
ipv6.ignore-auto-routes:                いいえ
ipv6.ignore-auto-dns:                   いいえ
ipv6.never-default:                     いいえ
ipv6.may-fail:                          はい
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     stable-privacy
ipv6.ra-timeout:                        0 (default)
ipv6.dhcp-duid:                         --
ipv6.dhcp-iaid:                         --
ipv6.dhcp-timeout:                      0 (default)
ipv6.dhcp-send-hostname:                はい
ipv6.dhcp-hostname:                     --
ipv6.dhcp-hostname-flags:               0x0 (none)
ipv6.token:                             --
proxy.method:                           none
proxy.browser-only:                     いいえ
proxy.pac-url:                          --
proxy.pac-script:                       --

以下によく使いそうな設定を解説します。

  • connection.autoconnect : 自動的に接続を行うかの設定です。これが いいえ の場合、サーバ再起動時などに自動的に接続されません。
  • ipv4.method : IPv4の接続設定方法です。 この項目を manual にすることで手動設定が出来ます。またIPv4を使わずにIPv6のみ使いたい場合はこの項目を disable にします。普通に使う分には auto のままで大丈夫かと思います。
  • ipv4.dns : IPv4で使うDNSサーバを指定します。ちなみに、ここでDNSサーバを指定しても後述する ipv4.ignore-auto-dnsいいえ の場合、指定したDNSサーバはセカンダリかそれ以下の優先順となり、機能しないので注意してください。
  • ipv4.addresses : IPv4で使用したいプライベートIPアドレスを指定します。ここで指定したアドレスが既に別のPCに割り振られていたり割り振り範囲外の場合は、IPアドレスが割り振られず繋がらなくなってしまうので、注意してください。指定しない場合は自動で割り振られます。
  • ipv4.ignore-auto-dns : この項目が はい の場合、ルータから通知されるDNSを無視します。 ipv4.dns の指定がない場合、どのDNSにも繋がらず名前解決(URLを使った接続)が出来なくなってしまうので注意してください。

上記の ipv4. で始まる項目は ipv6. でも同じような項目があります。

  • ipv6.addresses : ipv4.addresses と似ていますが、IPv6はその性質上プライベートIPアドレスという物が存在しないので、全世界で一意のIPアドレスとなります。大体は前半分(4つ目のコロンまで)が与えられたIPアドレス(変更不可)で、後半分は自由に設定できるものとなります。詳しくは「IPv6アドレス」などで検索してみてください。
  • ipv6.ip6-privacy : IPv6ネットワークのIPアドレスはそのネットワークデバイスのMACアドレスに基づいた物となります。しかし、それではネットワークデバイスのMACアドレスが他の人に知られてしまいます。さらに、MACアドレスからはそのデバイスの製造元などの情報を得ることが出来ます。このためランダムなIPアドレスを使うようにするかという設定です。ただ、サーバとして使うなら ipv6.addresses を指定するか、そもそもIPv6を使わない設定にすることがほとんどなので、実はどうでも良かったり……。一応 0 は無効(MACアドレスを元にしたIPアドレスを使う)。 1 は有効(しかし、MACアドレスを元にしたIPアドレスを優先して使う)。 2 はランダムなIPアドレスを使う。となります。(ランダムとはいえ一度作ったら基本的にはそのIPアドレスを使い続けます)

なお、実際にconnectionでネットワークに繋がっている場合は、追加で大文字で表される項目が表示されると思います。( IP4.ADDRESS[1] など)

前回も記述したとおり、それらの項目は設定値ではなく、実際にdevice側で使われている値となります。

もし、設定値と違う場合は設定を変更した後で再読込がされてないか、別の設定が干渉している場合があります。

3. connection設定の変更

設定の変更は前回記述したとおり、 modify コマンドを使います。

modify の後に、設定変更したいconnectionの名前を入れて、以降に設定したい項目名とその設定値を半角スペースで区切って、入れていきます。

設定の項目名は先ほど確認したとおりとなります。

[root@localhost ~]# nmcli connection modify test_ethernet ipv4.dns 127.0.0.1 ipv4.addresses 192.168.0.2/24 ipv4.ignore-auto-dns yes ipv6.method disabled

上記の設定例では、 test_ethernet の設定項目を以下のように変更しています。

  • ipv4.dns127.0.0.1 に。これは自分自身を指すIPアドレスです。UnboundなどDNSサーバが起動しているサーバの場合にで設定します。他に使いたいDNSサーバがある場合はそのIPアドレスを指定します。
  • ipv4.addresses192.168.0.2/24 に。この設定値はルータでアドレスの範囲がどうなっているか、DHCPで割り振られるIPアドレスがどれか、などによって設定できる値が変わってきます。末尾の /24 はサブネットマスクです。これもルータの設定によって値が変わります。
  • ipv4.ignore-auto-dnsyes に。これは ipv4.dns で指定しているDNSサーバを利用するため、ルータから通知されるDNSサーバを無視する設定となります。
  • ipv6.methoddisabled に。IPv6ネットワークを使いたくない場合の設定です。最近はIPv6も普及して来ていますし、使っていった方が良いとは思いますが。

4. ネットワークへの接続

先にどのようなdeviceがあるか確認してみます。

[root@localhost ~]# nmcli device status
DEVICE          TYPE      STATE     CONNECTION
enp3s0          ethernet  切断済み  --

lo              loopback  管理無し  --

有線LANのdeviceはenp3s0という名前で存在しているようです。

では、このdeviceに先ほど作成したconnectionで接続をしてみます。

[root@localhost ~]# nmcli connection up test_ethernet ifname enp3s0
  • ifname : InterFace NAME の略です。今まで散々deviceと言ってきたものは一般的に Network Interface と呼ばれるものです。ネットワークとサーバのインターフェースという訳です。この引数に続いて接続したいdeviceの名称を入力します。

なお、 ifname の指定がない場合は自動的に選ばれたdeviceに接続されます。(前回接続していた、とかそういう感じで選ばれます)

ちなみにネットワークの設定を変更したときに、それを反映したい場合はネットワークを切断してから再接続します。

[root@localhost ~]# nmcli connection down test_ethernet
[root@localhost ~]# nmcli connection up test_ethernet

しかしSSHで接続している場合はネットワークを切断した時点でSSHも切断されてしまいます。

そういう場合はSSH接続に使っているネットワークの connection.autoconnectはいyes )になっていることを確認した上で、NetworkManager自体を再起動することでSSH接続を完全に切断せずに設定を適用できます。

[root@localhost ~]# systemctl restart NetworkManager

しかしNetworkManagerの再起動が何かしらの要因で失敗すると当然SSH接続も切れてしまうので過信は禁物です。

サーバ近くにあるけどちょっと行くの面倒だしワンチャン上手くいけば良いなぐらいの気持ちでやってください。

まとめ

これでネットワークの設定を行うことが出来るようになりました。

あとは nmcli connection show で表示される項目を調べていけば、大抵のネットワーク設定は行えるはずです。

文中に何度も書いていますが、ネットワークの設定変更はともすればSSH接続を途切れさせてしまう可能性があります。

物理的にサーバにアクセス出来ないような状態で触る際には細心の注意を払うようにしてください。(というかサーバの近くにいるときにやるようにしてください)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です