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 ネットワーク)
- IPv4のプライベートIPアドレス範囲:
- グローバルIPアドレス: インターネット上で一意に割り当てられるIPアドレスです。インターネット上の機器と直接通信するために使用されます。
自宅や会社のLANではプライベートIPアドレスが使用され、インターネットに接続する際には、ルーターなどがNAT(Network Address Translation)という技術を使ってプライベートIPアドレスとグローバルIPアドレスを変換します。
ネットワークインターフェース (NIC)
ネットワークインターフェースカード(NIC)またはネットワークアダプターは、コンピュータをネットワークに接続するためのハードウェアです。CentOSでは、これらのインターフェースは通常、eth0
, eth1
, enpXsY
, ensX
などのデバイス名で識別されます。Wi-Fiインターフェースは wlan0
や wlpXsY
などとなります。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以降では、デフォルトのインターフェース命名規則が変更され、enpXsY
や ensX
のような予測可能なインターフェース名が使われることが多くなりました。ただし、旧来の 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
)。NETMASK
とPREFIX
はどちらか一方を使用します。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=4163mtu 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 0lo: 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 eth0eth0
の情報のみが表示されます。
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 100default
行がデフォルトゲートウェイを示します。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 eth0Destination
が0.0.0.0
の行がデフォルトルートです。Gateway
列にデフォルトゲートウェイのIPアドレス (192.168.1.1
) が表示されます。Iface
列は使用するインターフェース (eth0
) です。
GUIツール (GNOMEなどを使用している場合)
CentOS Desktopなど、GUI環境を使用している場合は、グラフィカルなネットワーク設定ツールでIPアドレスを確認できます。
- 画面右上のネットワークアイコンをクリックします。
- 表示されるメニューから、「有線設定」や「Wi-Fi設定」などの該当する接続を選択します。
- 歯車アイコン(設定)をクリックします。
- 「詳細」または「ネットワーク」タブなどで、IPアドレス、デフォルトゲートウェイ、DNSサーバーなどの情報が表示されます。
IPアドレスの設定方法
CentOSでIPアドレスを設定するには、いくつかの方法があります。コマンドラインでの設定が最も一般的で、サーバー用途では必須のスキルです。GUIツールやTUIツールも利用できます。
静的IPアドレスの設定 (コマンドライン)
静的IPアドレスは、サーバーなど、常に同じIPアドレスを割り当てたい場合に適しています。設定ファイル ifcfg-<interface-name>
を直接編集する方法が最も基本的な手順です。
手順:
- 設定ファイルを特定する: 設定したいネットワークインターフェースの名前(例:
eth0
,enpXsY
)を確認します。確認はip a
コマンドなどで行えます。 -
設定ファイルを編集する: テキストエディタ(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
のように記述します。 -
設定を保存してエディタを終了する。
-
ネットワークサービスを再起動する: 設定を反映させるには、ネットワークサービスまたは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 eth0
やnmcli
コマンドを使用します。 -
CentOS 6以前 (SysVinit環境):
“`bash
sudo service network restart特定のインターフェースのみ再起動
sudo ifdown eth0 && sudo ifup eth0
“`
-
-
設定が反映されたか確認する:
ip a
やip route show
コマンドで新しいIPアドレスやデフォルトゲートウェイが設定されているか確認します。また、ping
コマンドなどで疎通確認を行います(例:ping 192.168.1.1
でゲートウェイに、ping 8.8.8.8
で外部に疎通できるか)。DNS設定を確認するには、ping google.com
のようにホスト名で疎通確認を行います。
DHCPによる設定 (コマンドライン)
DHCPクライアントとして動作させ、DHCPサーバーから自動的にIPアドレスを取得する場合の設定です。
手順:
- 設定ファイルを特定する: 設定したいネットワークインターフェースの名前を確認します(例:
eth0
,enpXsY
)。 -
設定ファイルを編集する: テキストエディタで
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使用時 -
設定を保存してエディタを終了する。
-
ネットワークサービスを再起動する:
- CentOS 7/8:
sudo systemctl restart network
またはsudo systemctl restart NetworkManager
- CentOS 6以前:
sudo service network restart
- CentOS 7/8:
-
設定が反映されたか確認する:
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 autoIPv6を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 eth0
はip 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ツールを使ってネットワーク設定が可能です。通常、画面右上のネットワークアイコンをクリックし、設定メニューからアクセスできます。
- 画面右上のネットワークアイコンをクリックします。
- 「有線設定」や「Wi-Fi設定」など、該当する接続設定を開きます。
- 歯車アイコンをクリックして詳細設定画面を開きます。
- 「IPv4」タブや「IPv6」タブを選択します。
- 「方式」のドロップダウンリストで、「自動 (DHCP)」または「手動」を選択します。
- 「手動」を選択した場合、IPアドレス、ネットマスク(またはプレフィックス)、ゲートウェイ、DNSサーバーを入力します。
- 設定後、「適用」または「保存」ボタンをクリックします。
- 必要に応じて、接続を一度切断し、再度接続し直して設定を反映させます。
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
で設定します。 -
静的ルートの設定:
特定のネットワークへの経路を設定するには、以下の方法があります。-
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
“`
設定後、ネットワークサービスを再起動します。
-
ip route add
コマンド (一時的な設定):
再起動後に失われる一時的な設定として、ip route add
コマンドでルーティングテーブルに経路を追加できます。bash
sudo ip route add 10.10.10.0/24 via 192.168.1.254 dev eth0 -
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アドレスを設定・確認してもネットワークがうまく機能しない場合、いくつかの原因が考えられます。以下に一般的なトラブルシューティングの手順を示します。
-
設定ファイルを確認する:
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
ファイルに構文エラーがないか、IPアドレス、ネットマスク、ゲートウェイ、DNSなどの設定値が正しいか、タイプミスがないか確認します。BOOTPROTO
がstatic
の場合にIPADDR
,NETMASK
,GATEWAY
が正しく設定されているか確認します。BOOTPROTO
がdhcp
の場合に不要なIPADDR
などが設定されていないか確認します。ONBOOT=yes
になっているか確認します。- NetworkManagerを使用しているかどうかに応じて、
NM_CONTROLLED
の設定が適切か確認します。 /etc/resolv.conf
ファイルに正しいDNSサーバーが設定されているか、またはNetworkManager等によって正しく生成されているか確認します。
-
ネットワークサービスの起動状態を確認する:
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
など)。 -
-
ネットワークインターフェースの状態を確認する:
ip a
またはifconfig
コマンドで、設定したインターフェースにIPアドレスが割り当てられているか、状態がUP
になっているか確認します。インターフェース名(例: eth0)が存在しない場合、カーネルが認識していないか、デバイスドライバの問題かもしれません。 -
物理的な接続を確認する:
サーバーの場合は、LANケーブルがしっかりとポートに差し込まれているか、リンクランプが点灯しているか確認します。ルーターやスイッチなどのネットワーク機器側も確認します。 -
ファイアウォール設定を確認する:
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
でルールを確認します。 -
SELinuxを確認する:
SELinuxがEnforcingモードになっている場合、ネットワーク関連の動作に制限をかけることがあります。SELinuxが原因でネットワーク問題が発生しているか一時的に確認するには、Permissiveモードに変更してみます。“`bash
sudo setenforce Permissive # 一時的にPermissiveモードに変更問題が解消したらSELinuxのポリシー調整が必要
元に戻すには sudo setenforce Enforcing
現在のモード確認: getenforce
``
/var/log/audit/audit.log
SELinuxログ (や
journalctl -t setroubleshoot`) を確認し、拒否されている操作がないか調べます。 -
疎通確認を行う:
- ループバック確認:
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
コマンドなどで名前解決ができるか確認します。
- ループバック確認:
-
DHCPクライアントのログを確認する:
DHCPでIPアドレスを取得できない場合、DHCPサーバーとの通信に問題がある可能性があります。システムログ (/var/log/messages
やjournalctl -f
) を確認し、dhclient
関連のメッセージを探します。 -
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設定など)。
nmcli
やnmtui
コマンドも便利です。 - 従来のサーバー用途では、NetworkManagerを無効化し、
network
サービスで設定管理することも依然として一般的です(sudo systemctl disable NetworkManager; sudo systemctl enable network; sudo systemctl mask NetworkManager
)。ただし、CentOS 7/8ではNetworkManagerを有効にしたまま、ifcfg-*
ファイルを編集して静的IPを設定する方法もサポートされています。NM_CONTROLLED=yes
に設定されていればNetworkManagerが管理します。
- CentOS 7/8以降ではNetworkManagerが標準であり、特にデスクトップ環境やラップトップ、動的にネットワーク環境が変化する仮想マシンなどで利用するメリットは大きい(Wi-Fi接続の管理、VPN設定など)。
- SSH接続中の設定変更: リモートでSSH接続してネットワーク設定を変更する場合、設定ミスやサービスの再起動に失敗すると、SSHセッションが切断されサーバーにアクセスできなくなるリスクがあります。
- 変更前に
screen
やtmux
などのターミナルマルチプレクサを使用すると、セッションが切断されても後から復帰できる場合があります。 - 変更後、サービス再起動の前に、別ターミナルから新しい設定の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サーバーのネットワーク設定を自信を持って行えるようになりましょう。