CentOSのIPアドレス設定・確認方法まとめ

CentOSのIPアドレス設定・確認方法まとめ:詳細解説

はじめに

コンピュータネットワークにおいて、IPアドレスは機器が互いに通信するための「住所」のようなものです。サーバーであれクライアント端末であれ、ネットワークに接続するためには適切なIPアドレス設定が不可欠となります。特にサーバー用途で利用されることが多いLinuxディストリビューションであるCentOSでは、安定したサービス提供のために正確なネットワーク設定が求められます。

この記事では、CentOS環境におけるIPアドレスの設定方法と確認方法について、初心者の方でも理解できるよう、ネットワークの基礎からコマンドによる詳細な設定、トラブルシューティングまで網羅的に解説します。CentOSのバージョンによる設定の違い(特にCentOS 7以降で採用されたNetworkManagerと、それ以前のnetworkサービス)にも触れながら、実践的な知識を提供します。

この詳細なガイドを通じて、CentOSのネットワーク設定に関する理解を深め、より柔軟かつ強固なネットワーク環境を構築できるようになることを目指します。

ネットワークの基礎知識

CentOSでIPアドレスを設定・確認する前に、基本的なネットワークの概念を理解しておくことが重要です。

IPアドレスとは

IPアドレス(Internet Protocol Address)は、ネットワーク上のデバイスを一意に識別するための番号です。現在の主流はIPv4とIPv6の二種類があります。

  • IPv4 (Internet Protocol version 4)
    • 32ビットの数値で表現され、通常は8ビットずつをドットで区切り、10進数で表記します(例: 192.168.1.10)。
    • 約43億個のアドレスが存在しますが、インターネットの普及により枯渇が問題となっています。
  • IPv6 (Internet Protocol version 6)
    • 128ビットの数値で表現され、16ビットずつをコロンで区切り、16進数で表記します(例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
    • IPv4アドレスの枯渇問題に対処するために開発されました。ほぼ無限に近いアドレス空間を提供します。

この記事では主にIPv4を中心に解説しますが、IPv6についても後半で触れます。

IPアドレスの構成要素

IPv4アドレスは、通常「ネットワーク部」と「ホスト部」に分かれます。

  • ネットワーク部: ネットワーク全体を識別するための部分。同じネットワークに属する機器は、ネットワーク部が同一になります。
  • ホスト部: ネットワーク内で個々の機器を識別するための部分。ホスト部はネットワーク内で一意である必要があります。

ネットワーク部とホスト部の区切りは、「サブネットマスク」または「プレフィックス長」によって定義されます。

サブネットマスク / プレフィックス長 (CIDR)

  • サブネットマスク: IPv4アドレスと同様に32ビットの数値で表現され、ネットワーク部のビット位置を1、ホスト部のビット位置を0とします。通常は10進数で表記されます(例: 255.255.255.0)。
  • プレフィックス長 (CIDR: Classless Inter-Domain Routing): ネットワーク部のビット数をスラッシュ記号の後に記述します(例: 192.168.1.0/24)。これはサブネットマスク255.255.255.0と同じ意味になります。

サブネットマスクやプレフィックス長は、IPアドレスがどのネットワークに属しているかを判断したり、ブロードキャストアドレスやネットワークアドレスを計算したりするために必要です。

例:
* IPアドレス: 192.168.1.10
* サブネットマスク: 255.255.255.0
* プレフィックス長: /24
* この場合、192.168.1.0 ~ 192.168.1.255 の範囲のIPアドレスを持つ機器が同じネットワークに属します。ネットワークアドレスは192.168.1.0、ブロードキャストアドレスは192.168.1.255です。

デフォルトゲートウェイ

デフォルトゲートウェイは、ローカルネットワーク外のネットワーク(例: インターネット)と通信する際に、パケットの最初の転送先となる機器(通常はルーター)のIPアドレスです。これが正しく設定されていないと、ローカルネットワーク内の通信はできても、外部との通信ができなくなります。

DNSサーバー

DNS(Domain Name System)サーバーは、ドメイン名(例: www.example.com)とIPアドレス(例: 93.184.216.34)を相互に変換する役割を持ちます。Webサイトを閲覧したり、ホスト名でネットワーク上の機器にアクセスしたりする際には、DNSサーバーの設定が不可欠です。複数のDNSサーバーを指定することも一般的です。

プライベートIPアドレスとグローバルIPアドレス

  • プライベートIPアドレス: 特定の範囲で自由に利用できるIPアドレスで、ローカルネットワーク内でのみ有効です。インターネット上では直接ルーティングされません。
    • IPv4のプライベートIPアドレス範囲:
      • 10.0.0.0 – 10.255.255.255 (10/8 ネットワーク)
      • 172.16.0.0 – 172.31.255.255 (172.16/12 ネットワーク)
      • 192.168.0.0 – 192.168.255.255 (192.168/16 ネットワーク)
  • グローバルIPアドレス: インターネット上で一意に割り当てられるIPアドレスです。インターネット上の機器と直接通信するために使用されます。

自宅や会社のLANではプライベートIPアドレスが使用され、インターネットに接続する際には、ルーターなどがNAT(Network Address Translation)という技術を使ってプライベートIPアドレスとグローバルIPアドレスを変換します。

ネットワークインターフェース (NIC)

ネットワークインターフェースカード(NIC)またはネットワークアダプターは、コンピュータをネットワークに接続するためのハードウェアです。CentOSでは、これらのインターフェースは通常、eth0, eth1, enpXsY, ensX などのデバイス名で識別されます。Wi-Fiインターフェースは wlan0wlpXsY などとなります。IPアドレスの設定は、これらの個別のネットワークインターフェースに対して行われます。

ネットワーク構成の種類

IPアドレスの設定方法には、主に以下の二種類があります。

  • 静的IPアドレス (Static IP): IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーなどのネットワーク設定を手動で固定して割り当てる方法です。サーバーなど、常に同じIPアドレスで使用したい場合に適しています。
  • DHCP (Dynamic Host Configuration Protocol): ネットワーク上のDHCPサーバーから、IPアドレスをはじめとする必要なネットワーク設定情報を自動的に取得する方法です。クライアント端末など、IPアドレスが固定されている必要がない場合や、多数の端末がある場合に管理が容易になります。

CentOSにおけるネットワーク設定ファイルの構造

CentOSでは、ネットワーク設定は主にテキストファイルとして保存されます。これらの設定ファイルを編集することで、IPアドレスなどを設定することができます。

主要な設定ファイルの場所

ネットワークインターフェースごとの設定ファイルは、以下のディレクトリに格納されています。

/etc/sysconfig/network-scripts/

このディレクトリには、各ネットワークインターフェースに対応した ifcfg-<interface-name> という命名規則のファイルが作成されます。例えば、eth0 という名前のインターフェースであれば、設定ファイルは /etc/sysconfig/network-scripts/ifcfg-eth0 となります。

CentOS 7以降では、デフォルトのインターフェース命名規則が変更され、enpXsYensX のような予測可能なインターフェース名が使われることが多くなりました。ただし、旧来の ethX 命名規則に戻すことも可能です。

ifcfg-<interface-name> ファイルの代表的な設定パラメータ

このファイルは、そのインターフェースのネットワーク設定を定義します。主要なパラメータとその意味は以下の通りです。

  • DEVICE=<interface-name>: ネットワークインターフェースのデバイス名を指定します(例: DEVICE=eth0)。
  • TYPE=<type>: ネットワークタイプを指定します(例: TYPE=Ethernet)。
  • BOOTPROTO=<protocol>: IPアドレスの取得方法を指定します。
    • none または static: 静的IPアドレスを使用します。
    • dhcp: DHCPを使用してIPアドレスを自動取得します。
    • bootp: BOOTPを使用してIPアドレスを自動取得します(DHCPの古いプロトコル)。
  • ONBOOT=<yes|no>: システム起動時にこのインターフェースを有効にするかどうかを指定します。通常はサーバーでは yes に設定します。
  • IPADDR=<ip-address>: 静的IPアドレスを設定する場合に指定します(例: IPADDR=192.168.1.10)。
  • NETMASK=<subnet-mask>: 静的IPアドレスを設定する場合にサブネットマスクを指定します(例: NETMASK=255.255.255.0)。
  • PREFIX=<prefix-length>: サブネットマスクの代わりにプレフィックス長を指定することも可能です(例: PREFIX=24)。NETMASKPREFIXはどちらか一方を使用します。
  • GATEWAY=<gateway-ip>: デフォルトゲートウェイのIPアドレスを指定します(例: GATEWAY=192.168.1.1)。
  • DNS1=<dns-server-1>: 優先するDNSサーバーのIPアドレスを指定します(例: DNS1=8.8.8.8)。
  • DNS2=<dns-server-2>: 二番目のDNSサーバーのIPアドレスを指定します(例: DNS2=8.8.4.4)。
  • UUID=<uuid>: NetworkManagerが接続を識別するために使用する一意のIDです。通常、ファイル作成時に自動生成されます。
  • HWADDR=<mac-address>: ネットワークインターフェースのMACアドレスを指定します。MACアドレスに基づいてインターフェースを識別する場合に使用されることがありますが、通常はDEVICEで指定すれば十分です。
  • NM_CONTROLLED=<yes|no>: NetworkManagerがこのインターフェースを管理するかどうかを指定します。yesの場合はNetworkManager、noの場合は従来のnetworkサービスが管理します。CentOS 7以降でNetworkManagerを使用する場合はyesに設定します。

その他の関連ファイル

  • /etc/sysconfig/network: システム全体のネットワーク設定に関するファイルです。ホスト名などが設定されることがありますが、最近のCentOSでは/etc/hostnameでホスト名を設定することが一般的です。
  • /etc/resolv.conf: DNSリゾルバーの設定ファイルです。ここで指定されたDNSサーバーが名前解決に使用されます。通常、DHCPクライアントやNetworkManagerによって自動的に生成されます。手動で編集することも可能ですが、NetworkManagerなどが有効な場合は再起動時に上書きされる可能性があるため注意が必要です。NetworkManagerを使用している場合は、ifcfg-* ファイルやnmcliなどでDNSを設定するのが推奨されます。

IPアドレスの確認方法

CentOSで現在設定されているIPアドレスやネットワーク情報を確認する方法はいくつかあります。

コマンドラインツール

SSHなどでリモート接続している場合や、サーバーとしてGUI環境がない場合に主に利用します。

ip コマンド (推奨)

ip コマンドは、ifconfig コマンドの後継として開発され、より多機能で推奨されています。

  • すべてのネットワークインターフェースの詳細を表示

    “`bash
    ip addr show

    または省略形

    ip a
    “`

    出力例:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0
    valid_lft 3589sec preferred_lft 3589sec
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
    valid_lft forever preferred_lft forever

    この出力から、各インターフェース(lo, eth0など)の状態、MACアドレス (link/ether)、IPv4アドレス (inet)、IPv6アドレス (inet6)、サブネットマスク(プレフィックス長/24)、ブロードキャストアドレス (brd) などが確認できます。state UPはインターフェースが有効であることを示します。dynamicはDHCPで取得したことを示します。

  • 特定のネットワークインターフェースの詳細を表示

    “`bash
    ip addr show eth0

    または

    ip a show eth0
    “`

    eth0 の情報のみが表示されます。

  • IPv4アドレスのみを抽出して表示

    bash
    ip -4 addr show | grep inet | grep -v inet6 | awk '{print $2}' | cut -d/ -f1

    少し複雑ですが、ip -4 addr show でIPv4情報のみを取得し、grep inet でIPアドレス行を抽出し、grep -v inet6 でIPv6行を除外し、awk '{print $2}' でIPアドレス部分(例: 192.168.1.10/24)を取得し、cut -d/ -f1 でスラッシュ以降を除去してIPアドレス単体を表示します。よりシンプルに抽出する方法もありますが、これは一例です。

ifconfig コマンド (非推奨だが広く使われている)

ifconfig は古いコマンドですが、現在でも多くのシステムで利用可能です。CentOS 7以降のMinimalインストールなどではデフォルトでインストールされていない場合がありますが、net-tools パッケージをインストールすれば利用できます。

  • すべてのネットワークインターフェースの詳細を表示

    bash
    ifconfig

    出力例:

    “`
    eth0: flags=4163 mtu 1500
    inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
    inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20 ether 52:54:00:xx:xx:xx txqueuelen 1000 (Ethernet)
    RX packets 12345 bytes 67890 (66.3 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 12345 bytes 67890 (66.3 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73 mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10
    loop txqueuelen 1000 (Local Loopback)
    RX packets 12 bytes 720 (720.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 12 bytes 720 (720.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    “`

    ip addr show と同様に、IPアドレス (inet)、ネットマスク (netmask)、ブロードキャストアドレス (broadcast)、MACアドレス (ether) などが確認できます。flags に含まれる UP はインターフェースが有効であることを示します。

  • 特定のネットワークインターフェースの詳細を表示

    bash
    ifconfig eth0

    eth0 の情報のみが表示されます。

hostname コマンド

hostname コマンドはホスト名を表示しますが、-I オプションでローカルネットワーク上のすべてのIPアドレスを表示できます。

bash
hostname -I

出力例:

192.168.1.10 172.17.0.1

複数のインターフェースにIPアドレスが割り当てられている場合、それらが全て表示されます。

route コマンド (非推奨) / ip route コマンド (推奨)

これらのコマンドは、ルーティングテーブルを表示し、デフォルトゲートウェイなどの経路情報を確認できます。

  • ルーティングテーブルの表示 (IPv4)

    “`bash
    route -n # 非推奨

    または推奨コマンド

    ip route show
    ip route show default # デフォルトゲートウェイのみ
    “`

    出力例 (ip route show):

    default via 192.168.1.1 dev eth0 proto dhcp metric 100
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 metric 100

    default 行がデフォルトゲートウェイを示します。via 192.168.1.1 はゲートウェイのIPアドレス、dev eth0 はそのゲートウェイに到達するために使用するインターフェースを示します。192.168.1.0/24 の行は、ローカルネットワーク(192.168.1.0/24)への通信は eth0 インターフェースを使用することを示します。

netstat コマンド (非推奨) / ss コマンド (推奨)

これらのコマンドは、ネットワーク接続、ルーティングテーブル、インターフェース統計などを表示できます。ルーティングテーブルの確認にも利用できます。

  • ルーティングテーブルの表示 (IPv4)

    “`bash
    netstat -rn # 非推奨

    または推奨コマンド

    ss -rn
    “`

    出力例 (netstat -rn):

    Kernel IP routing table
    Destination Gateway Genmask Flags MSS Window irtt Iface
    0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
    192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

    Destination0.0.0.0 の行がデフォルトルートです。Gateway 列にデフォルトゲートウェイのIPアドレス (192.168.1.1) が表示されます。Iface 列は使用するインターフェース (eth0) です。

GUIツール (GNOMEなどを使用している場合)

CentOS Desktopなど、GUI環境を使用している場合は、グラフィカルなネットワーク設定ツールでIPアドレスを確認できます。

  1. 画面右上のネットワークアイコンをクリックします。
  2. 表示されるメニューから、「有線設定」や「Wi-Fi設定」などの該当する接続を選択します。
  3. 歯車アイコン(設定)をクリックします。
  4. 「詳細」または「ネットワーク」タブなどで、IPアドレス、デフォルトゲートウェイ、DNSサーバーなどの情報が表示されます。

IPアドレスの設定方法

CentOSでIPアドレスを設定するには、いくつかの方法があります。コマンドラインでの設定が最も一般的で、サーバー用途では必須のスキルです。GUIツールやTUIツールも利用できます。

静的IPアドレスの設定 (コマンドライン)

静的IPアドレスは、サーバーなど、常に同じIPアドレスを割り当てたい場合に適しています。設定ファイル ifcfg-<interface-name> を直接編集する方法が最も基本的な手順です。

手順:

  1. 設定ファイルを特定する: 設定したいネットワークインターフェースの名前(例: eth0, enpXsY)を確認します。確認は ip a コマンドなどで行えます。
  2. 設定ファイルを編集する: テキストエディタ(vim, nanoなど)を使用して、該当する ifcfg-<interface-name> ファイルを開きます。

    bash
    sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 # eth0の場合

    ファイルの内容は既存の設定によって異なりますが、最低限以下の項目を設定または編集します。

    • TYPE=Ethernet
    • BOOTPROTO=static
    • NAME=eth0 # インターフェース名。DEVICEと同じにすることが多い。
    • DEVICE=eth0 # インターフェース名。
    • ONBOOT=yes
    • IPADDR=192.168.1.100 # 設定したい静的IPアドレス
    • NETMASK=255.255.255.0 # サブネットマスク
    • GATEWAY=192.168.1.1 # デフォルトゲートウェイ
    • DNS1=8.8.8.8 # プライマリDNSサーバー (任意)
    • DNS2=8.8.4.4 # セカンダリDNSサーバー (任意)
    • UUID=... # 既存のUUIDは変更しない
    • NM_CONTROLLED=yes # NetworkManagerで管理する場合 (CentOS 7/8)
    • NM_CONTROLLED=no # networkサービスで管理する場合 (CentOS 6以前、またはCentOS 7/8でNetworkManagerを使わない場合)

    編集例 (/etc/sysconfig/network-scripts/ifcfg-eth0):

    ini
    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eth0
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 既存のUUID
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    NM_CONTROLLED=yes # CentOS 7/8 NetworkManager使用時

    もしプレフィックス長で指定したい場合は、NETMASK の代わりに PREFIX=24 のように記述します。

  3. 設定を保存してエディタを終了する。

  4. ネットワークサービスを再起動する: 設定を反映させるには、ネットワークサービスまたはNetworkManagerを再起動する必要があります。

    • CentOS 7/8 (systemd環境、NetworkManager推奨):

      “`bash
      sudo systemctl restart network

      もしくは、NetworkManagerが管理している場合は

      sudo systemctl restart NetworkManager

      特定の接続のみを再起動する場合は nmcli con down eth0; nmcli con up eth0

      “`

      通常は systemctl restart network で十分ですが、NetworkManagerが有効な場合は systemctl restart NetworkManager がより確実な場合があります。特定のインターフェースだけを再起動したい場合は ifdown eth0 && ifup eth0nmcli コマンドを使用します。

    • CentOS 6以前 (SysVinit環境):

      “`bash
      sudo service network restart

      特定のインターフェースのみ再起動

      sudo ifdown eth0 && sudo ifup eth0

      “`

  5. 設定が反映されたか確認する: ip aip route show コマンドで新しいIPアドレスやデフォルトゲートウェイが設定されているか確認します。また、ping コマンドなどで疎通確認を行います(例: ping 192.168.1.1 でゲートウェイに、ping 8.8.8.8 で外部に疎通できるか)。DNS設定を確認するには、ping google.com のようにホスト名で疎通確認を行います。

DHCPによる設定 (コマンドライン)

DHCPクライアントとして動作させ、DHCPサーバーから自動的にIPアドレスを取得する場合の設定です。

手順:

  1. 設定ファイルを特定する: 設定したいネットワークインターフェースの名前を確認します(例: eth0, enpXsY)。
  2. 設定ファイルを編集する: テキストエディタで ifcfg-<interface-name> ファイルを開きます。

    bash
    sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 # eth0の場合

    以下の項目を設定または編集します。

    • TYPE=Ethernet
    • BOOTPROTO=dhcp
    • NAME=eth0
    • DEVICE=eth0
    • ONBOOT=yes
    • UUID=... # 既存のUUIDは変更しない
    • NM_CONTROLLED=yes # NetworkManagerで管理する場合 (CentOS 7/8)
    • NM_CONTROLLED=no # networkサービスで管理する場合 (CentOS 6以前、またはCentOS 7/8でNetworkManagerを使わない場合)

    DHCPクライアントは通常、DHCPサーバーからIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーのアドレスを自動的に取得します。そのため、IPADDR, NETMASK, GATEWAY, DNS1, DNS2 といったパラメータは通常は設定しません。PEERDNS=yes (デフォルト) であれば、DHCPサーバーから受け取ったDNS情報を /etc/resolv.conf に書き込みます。

    編集例 (/etc/sysconfig/network-scripts/ifcfg-eth0):

    ini
    TYPE=Ethernet
    BOOTPROTO=dhcp
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eth0
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    DEVICE=eth0
    ONBOOT=yes
    NM_CONTROLLED=yes # CentOS 7/8 NetworkManager使用時

  3. 設定を保存してエディタを終了する。

  4. ネットワークサービスを再起動する:

    • CentOS 7/8: sudo systemctl restart network または sudo systemctl restart NetworkManager
    • CentOS 6以前: sudo service network restart
  5. 設定が反映されたか確認する: ip a コマンドでIPアドレスが割り当てられているか確認します。割り当てられたIPアドレスがDHCPサーバーから取得したものであることを確認してください(ip a の出力で dynamic と表示されることが多い)。ip route show コマンドでデフォルトゲートウェイを確認し、ping コマンドで疎通確認を行います。

nmcliコマンドによる設定 (NetworkManager CLI)

NetworkManagerが有効になっているCentOS 7/8以降では、nmcli コマンドを使って対話的またはスクリプトでネットワーク設定を変更できます。ifcfg ファイルを直接編集するよりも、nmcli を使う方がNetworkManagerの設定との整合性が保たれるため推奨されることが多いです。

nmcli は「接続プロファイル」という単位で設定を管理します。通常、インターフェースごとにプロファイルが作成されます。プロファイル名はインターフェース名と同じことが多いですが、異なる場合もあります。

  • 接続プロファイルの確認:

    “`bash
    nmcli connection show

    または省略形

    nmcli con show
    “`

    インターフェース名と対応するプロファイル名を確認できます。

  • 静的IPアドレスの設定:

    以下の例では、プロファイル名が eth0 であるインターフェースに静的IPアドレス 192.168.1.100/24、ゲートウェイ 192.168.1.1、DNSサーバー 8.8.8.8 を設定します。

    bash
    sudo nmcli con mod eth0 ipv4.method manual \
    ipv4.addresses "192.168.1.100/24" \
    ipv4.gateway "192.168.1.1" \
    ipv4.dns "8.8.8.8"

    複数のDNSサーバーを指定する場合は、カンマで区切ります (ipv4.dns "8.8.8.8,8.8.4.4")。
    IPv6を設定する場合は ipv6.method, ipv6.addresses, ipv6.gateway, ipv6.dns を使用します。

  • DHCPによる設定:

    プロファイル名が eth0 であるインターフェースをDHCPクライアントとして設定します。

    bash
    sudo nmcli con mod eth0 ipv4.method auto

    IPv6をDHCPv6またはSLAACで自動設定する場合は、ipv6.method auto を使用します。

  • 設定の有効化/無効化:

    設定を変更しただけでは反映されない場合があります。接続プロファイルを一度無効にし、再度有効にすることで設定が反映されます。

    bash
    sudo nmcli con down eth0
    sudo nmcli con up eth0

    または、NetworkManagerサービス自体を再起動しても反映されますが、他の接続にも影響を与える可能性があります。

  • 設定の確認:

    bash
    nmcli con show eth0 # 特定のプロファイルの詳細設定を表示
    nmcli device show eth0 # 特定のデバイスの状態や割り当てられたIPなどを表示

    nmcli device show eth0ip a show eth0 に似た情報を表示します。

nmtuiコマンドによる設定 (NetworkManager TUI)

NetworkManagerが有効な環境で、CUI上で対話形式で設定を行いたい場合は、nmtui コマンドが便利です。テキストユーザーインターフェース(TUI)が起動し、メニュー形式で設定を進めることができます。

bash
sudo nmtui

起動後、「Edit a connection」を選択し、設定したいネットワークインターフェースを選択してEnterキーを押します。表示される画面でIPアドレス、ゲートウェイ、DNSなどを設定できます。静的IPにするかDHCPにするかは、「IPv4 CONFIGURATION」や「IPv6 CONFIGURATION」の項目で「Automatic」(DHCPなど自動)または「Manual」(静的IP)を選択します。設定完了後、「OK」を選択して戻り、「Activate a connection」で設定した接続を有効にすると反映されます。

GUIツールによる設定 (NetworkManager GUI)

GNOMEなどのデスクトップ環境では、直感的なGUIツールを使ってネットワーク設定が可能です。通常、画面右上のネットワークアイコンをクリックし、設定メニューからアクセスできます。

  1. 画面右上のネットワークアイコンをクリックします。
  2. 「有線設定」や「Wi-Fi設定」など、該当する接続設定を開きます。
  3. 歯車アイコンをクリックして詳細設定画面を開きます。
  4. 「IPv4」タブや「IPv6」タブを選択します。
  5. 「方式」のドロップダウンリストで、「自動 (DHCP)」または「手動」を選択します。
  6. 「手動」を選択した場合、IPアドレス、ネットマスク(またはプレフィックス)、ゲートウェイ、DNSサーバーを入力します。
  7. 設定後、「適用」または「保存」ボタンをクリックします。
  8. 必要に応じて、接続を一度切断し、再度接続し直して設定を反映させます。

DNSサーバーの設定

DNSサーバーの設定は、ホスト名での通信に不可欠です。CentOSでは主に /etc/resolv.conf ファイルで設定されますが、NetworkManagerが有効な場合はNetworkManager経由で設定するのが推奨されます。

  • /etc/resolv.conf の内容:
    このファイルには、DNSサーバーのIPアドレスを nameserver というキーワードとともに記述します。検索ドメインは search で指定します。

    “`conf

    Generated by NetworkManager

    search example.com
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    “`

    NetworkManagerやDHCPクライアントによって自動生成される場合、ファイルの先頭に生成元を示すコメント(例: # Generated by NetworkManager)が含まれることがあります。

  • NetworkManagerでのDNS設定:
    前述の通り、ifcfg-* ファイルの DNS1, DNS2 パラメータや、nmcli con mod <con-name> ipv4.dns "<dns1>,<dns2>" コマンドで設定するのが推奨されます。NetworkManagerはこれらの設定を読み取り、/etc/resolv.conf を自動的に生成します。手動で /etc/resolv.conf を編集した場合、NetworkManagerが設定を上書きする可能性があるため注意が必要です。手動での編集を永続化したい場合は、NM_CONTROLLED=no に設定してNetworkManagerの管理下から外すか、NetworkManagerの設定で/etc/resolv.confを上書きしないように設定する必要があります(通常はNetworkManagerの管理下におく方が便利です)。

  • NetworkManagerを使用しない場合のDNS設定:
    NM_CONTROLLED=no に設定してNetworkManagerを使用しない場合は、/etc/sysconfig/network-scripts/ifcfg-* ファイルの DNS1, DNS2 を設定するか、/etc/resolv.conf を直接編集します。service network restart で設定が反映されます。/etc/resolv.conf を直接編集する場合は、他のサービスに上書きされないことを確認してください。

ルーティングテーブルの設定

ルーティングテーブルは、ネットワークパケットがどの経路を通って宛先に到達するかを決定するための情報です。デフォルトゲートウェイの設定は最も基本的なルーティング設定ですが、特定のネットワークに対して別のゲートウェイを経由させたい場合などに静的ルートを追加することがあります。

  • デフォルトゲートウェイの設定:
    これは前述の通り、ifcfg-* ファイルの GATEWAY パラメータまたは nmcli con mod <con-name> ipv4.gateway で設定します。

  • 静的ルートの設定:
    特定のネットワークへの経路を設定するには、以下の方法があります。

    1. ifcfg-* ファイルでの設定:
      /etc/sysconfig/network-scripts/route-<interface-name> というファイルを作成し、静的ルートを記述します。
      例えば、10.10.10.0/24 ネットワークへの通信を 192.168.1.254 というゲートウェイ経由で行う設定を eth0 に追加する場合、/etc/sysconfig/network-scripts/route-eth0 ファイルを作成し、以下の形式で記述します。

      “`conf
      10.10.10.0/24 via 192.168.1.254 dev eth0

      または古い形式

      ADDRESS0=10.10.10.0

      NETMASK0=255.255.255.0

      GATEWAY0=192.168.1.254

      “`

      設定後、ネットワークサービスを再起動します。

    2. ip route add コマンド (一時的な設定):
      再起動後に失われる一時的な設定として、ip route add コマンドでルーティングテーブルに経路を追加できます。

      bash
      sudo ip route add 10.10.10.0/24 via 192.168.1.254 dev eth0

    3. nmcli コマンド:
      NetworkManagerを使用している場合、nmcli コマンドでルーティング設定をプロファイルに追加できます。

      bash
      sudo nmcli con mod eth0 +ipv4.routes "10.10.10.0/24 192.168.1.254"

      設定後、接続プロファイルを再起動 (nmcli con down eth0; nmcli con up eth0) するか、NetworkManagerを再起動します。

  • ルーティングテーブルの確認:
    設定したルーティングテーブルは、ip route show コマンドで確認できます。

ネットワーク関連のトラブルシューティング

IPアドレスを設定・確認してもネットワークがうまく機能しない場合、いくつかの原因が考えられます。以下に一般的なトラブルシューティングの手順を示します。

  1. 設定ファイルを確認する:

    • /etc/sysconfig/network-scripts/ifcfg-<interface-name> ファイルに構文エラーがないか、IPアドレス、ネットマスク、ゲートウェイ、DNSなどの設定値が正しいか、タイプミスがないか確認します。
    • BOOTPROTOstatic の場合に IPADDR, NETMASK, GATEWAY が正しく設定されているか確認します。
    • BOOTPROTOdhcp の場合に不要な IPADDR などが設定されていないか確認します。
    • ONBOOT=yes になっているか確認します。
    • NetworkManagerを使用しているかどうかに応じて、NM_CONTROLLED の設定が適切か確認します。
    • /etc/resolv.conf ファイルに正しいDNSサーバーが設定されているか、またはNetworkManager等によって正しく生成されているか確認します。
  2. ネットワークサービスの起動状態を確認する:
    CentOS 7/8では systemd、CentOS 6以前では SysVinit を使用します。

    • CentOS 7/8:
      bash
      sudo systemctl status network
      sudo systemctl status NetworkManager # NetworkManagerを使用している場合

      サービスが “active (running)” 状態になっているか確認します。エラーが出ている場合はログを確認します。

    • CentOS 6以前:
      bash
      sudo service network status

      サービスが “running” 状態になっているか確認します。

    サービスが起動していない、またはエラーで終了している場合は、ログを確認します (journalctl -u network.service/var/log/messages など)。

  3. ネットワークインターフェースの状態を確認する:
    ip a または ifconfig コマンドで、設定したインターフェースにIPアドレスが割り当てられているか、状態が UP になっているか確認します。インターフェース名(例: eth0)が存在しない場合、カーネルが認識していないか、デバイスドライバの問題かもしれません。

  4. 物理的な接続を確認する:
    サーバーの場合は、LANケーブルがしっかりとポートに差し込まれているか、リンクランプが点灯しているか確認します。ルーターやスイッチなどのネットワーク機器側も確認します。

  5. ファイアウォール設定を確認する:
    CentOS 7以降のデフォルトファイアウォールは firewalld です。SSH接続やpingなどの必要なプロトコルがファイアウォールでブロックされていないか確認します。

    “`bash
    sudo firewall-cmd –list-all # 現在のゾーンの設定を表示

    または、特定のサービスやポートが許可されているか確認

    sudo firewall-cmd –zone=public –query-service=ssh
    sudo firewall-cmd –zone=public –query-port=80/tcp
    “`

    必要に応じて、サービスやポートを許可します(例: sudo firewall-cmd --zone=public --add-service=ssh --permanent 後、sudo firewall-cmd --reload)。
    iptables を使用している場合は、sudo iptables -nvL でルールを確認します。

  6. SELinuxを確認する:
    SELinuxがEnforcingモードになっている場合、ネットワーク関連の動作に制限をかけることがあります。SELinuxが原因でネットワーク問題が発生しているか一時的に確認するには、Permissiveモードに変更してみます。

    “`bash
    sudo setenforce Permissive # 一時的にPermissiveモードに変更

    問題が解消したらSELinuxのポリシー調整が必要

    元に戻すには sudo setenforce Enforcing

    現在のモード確認: getenforce

    ``
    SELinuxログ (
    /var/log/audit/audit.logjournalctl -t setroubleshoot`) を確認し、拒否されている操作がないか調べます。

  7. 疎通確認を行う:

    • ループバック確認: ping 127.0.0.1 で自身との通信を確認します。これができない場合はOS内部のネットワークスタックに問題がある可能性があります。
    • 自身のアドレス確認: ping <自身のIPアドレス> で自身のインターフェースが応答するか確認します。
    • ゲートウェイ確認: ping <デフォルトゲートウェイのIPアドレス> でローカルネットワーク内のルーターに到達できるか確認します。
    • ローカルネットワーク内の別端末確認: ping <同じネットワーク内の別の端末のIPアドレス> でローカルネットワーク内の通信を確認します。
    • 外部IPアドレス確認: ping 8.8.8.8 (Google Public DNS) など、外部の信頼できるIPアドレスに到達できるか確認します。これができず、ゲートウェイへのpingができる場合、ルーターからインターネットへの経路、またはインターネット側での問題が考えられます。
    • ホスト名確認: ping google.com など、ホスト名で外部に到達できるか確認します。これができず、IPアドレスでの外部疎通ができる場合、DNS設定に問題がある可能性が高いです。dig google.com コマンドなどで名前解決ができるか確認します。
  8. DHCPクライアントのログを確認する:
    DHCPでIPアドレスを取得できない場合、DHCPサーバーとの通信に問題がある可能性があります。システムログ (/var/log/messagesjournalctl -f) を確認し、dhclient 関連のメッセージを探します。

  9. NetworkManagerのログを確認する:
    NetworkManagerを使用している場合、そのログが役立ちます。journalctl -u NetworkManager コマンドでログを確認します。

IPv6の設定と確認

CentOSではIPv6もサポートされており、IPv4と同様に設定・確認が可能です。

IPv6アドレスの種類

  • リンクローカルアドレス (Link-Local Address): fe80::/10 の範囲。同一リンク(セグメント)内でのみ有効。通常、インターフェース有効時に自動生成されます。
  • ユニークローカルアドレス (Unique Local Address): fc00::/7 の範囲。プライベートIPv6アドレスに相当し、グローバルにルーティングされません。
  • グローバルユニキャストアドレス (Global Unicast Address): インターネット上でルーティング可能なIPv6アドレス。2000::/3 の範囲が割り当てられています。

IPv6アドレスの確認方法

ip addr show または ip a コマンドの出力で、inet6 の行を確認します。

bash
ip a | grep inet6

出力例:

inet6 ::1/128 scope host
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
inet6 2001:db8:xxxx::xxxx/64 scope global

scope host はループバックアドレス、scope link はリンクローカルアドレス、scope global はグローバルユニキャストアドレスまたはユニークローカルアドレスです。

IPv6アドレスの設定方法

IPv4と同様に、ifcfg-<interface-name> ファイルまたは nmcli で設定します。

  • ifcfg-<interface-name> ファイルでの設定:
    以下のパラメータを使用します。

    • IPV6INIT=yes: インターフェースでIPv6を有効にするか。
    • IPV6_AUTOCONF=yes: SLAAC (Stateless Address Autoconfiguration) による自動設定を有効にするか。デフォルトゲートウェイも自動取得されます。
    • IPV6_DHCP=yes: ステートフルDHCPv6による設定を有効にするか。
    • IPV6ADDR=<ipv6-address/prefix>: 静的IPv6アドレスを設定する場合に指定します(例: IPV6ADDR=2001:db8:1::100/64)。複数のアドレスを設定する場合は、複数の IPV6ADDR 行を記述するか、一行にスペース区切りで列挙します。
    • IPV6_DEFAULTGW=<gateway-ipv6>: 静的IPv6アドレスを設定する場合にデフォルトゲートウェイを指定します。
    • IPV6_PRIVACY=rfc3041: プライバシー拡張アドレス (RFC 3041) を有効にするか。

    例 (静的IPv6):

    ini
    ...
    IPV6INIT=yes
    IPV6_AUTOCONF=no # SLAAC無効
    IPV6_DHCP=no # DHCPv6無効
    IPV6ADDR=2001:db8:1::100/64
    IPV6_DEFAULTGW=2001:db8:1::1
    ...

    例 (SLAAC + ステートレスDHCPv6 (DNS情報のみ取得)):

    ini
    ...
    IPV6INIT=yes
    IPV6_AUTOCONF=yes # アドレスとデフォルトゲートウェイをSLAACで自動取得
    IPV6_DHCP=yes # DHCPv6でDNS情報などを取得
    ...

  • nmcli コマンドでの設定:
    IPv4と同様に ipv6.method, ipv6.addresses, ipv6.gateway, ipv6.dns を使用します。

    例 (静的IPv6):

    bash
    sudo nmcli con mod eth0 ipv6.method manual \
    ipv6.addresses "2001:db8:1::100/64" \
    ipv6.gateway "2001:db8:1::1" \
    ipv6.dns "2001:4860:4860::8888" # Google Public DNS IPv6

    例 (SLAAC + ステートレスDHCPv6):

    “`bash
    sudo nmcli con mod eth0 ipv6.method auto

    多くの環境で、ルーターアドバタイズメントとDHCPv6で自動設定される

    “`

    設定後、接続プロファイルを再起動して反映させます。

ネットワーク設定のベストプラクティスと注意点

  • サーバーには静的IPを割り当てる: サービス提供を行うサーバーは、IPアドレスが変わるとアクセスできなくなるため、静的IPアドレスを割り当てるのが一般的です。
  • 設定変更前にバックアップを取る: 重要な設定ファイルを変更する際は、事前にバックアップコピーを作成しておきましょう。sudo cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak のように簡単にコピーできます。
  • NetworkManagerの使い分け:
    • CentOS 7/8以降ではNetworkManagerが標準であり、特にデスクトップ環境やラップトップ、動的にネットワーク環境が変化する仮想マシンなどで利用するメリットは大きい(Wi-Fi接続の管理、VPN設定など)。nmclinmtui コマンドも便利です。
    • 従来のサーバー用途では、NetworkManagerを無効化し、network サービスで設定管理することも依然として一般的です(sudo systemctl disable NetworkManager; sudo systemctl enable network; sudo systemctl mask NetworkManager)。ただし、CentOS 7/8ではNetworkManagerを有効にしたまま、ifcfg-* ファイルを編集して静的IPを設定する方法もサポートされています。NM_CONTROLLED=yes に設定されていればNetworkManagerが管理します。
  • SSH接続中の設定変更: リモートでSSH接続してネットワーク設定を変更する場合、設定ミスやサービスの再起動に失敗すると、SSHセッションが切断されサーバーにアクセスできなくなるリスクがあります。
    • 変更前にscreentmuxなどのターミナルマルチプレクサを使用すると、セッションが切断されても後から復帰できる場合があります。
    • 変更後、サービス再起動の前に、別ターミナルから新しい設定のIPアドレスでSSH接続を試すなどの方法で、接続性が維持されているか確認すると安全です。
    • 最悪の場合に備え、コンソールアクセス(仮想マシンの場合はVMware/VirtualBoxなどのコンソール機能、物理サーバーの場合はKVMなど)が可能な状態にしておくことが強く推奨されます。
  • 設定変更後のテスト: 設定を変更したら、必ず ip a, ip route show, ping, dig などのコマンドを使って、意図通りに設定が反映されているか、ネットワーク疎通が可能かを入念にテストしてください。

まとめ

この記事では、CentOSにおけるIPアドレスの設定・確認方法について、ネットワークの基礎から詳細なコマンド、トラブルシューティングまで網羅的に解説しました。

  • IPアドレスはネットワーク通信の基盤であり、その設定はCentOSサーバー運用の要となります。
  • IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーといったネットワーク要素の役割を理解することが重要です。
  • CentOSでは主に /etc/sysconfig/network-scripts/ifcfg-<interface-name> ファイルを編集するか、NetworkManagerのツール (nmcli, nmtui, GUI) を使用してネットワーク設定を行います。
  • 設定の確認には ip addr show, ip route show コマンドが推奨されますが、ifconfig, route, netstat コマンドも広く利用されています。
  • 静的IPアドレスはサーバーに、DHCPはクライアントに適しています。
  • ネットワークに問題が発生した場合は、設定ファイルの確認、サービス状態の確認、インターフェース状態の確認、ファイアウォールの確認、そして疎通確認(ping, digなど)を順に進めることで原因を特定しやすくなります。
  • IPv6も同様の方法で設定・確認が可能です。
  • 設定変更時はバックアップを取り、SSH接続が切断されないよう注意し、必ずテストを実施するなどのベストプラクティスを守ることが安全な運用につながります。

CentOSのネットワーク設定は、これらの基本的なコマンドや設定ファイルを理解することで、柔軟かつ確実に実行できるようになります。この記事が、あなたのCentOS環境におけるネットワーク管理の一助となれば幸いです。

この情報を基に、CentOSサーバーのネットワーク設定を自信を持って行えるようになりましょう。

コメントする

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

上部へスクロール