'nmcli'ツールを使用してネットワーク接続を構成および管理する方法


Linux管理者は、ネットワーク接続を構成するために使用できるさまざまなツールを用意しています。たとえば、nmtui、GNOMEグラフィカルユーザーインターフェイスを備えたNetworkManager、そしてもちろんnmcli(ネットワークマネージャーのコマンドラインツール)です。

簡単にするために多くの管理者がnmtuiを使用しているのを見てきました。ただし、nmcliを使用すると、時間を節約し、自信を持ってスクリプトで使用できます。これは、Linuxサーバーネットワークのトラブルシューティングを行い、その機能を迅速に復活させるために使用する最初のツールです。

nmcliについて助けを求める多くのコメントを見て、私はこの記事を書くことにしました。もちろん、あなたは常にmanページを注意深く読むべきです(それはあなたにとって一番の助けです)。私の目的はあなたの時間を節約し、あなたにいくつかのヒントを示すことです。

nmcliの構文は次のとおりです。

# nmcli [OPTIONS] OBJECT {COMMAND | help}

OBJECT は、一般、ネットワーク、無線、接続、デバイス、エージェントのいずれかです。

良い出発点は、デバイスをチェックすることです。

# nmcli dev status

DEVICE      TYPE      STATE         CONNECTION 
docker0     bridge    connected     docker0    
virbr0      bridge    connected     virbr0     
enp0s3      ethernet  connected     enp0s3     
virbr0-nic  ethernet  disconnected  --         
lo          loopback  unmanaged     --         

最初の列に表示されているのは、ネットワークデバイスのリストです。 enp0s3 という名前のネットワークカードが1枚あります。あなたのマシンでは、他の名前を見ることができます。

命名は、ネットワークカードのタイプ(オンボードの場合、pciカードなど)によって異なります。最後の列には、ネットワークに接続するためにデバイスが使用する構成ファイルが表示されます。

私たちのデバイスだけでは何もできないことを理解するのは簡単です。彼らは、ネットワーク接続を実現する方法を教えるための構成ファイルを作成する必要があります。これらのファイルを「接続プロファイル」とも呼びます。それらは/ etc/sysconfig/network-scriptsディレクトリにあります。

# cd /etc/sysconfig/network-scripts/
# ls
ifcfg-enp0s3  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo      ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown        ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep   ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth    ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib     ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp   ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6   ifdown-tunnel    ifup-isdn     ifup-TeamPort

ここでわかるように、 ifcfg-(インターフェース構成)で始まる名前のファイルは接続プロファイルです。新しい接続を作成するか、nmcliまたはnmtuiを使用して既存の接続を変更すると、結果が接続プロファイルとしてここに保存されます。

私のマシンからの2つを示します。1つはdhcp構成で、もう1つは静的IPです。

# cat ifcfg-static1
# cat ifcfg-Myoffice1

一部のプロパティは異なる値を持ち、他のプロパティは必要がなければ存在しないことを認識しています。それらの中で最も重要なものを簡単に見てみましょう。

  1. TYPE, we have ethernet type here. We could have wifi, team, bond and others.
  2. DEVICE, the name of the network device which is associated with this profile.
  3. BOOTPROTO, if it has value “dhcp” then our connection profile takes dynamic IP from dhcp server, if it has value “none” then it takes no dynamic IP and probably whe assign a static IP.
  4. IPADDR, is the static IP we assign to our profile.
  5. PREFIX, the subnet mask. A value of 24 means 255.255.255.0. You can understand better the subnet mask if you write down its binary format. For example values of 16, 24, 26 means that the first 16, 24 or 26 bits respectively are 1 and the rest 0, defining exactly what the network address is and what is the range of ip which can be assigned.
  6. GATEWAY, the gateway IP.
  7. DNS1, DNS2, two dns servers we want to use.
  8. ONBOOT, if it has value “yes” it means, that on boot our computer will read this profile and try to assign it to its device.

それでは、次に進んで接続を確認しましょう。

# nmcli con show

デバイスの最後の列は、どの接続が「UP」で実行されているか、どの接続が実行されていないかを理解するのに役立ちます。上の画像では、アクティブな2つの接続Myoffice1とenp0s8を確認できます。

