|
||||||||||||||||||||||||||
|
nmcliでIPアドレスを設定するCentOSでnmcliによるIPアドレスを設定するコマンドです。ちょっと長く見えますが、慣れれば簡単…だと思います。 DHCPのNICを静的アドレスへ変更する SSHからのIPアドレス変更 設定したIPアドレスの反映 デバイスの命名規則について なぜデバイス名とコネクション名で分かれているのか? DHCPのNICを静的アドレスへ変更する(初回) # アドレスの確認
#ip addr # 変更したい接続名を確認し、以降それを指定する #nmcli connect show # 静的アドレスへ変更 #nmcli con mod enp0s3 ipv4.method manual # IPアドレスとサブネットを指定 #nmcli con mod enp0s3 ipv4.address "192.168.1.100/24" # DNSを上書き #nmcli con mod enp0s3 ipv4.dns "192.168.1.1 192.168.1.2" # デフォルトゲートウェイの指定 #nmcli con mod enp0s3 ipv4.gateway "192.168.1.1" # 自動接続を有効 #nmcli con mod enp0s3 connection.autoconnect yes #反映 #nmcli con up enp0s3 すでに静的アドレスが設定済みのNICなら、以下だけで変更 #nmcli connect show
#nmcli con mod enp0s3 ipv4.address "192.168.1.100/24" #nmcli con up enp0s3 1行にまとめることもできます。 #nmcli con mod enp0s3 ipv4.method manual ipv4.address "192.168.1.100/24" ipv4.dns "192.168.1.1 192.168.1.1" ipv4.gateway "192.168.1.1"
nmcliは「とりあえずconnectionだけ覚えておけばいい」 「nmcli con mod コネクション名」 「nmcli con up コネクション名」と覚えておけば、なんとかなる。 deviceからもアドレス変更ができるので、混乱しないよう一つにしぼった方がいいと思います。 SSHからのIPアドレス変更 SSHでリモートからIPアドレスを変更する必要に迫られることもあります。 その場合も #nmcli connect show
#nmcli con mod enp0s3 ipv4.address "192.168.1.100/24" #nmcli con up enp0s3 とすればIPアドレスが変更できるので、新アドレスで再接続すればいいだけです。 アドレス変更なら、nmcliを使うよりnmtuiを使用する方が楽です。 しかしSSH接続しているとき、nmtuiは注意が必要です。 nmtuiでIPアドレス変更後、反映のためdeactivate/activateしようとすると、deactivateの時点でネットワークが切れてしまい、それっきりになってしまいます。 つまりIPアドレスの設定はnmtuiで行い、活性化はnmcliでやる必要があります。 1.nmtuiでIPアドレス変更、保存 2.nmtui終了 3.コマンド「nmcli con up ens0s3」でアドレス有効 もしうっかりミスをする可能性があるのなら、アドレスをnmtuiではなくいつもnmcliでアドレス変更するクセをつけておけば、トラブルを回避できるのでは。 設定したIPアドレスの反映 設定したIPアドレスはコマンドで反映させます。以前ならif-down/if-upですが、nmcliになってコマンドが変わっています。 その1 NICをUPさせる(事前にダウンさせる必要はありません) #nmcli con up enp0s3
その2 NICのデバイスを、切断/接続させる #nmcli device disconnect enp0s3
一旦切断されるので、SSHなどではコマンドをセミコロンでつなげないといけません。#nmcli device connect enp0s3 その3 サービスを再起動する #systemctl retart network
昔ながらの方法ですが、必要がなければネットワーク全体を再起動しなくてもいいでしょう。その4 コネクションをリロードする #nmcli con reload
これはIPアドレスの反映ではなく、コネクションファイルの再読み込みにあたります。リロードでは、IPアドレスやゲートウェイ設定情報が再読み込みされても、変更まではされません。 一方、ifcfg-XXX ファイルの中のDNS設定を直接編集しリロードすると、DNS設定は変更されます。 Redhat本家にも、コネクションのリロードが必要な場合が記載してありますが、登場の機会は少なそうです。 デバイスの命名規則について NetworkManagerが導入されたとき、最初に苦しんだのはNICに与えられる名前でした。 意味が分かれば、少し見えてきます。 命名にはルールがあり、例えば enp0s3なら、 en / p0 / s3 と分解できます。 命名ルールの早見表は、ネットのどこででも見つかります。 インターフェースタイプ
タイプ名
デバイス名の例
なぜデバイス名とコネクション名で分かれているのか? デバイスとコネクション名が二つあるとどちらででもIPアドレスが設定可能なので、nmcliで戸惑います。 別れている理由の一つは管理のしやすさです。 デバイスのens1という名前は物理的情報を示しますので、なんの用途で使用するかの管理がしづらいと言えます。 データセンターのような遠隔環境では、デバイス情報だけではそこになんのケーブルが接続されているかは不明です。また、複数のメーカーの違うサーバなら、同じセグメント向けでも別のNIC名になってしまうでしょう。 そこでコネクション名を使用し、「ens1」という物理デバイスは、「dmz-interface」として接続名管理する、というアイデアが考えられます。 これにより、例えば設定ファイルを画一化できたり、異なるハードウェアの間でも共通の管理ができます。 システムボード交換や物理NIC追加などでデバイス名が変化しても、コネクション名を引き継ぐことができれば管理ツールやスクリプトの変更はいりません。 Windowsでは、ずっと以前より「物理デバイス」と「接続名」を分けて管理してします。 「イーサネット」の部分が、コネクション名 「Realtek PCIe GBE〜」の部分が、物理的なデバイス名。 こう考えると容易にわかるのではないでしょうか。 Windowsコマンドから各種ネットワーク設定をする場合、物理デバイスではなく接続名を使用します。 また接続名の変更も右クリックから行えるので、容易です。 |
|
||||||||||||||||||||||||