nmcliで固定IPアドレスを設定する完全ガイド:ステップバイステップでネットワークを制御する
ネットワーク設定は、現代のコンピューティングにおいて不可欠な要素です。特にサーバー、ワークステーション、または特定のアプリケーションに依存するデバイスでは、固定IPアドレスが非常に重要になります。動的IPアドレス(DHCP)は便利ですが、IPアドレスが変更される可能性があるため、予測可能な接続を必要とするシナリオには適していません。
NetworkManager Command-Line Interface(nmcli)は、Linuxシステムでネットワーク接続を管理するための強力かつ柔軟なツールです。nmcliを使用することで、GUI(グラフィカルユーザーインターフェース)に頼らずに、ターミナルから直接ネットワークインターフェースの設定、接続の確立、およびネットワーク情報の取得を行うことができます。
この記事では、nmcliを使用してLinuxシステムに固定IPアドレスを設定する詳細な手順について解説します。基本的な概念から、トラブルシューティング、高度な設定まで、幅広いトピックを網羅し、ネットワーク設定を完全に理解できるようにします。
1. nmcliの基本と利点
1.1 nmcliとは何か?
nmcliは、NetworkManagerサービスを操作するためのコマンドラインツールです。NetworkManagerは、Linuxシステムでネットワークデバイスと接続を管理するためのデーモンです。nmcliを使用すると、NetworkManagerの機能をスクリプト化したり、自動化したり、GUIなしでネットワーク設定を管理したりできます。
1.2 nmcliの利点
- 柔軟性: GUIに依存せず、ターミナルからネットワーク設定を細かく制御できます。
- スクリプト化: 設定をスクリプトに組み込み、自動化されたデプロイメントや構成管理を実現できます。
- リモートアクセス: SSH経由でサーバーにアクセスし、ネットワーク設定をリモートで変更できます。
- 一貫性: 異なるLinuxディストリビューションで一貫した方法でネットワーク設定を管理できます。
- 高速性: GUIよりも高速に設定を変更できる場合があります。特に複雑な設定の場合に有効です。
2. 前提条件
- Linuxシステム: Ubuntu、Debian、CentOS、Fedoraなど、NetworkManagerがインストールされているLinuxディストリビューションが必要です。
- 管理者権限:
sudoコマンドを使用して管理者権限を取得する必要があります。 - ターミナルアクセス: コマンドを実行するためにターミナルが必要です。
3. 固定IPアドレス設定の基本概念
固定IPアドレスを設定する前に、いくつかの基本的なネットワーク概念を理解しておく必要があります。
- IPアドレス: ネットワーク上のデバイスを識別するための一意のアドレス。IPv4(例:192.168.1.100)またはIPv6(例:2001:db8::1)を使用します。
- サブネットマスク: IPアドレスのネットワーク部分とホスト部分を区別するために使用されます。通常は
/24(255.255.255.0)のようなCIDR表記またはドット区切りの10進表記で表されます。 - ゲートウェイ: ローカルネットワークから外部ネットワーク(通常はインターネット)へのトラフィックをルーティングするデバイスのアドレス。
- DNSサーバー: ドメイン名(例:google.com)をIPアドレスに解決するサーバーのアドレス。
- ネットワークインターフェース: ネットワークに接続するためのハードウェアインターフェース(例:eth0、wlan0、enp0s3)。
4. nmcliコマンドの基本
nmcliを使用するには、いくつかの基本的なコマンドを理解する必要があります。
nmcli general status: NetworkManagerの全体的なステータスを表示します。nmcli device status: すべてのネットワークデバイスのステータスを表示します。nmcli connection show: すべてのネットワーク接続プロファイルを表示します。nmcli connection up <connection_name>: 指定されたネットワーク接続をアクティブにします。nmcli connection down <connection_name>: 指定されたネットワーク接続を非アクティブにします。nmcli connection add: 新しいネットワーク接続プロファイルを作成します。nmcli connection modify: 既存のネットワーク接続プロファイルを変更します。nmcli connection delete: ネットワーク接続プロファイルを削除します。
5. 現在のネットワーク設定の確認
固定IPアドレスを設定する前に、現在のネットワーク設定を確認することが重要です。これにより、設定を誤った場合に元に戻すことができるようにバックアップを作成したり、既存の設定と矛盾しないように新しい設定を計画したりできます。
5.1 IPアドレスとサブネットマスクの確認
次のコマンドを使用して、現在のIPアドレスとサブネットマスクを確認できます。
bash
ip addr show
または
bash
ifconfig
これらのコマンドは、各ネットワークインターフェースに関する詳細な情報を表示します。目的のインターフェース(例:eth0、wlan0)を見つけ、inet行に表示されるIPアドレスとサブネットマスクを確認します。
5.2 デフォルトゲートウェイの確認
次のコマンドを使用して、現在のデフォルトゲートウェイを確認できます。
bash
ip route show default
このコマンドは、デフォルトゲートウェイのアドレスを表示します。
5.3 DNSサーバーの確認
次のコマンドを使用して、現在のDNSサーバーを確認できます。
bash
cat /etc/resolv.conf
このファイルには、使用されているDNSサーバーのアドレスがリストされています。
6. nmcliによる固定IPアドレスの設定(ステップバイステップ)
ここでは、nmcliを使用して固定IPアドレスを設定する手順を詳しく説明します。
6.1 ネットワークインターフェースの特定
まず、固定IPアドレスを設定するネットワークインターフェースを特定する必要があります。次のコマンドを使用して、すべてのネットワークデバイスとそのステータスを表示します。
bash
nmcli device status
このコマンドの出力には、各ネットワークデバイスの名前、タイプ、ステータスが表示されます。通常、有線接続の場合はeth0またはenp0s3、無線接続の場合はwlan0のような名前が使用されます。固定IPアドレスを設定するインターフェースの名前をメモしておきます。
6.2 現在の接続プロファイルの確認
次に、選択したネットワークインターフェースに関連付けられている接続プロファイルを確認します。次のコマンドを使用します。
bash
nmcli connection show
このコマンドの出力には、すべてのネットワーク接続プロファイルとその詳細が表示されます。目的のインターフェースに関連付けられている接続プロファイルの名前をメモしておきます。接続プロファイルの名前は、インターフェース名と一致している場合もあれば、異なる場合もあります。
6.3 既存の接続プロファイルの変更(推奨)
新しい接続プロファイルを作成する代わりに、既存の接続プロファイルを変更することをお勧めします。これにより、既存の設定(例:Wi-Fiパスワード)が保持され、設定の矛盾を避けることができます。
既存の接続プロファイルを変更するには、次のコマンドを使用します。
bash
nmcli connection modify <connection_name> ipv4.method manual ipv4.addresses <ip_address>/<subnet_mask> ipv4.gateway <gateway_address> ipv4.dns <dns_server_address>
<connection_name>:変更する接続プロファイルの名前。<ip_address>:設定する固定IPアドレス(例:192.168.1.100)。<subnet_mask>:サブネットマスク(例:24)。<gateway_address>:デフォルトゲートウェイのアドレス(例:192.168.1.1)。<dns_server_address>:DNSサーバーのアドレス(例:8.8.8.8)。複数のDNSサーバーを指定する場合は、スペースで区切ります(例:8.8.8.8 8.8.4.4)。
例:
bash
nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 8.8.4.4
6.4 新しい接続プロファイルの作成(オプション)
既存の接続プロファイルを変更したくない場合は、新しい接続プロファイルを作成することもできます。ただし、この方法では、既存の設定が失われる可能性があるため、注意が必要です。
新しい接続プロファイルを作成するには、次のコマンドを使用します。
bash
nmcli connection add type ethernet con-name <connection_name> ifname <interface_name> ipv4.method manual ipv4.addresses <ip_address>/<subnet_mask> ipv4.gateway <gateway_address> ipv4.dns <dns_server_address>
<connection_name>:新しい接続プロファイルの名前。<interface_name>:ネットワークインターフェースの名前(例:eth0)。<ip_address>:設定する固定IPアドレス(例:192.168.1.100)。<subnet_mask>:サブネットマスク(例:24)。<gateway_address>:デフォルトゲートウェイのアドレス(例:192.168.1.1)。<dns_server_address>:DNSサーバーのアドレス(例:8.8.8.8)。複数のDNSサーバーを指定する場合は、スペースで区切ります(例:8.8.8.8 8.8.4.4)。
例:
bash
nmcli connection add type ethernet con-name "Static IP" ifname eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 8.8.4.4
6.5 接続の再起動
設定を変更または新しい接続プロファイルを作成した後、変更を有効にするために接続を再起動する必要があります。次のコマンドを使用して、接続を非アクティブにしてから再度アクティブにします。
bash
nmcli connection down <connection_name>
nmcli connection up <connection_name>
<connection_name>:変更したまたは作成した接続プロファイルの名前。
例:
bash
nmcli connection down "Wired connection 1"
nmcli connection up "Wired connection 1"
または
bash
nmcli connection down "Static IP"
nmcli connection up "Static IP"
6.6 設定の確認
接続を再起動した後、設定が正しく適用されていることを確認します。ip addr showコマンドを使用して、IPアドレス、サブネットマスク、ゲートウェイが正しく設定されていることを確認します。
bash
ip addr show
7. IPv6の設定
IPv6を使用している場合は、IPv6アドレスも設定する必要があります。nmcliを使用すると、IPv4アドレスと同様に、IPv6アドレスも簡単に設定できます。
7.1 IPv6アドレスの追加
既存の接続プロファイルにIPv6アドレスを追加するには、次のコマンドを使用します。
bash
nmcli connection modify <connection_name> ipv6.method manual ipv6.addresses <ipv6_address>/<prefix_length> ipv6.gateway <ipv6_gateway_address> ipv6.dns <ipv6_dns_server_address>
<connection_name>:変更する接続プロファイルの名前。<ipv6_address>:設定する固定IPv6アドレス(例:2001:db8::1)。<prefix_length>:プレフィックス長(例:64)。<ipv6_gateway_address>:デフォルトIPv6ゲートウェイのアドレス(例:fe80::1)。<ipv6_dns_server_address>:IPv6 DNSサーバーのアドレス(例:2001:4860:4860::8888)。
例:
bash
nmcli connection modify "Wired connection 1" ipv6.method manual ipv6.addresses 2001:db8::1/64 ipv6.gateway fe80::1 ipv6.dns 2001:4860:4860::8888 2001:4860:4860::8844
7.2 IPv6の自動設定の無効化
IPv6アドレスを手動で設定する場合、自動設定(DHCPv6)を無効にすることをお勧めします。これにより、誤ったIPv6アドレスが割り当てられるのを防ぐことができます。
次のコマンドを使用して、IPv6の自動設定を無効にします。
bash
nmcli connection modify <connection_name> ipv6.addr-gen-mode eui64 ipv6.privacy 0
8. トラブルシューティング
固定IPアドレスの設定中に問題が発生した場合、以下のトラブルシューティング手順を試してみてください。
- 接続の確認: ネットワークケーブルが正しく接続されているか、Wi-Fiが正しく接続されているかを確認します。
- IPアドレスの競合: 設定したIPアドレスがネットワーク上の別のデバイスで使用されていないことを確認します。
- ゲートウェイの確認: デフォルトゲートウェイのアドレスが正しいことを確認します。
- DNSサーバーの確認: DNSサーバーのアドレスが正しいことを確認します。pingコマンドを使用して、DNSサーバーに到達できることを確認します。
- NetworkManagerの再起動: NetworkManagerサービスを再起動して、設定をリフレッシュします。
bash
sudo systemctl restart NetworkManager
- ログの確認: NetworkManagerのログファイル(通常は
/var/log/syslogまたは/var/log/messages)にエラーメッセージがないか確認します。 - ファイアウォールの確認: ファイアウォールがネットワークトラフィックをブロックしていないことを確認します。
- ルーティングテーブルの確認: ルーティングテーブルが正しく設定されていることを確認します。
ip route showコマンドを使用して、ルーティングテーブルを表示します。 - 設定ファイルの確認: ネットワーク設定ファイル(例:
/etc/network/interfaces、/etc/sysconfig/network-scripts/ifcfg-*)に誤った設定がないか確認します。NetworkManagerを使用している場合、これらのファイルはNetworkManagerによって管理されるため、直接編集することは推奨されません。
9. 高度な設定
nmcliを使用すると、固定IPアドレス設定以外にも、さまざまな高度なネットワーク設定を行うことができます。
- VLANの設定: VLAN(Virtual LAN)を使用して、ネットワークを論理的に分割できます。
- ボンディングの設定: 複数のネットワークインターフェースを組み合わせて、帯域幅を増やしたり、冗長性を提供したりできます。
- ブリッジの設定: ブリッジを使用して、複数のネットワークインターフェースを1つの論理インターフェースとして扱うことができます。
- VPNの設定: VPN(Virtual Private Network)を使用して、安全な接続を確立できます。
これらの高度な設定については、別の記事で詳しく解説します。
10. まとめ
この記事では、nmcliを使用してLinuxシステムに固定IPアドレスを設定する詳細な手順について解説しました。nmcliは、ネットワーク設定を管理するための強力かつ柔軟なツールであり、GUIに頼らずにターミナルから直接設定を変更できます。この記事で説明した手順とトラブルシューティングのヒントを活用して、ネットワーク設定を完全に制御し、安定した接続を確保してください。NetworkManagerとそのコマンドラインインターフェースであるnmcliを習得することで、Linuxシステムのネットワーク管理能力が大幅に向上します。今後のネットワーク管理作業に役立つことを願っています。