ヒント:アクティブな接続のみを表示する場合は、次のように入力します。

# nmcli con show -a

ヒント:nmcliを使用する場合は、オートコンプリートのTabキーを使用できますが、コマンドの最小形式を使用することをお勧めします。したがって、次のコマンドは同じです。

# nmcli connection show
# nmcli con show
# nmcli c s

デバイスのIPアドレスを確認すると、次のようになります。

# ip a

起動している接続プロファイル Myoffice1 にdhcp構成があるため、デバイス enp0s3 がdhcpサーバーから192.168.1.6IPを取得したことがわかります。 「up」という名前の接続プロファイルを static1 にすると、デバイスは接続プロファイルで定義されている静的IP192.168.1.40を取得します。

# nmcli con down Myoffice1 ; nmcli con up static1
# nmcli con show

IPアドレスをもう一度見てみましょう。

# ip a

最初の接続プロファイルを作成できます。定義する必要のある最小プロパティは、type、ifname、およびcon-nameです。

  1. type – for the type of connection.
  2. ifname – for the device name which is assigned our connection.
  3. con-name – for the connection name.

デバイス enp0s3 に割り当てられた Myhome1 という名前の新しいイーサネット接続を作成しましょう。

# nmcli con add type ethernet con-name Myhome1 ifname enp0s3

その構成を確認してください:

# cat ifcfg-Myhome1

ご覧のとおり、静的IPアドレスを指定しなかったため、 BOOTPROTO u003d dhcp があります。

ヒント:“ nmcli con mod“ コマンドを使用して、任意の接続を変更できます。ただし、dhcp接続を変更して静的に変更する場合は、その「ipv4.method」「auto」から「manual」<に変更することを忘れないでください。/code>。そうしないと、2つのIPアドレスになります。1つはdhcpサーバーからのもので、もう1つは静的アドレスです。

static2 という名前で、デバイス enp0s3 に割り当てられる、静的IP 192.168.1.50、サブネットマスク255.255.255.0 u003d 24、ゲートウェイ192.168の新しいイーサネット接続プロファイルを作成しましょう。 .1.1。

# nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

その構成を確認してください:

# cat ifcfg-static2

最後の接続プロファイルを変更して、2つのDNSサーバーを追加しましょう。

# nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

ヒント:ここで注意しなければならないことがあります。IPアドレスとゲートウェイのプロパティは、接続を追加するときと変更するときに異なる名前になります。接続を追加するときは“ ip4” “ gw4” を使用し、接続を変更するときは“ ipv4” “を使用しますgwv4”

それでは、この接続プロファイルを表示しましょう。

# nmcli con down static1 ; nmcli con up static2

ご覧のとおり、デバイス enp0s3 のIPアドレスは192.168.1.50になりました。

# ip a

ヒント:変更できるプロパティはたくさんあります。それらを覚えていない場合は、“ nmcli con show” と入力し、その後に接続名を入力してください。

# nmcli con show static2

小文字で記述されたこれらすべてのプロパティを変更できます。

例:接続プロファイルを停止すると、NetworkManagerは別の接続プロファイルを検索して自動的に起動します。 (私はそれをチェックするための練習としてそれを残します)。接続プロファイルを自動接続したくない場合:

# nmcli con mod static2 connection.autoconnect no

最後の演習は非常に便利です。接続プロファイルを作成しましたが、特定のユーザーが使用できるようにしたい場合です。ユーザーを分類するのは良いことです。

ユーザーstellaのみにこのプロファイルの使用を許可します。

# nmcli con mod static2 connection.permissions stella

ヒント:複数のユーザーに権限を付与する場合は、ユーザー間に空白を入れずに user:user1、user2 と入力する必要があります。

# nmcli con mod static2 connection.permissions user:stella,john

別のユーザーとしてログインした場合、この接続プロファイルを「起動」することはできません。

# nmcli con show
# nmcli con up static2
# ls /etc/sysconfig/network-scripts

エラーメッセージは、接続「static2」が存在することを確認しても、接続が存在しないことを示しています。これは、現在のユーザーにはこの接続を確立する権限がないためです。

結論:nmcliを使用することを躊躇しないでください。簡単で便利です。