RHEL系Linuxディストリビューションでネットワーク接続を恒久的に有効化し、静的IPアドレスを割り当てるには、インターフェース設定ファイルの修正が不可欠です。設定ファイルは通常、/etc/sysconfig/network-scripts/ディレクトリに格納されています。
ターミナルで該当ディレクトリへ移動し、対象インターフェースの設定ファイルを確認します。
cd /etc/sysconfig/network-scripts/
ls -la ifcfg-*
CentOS 7以降ではPredictable Network Interface Namesが採用されているため、ファイル名は従来のifcfg-eth0ではなく、ifcfg-ens33やifcfg-eno16777736などハードウェア識別子に基づいた命名規則に従います。一方、CentOS 6シリーズではeth0のような従来の形式が標準です。
設定を編集する前に、環境整備を行います。ネットワークステータス確認コマンドifconfigが利用できない場合は、net-toolsパッケージのインストールが必要です。テキストエディタとしてvimが未導入の場合は、標準搭載のviで作業を進めてください。
設定ファイル内の主要パラメータは以下のように構成されます。
ONBOOT: システム起動時にインターフェースを有効化するか(yes推奨)BOOTPROTO: IP取得方式(staticで静的割り当て、デフォルトのdhcpから変更)HWADDR: ネットワークアダプタのMACアドレスIPADDR: 割り当てるIPアドレスNETMASK: サブネットマスクGATEWAY: デフォルトゲートウェイDNS1,DNS2: 優先DNSおよび二次DNS(社内DNSを優先し、外部DNSは補完として設定すると安定します)
CentOS 7系環境向けの設定例を以下に示します。既存のDHCP設定を静的IP構成へ変更する際の流れを反映しています。
# /etc/sysconfig/network-scripts/ifcfg-eno16777736 設定例
DEVICE="eno16777736"
HWADDR="00:0C:29:24:9F:BE"
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="eno16777736"
UUID="a8dc7adf-7e30-47e5-819c-2268900ddfb0"
ONBOOT="yes"
NM_CONTROLLED="yes"
# 静的IP関連設定
IPADDR="192.168.10.50"
NETMASK="255.255.255.0"
GATEWAY="192.168.10.1"
DNS1="192.168.10.2"
DNS2="8.8.8.8"
CentOS 6系環境ではデバイス名がeth0となり、設定ファイルの構造も簡素です。
# /etc/sysconfig/network-scripts/ifcfg-eth0 設定例
DEVICE="eth0"
HWADDR="00:E0:62:08:C8:A8"
TYPE="Ethernet"
UUID="9977e8c3-d3ff-499a-8646-c793726dd64c"
ONBOOT="yes"
NM_CONTROLLED="yes"
BOOTPROTO="static"
IPADDR="192.168.10.87"
NETMASK="255.255.255.0"
GATEWAY="192.168.10.1"
DNS1="192.168.10.2"
DNS2="202.96.128.86"
設定ファイルの編集が完了した後は、ネットワークサービスを再起動するか、ifupコマンドでインターフェースを再読込します。システム全体の/etc/sysconfig/networkや/etc/resolv.confへの個別記述は不要です。インターフェース固有の設定ファイルが優先して読み込まれるため、重複設定はむしろ競合の原因となります。
設定反映とステータス確認を自動化するシェルスクリプトの例を以下に示します。
#!/bin/bash
TARGET_IF="eno16777736"
if [ -f "/etc/sysconfig/network-scripts/ifcfg-${TARGET_IF}" ]; then
echo "Reloading network configuration..."
systemctl restart network || ifup ${TARGET_IF}
echo "Verifying IP assignment..."
ip addr show dev ${TARGET_IF} | grep "inet "
else
echo "Configuration file for ${TARGET_IF} not found."
exit 1
fi
ターミナル環境でのファイル操作と権限管理についても補足します。viエディタでの保存・終了操作は、:wq(保存して終了)、:q!(破棄して終了)、またはノーマルモードからZZ(大文字2回で保存終了)が一般的です。Windows環境から小規模ファイルをLinuxサーバーへ転送する場合は、lrzszパッケージを導入後、rzコマンドを実行することでGUIファイル選択ダイアログが起動します。ただし、古代理由来の制約により大規模ファイルの転送には不向きなため、大容量データにはscpやsftpの利用を推奨します。
スクリプトや実行ファイルの実行時、Permission deniedエラーが発生する場合は、実行権限が付与されていないか、ルート権限が必要であることがほとんどです。対象ファイルまたはディレクトリに対し、chmod -R 755 /path/to/targetを実行して権限を付与し、カレントディレクトリから./script.shまたはsh script.shで実行してください。Windows由来の実行形式(.exe)の直接実行は環境依存が高いため、Wine等の互換レイヤーを介する必要があります。