VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

CentOS7でネットワークアドレスを設定

CentOS7のネットワークディレクトリ、ifconfigの代替であるipコマンド、ifupコマンド、networkスクリプト、ネットワークデバイスの命名ルール、アドレスの設定方法などをまとめました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

sysconfigディレクトリ内のネットワーク設定ファイル
●/etc/sysconfig/ディレクトリ
 
・ほとんどのネットワーク設定の設定ファイル、スクリプトの保存場所。
・インターフェイス固有の情報は、network-scripts/ディレクトリー内のifcfg-*ファイルに保存される。
・/etc/sysconfig/networkはグローバル設定用のファイル。
 
●/etc/NetworkManager/ディレクトリ
 
・VPN、モバイルブロードバンド、および PPPoE接続の情報は、/etc/NetworkManager/system-connections/に保存される。
 
# cd /etc/NetworkManager
# ls
NetworkManager.conf VPN conf.d dispatcher.d dnsmasq.d system-connections
 
●ifcfg-*ファイルを手動で変更した場合
 
・ifcfg-*ファイルを変更しても、NetworkManagerは自動的に変更を認識しないので、変更を通知する必要がある。
 
①すべての接続プロファイルをリロードする場合
# nmcli connection reload
 
②特定の設定ファイルをリロードする場合
# nmcli con load /etc/sysconfig/network-scripts/ifcfg-ifname
 
●nmtui、nmcliなどのツールで設定を変更した場合
 
・nmcliどのツールでなされた変更はリロードする必要がないが、関連するインターフェイスをオフラインにしてから再度オンラインにする必要がある。
 
# nmcli dev disconnect interface-name
# nmcli con up interface-name
ifconfigの代替 ipコマンド
●ipユーティリティーの概要
 
・ipユーティリティーのコマンドはそのアップストリームのパッケージ名からiproute2と呼ばれることもある。
・パッケージ名はiproute。
・ipユーティリティーはifconfigユーティリティーの代替。
 
※ifconfigはデフォルトでは使用できない。ifconfigを提供するnet-toolsパッケージがInfiniBandアドレスをサポートしないため。
 
・ipコマンドを使うと、NetworkManager と並行して、インターフェイスにアドレスやルートを追加したり削除したりすることができる。
 
・コマンドライン上で発行されたipコマンドは、システム再起動後は維持されない。
再起動後も維持する場合は、設定ファイル(ifcfgファイル)を利用するか、コマンドをスクリプトに追加する。
 
●バージョンを確認
 
# ip -V
ip utility, iproute2-ss130716
 
●パッケージ確認
 
# which ip
/usr/sbin/ip
 
# rpm -qf /usr/sbin/ip
iproute-3.10.0-21.el7.i686
 
●ip addrコマンドの使用方法
# ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                                      [ CONFFLAG-LIST ]
       ip addr del IFADDR dev STRING
       ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
                            [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]
       ip addr {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
          [ broadcast ADDR ] [ anycast ADDR ]
          [ label STRING ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG  := [ permanent | dynamic | secondary | primary |
           tentative | deprecated | dadfailed | temporary |
           CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG  := [ home | nodad ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := forever | SECONDS

 
●ip addr コマンドでアドレス確認

# ip addr show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN
    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: enp0s29f7u1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 34:95:db:2a:bc:2c brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global dynamic enp0s29f7u1
       valid_lft 14364sec preferred_lft 14364sec
    inet6 2001:c90:8841:83d3:3695:dbff:fe2a:bc2c/64 scope global dynamic
       valid_lft 2147442sec preferred_lft 604764sec
    inet6 fe80::3695:dbff:fe2a:bc2c/64 scope link
       valid_lft forever preferred_lft forever

●ip addr コマンドでアドレス設定
 
構文
ip addr [ add | del ] address dev ifname
 
例)
# ip address add 10.0.0.3/24 dev eth0
# ip addr show dev eth0

ifupコマンド、/etc/init.d/networkスクリプト
●ifupコマンド
 
・NetworkManagerが稼働している場合、ネットワークスクリプトはNetworkManagerの起動を試みるが、NetworkManagerはネットワークスクリプトを起動することはない。
 
・ifupスクリプトは汎用スクリプトで、いくつかの動作を行った後に、ifup-ethXやifup-wireless、ifup-ppp などのインターフェイス固有のスクリプトを呼び出す。
 
ifup eth0を手動で実行すると、以下を行う。
 
①ifupが/etc/sysconfig/network-scripts/ifcfg-eth0という名前のファイルを検索。
②ifcfgファイルが存在する場合、ifupはそのファイルのTYPEキーを探して、どのタイプ固有のスクリプトを呼び出すか判断する。
③ifupはTYPEに基づいてifup-wireless、ifup-eth、またはifup-XXXのいずれかを呼び出す。
④タイプ固有のスクリプトがタイプ固有のセットアップを実行する。
⑤その後に、タイプ固有のスクリプトは、共通機能にDHCPや静的セットアップなどのIP関連タスクの実行を許可する。
 
●/etc/init.d/networkスクリプト
 
①起動時にすべてのifcfgファイルを読み込み、ONBOOT=yesとなっているファイルすべてに関して、NetworkManagerがすでにifcfgファイルのDEVICEを起動しているかどうかをチェック。
②NetworkManagerがデバイスを起動している最中、またはすでに起動し終わっている場合は、そのファイルについてはこれ以上なにも実行されず、次のONBOOT=yesファイルがチェックされる。
③NetworkManagerがまだデバイスを起動していない場合は、/etc/sysconfig/network-scripts/ifup-ethなどのinitscriptsは従来の動作を継続し、そのifcfgファイルのifupを呼び出す。
④その結果、ifcfgファイルでONBOOT=yes となっているものはすべて、NetworkManagerまたはinitscriptsでシステム起動時に開始されることが期待される。
⑤これにより、(ISDN やアナログダイアルアップのモデムなどの) NetworkManager が処理しないレガシーネットワークタイプや NetworkManager のサポート対象となっていない新規アプリケーションは、NetworkManager がこれらを処理できなくても initscriptsで正常に開始されることになる。
ネットワークデバイスの命名ルール
●ネットワークを確認
# nmcli con
名前         UUID         タイプ          デバイス
enp0s29f7u1  dbeda・・・  802-3-ethernet  enp0s29f7u1
 
# nmcli dev
デバイス     タイプ    状態      接続
enp0s29f7u1  ethernet  接続済み  enp0s29f7u1
lo           loopback  管理無し  --
 
# nmcli device show enp0s29f7u1
GENERAL.デバイス:                       enp0s29f7u1
GENERAL.タイプ:                         ethernet
GENERAL.ハードウェアアドレス:           34:95:DB:2A:BC:2C
GENERAL.MTU:                            1500
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           enp0s29f7u1
・・・・

 
●設定ファイルとデバイス名
 
# ls /etc/sysconfig/network-scripts/
ifcfg-enp0s29f7u1 ifdown-isdn ifup-bnep ifup-routes
 
ネットワークファイル名は、ifcfg-nameと命名され、”name”は設定ファイルが制御するデバイス名を指す。
 
●ネットワークデバイスの命名ルール
 
※参考情報
 
○命名ルールの考え方
 
・従来のLinuxのネットワークインターフェイスにはeth[0123…] などの数値が付けられていたが、これらの名前は必ずしもシャーシー上の実際のラベルと一致していない。
 
・RHEL7では、udevが多くの異なる命名スキームをサポートしていて、デフォルトでは、ファームウェア、トポロジー、および場所情報に基づいて固定名が割り当てられる。
 
これには、名前が完全に自動的かつ予想可能であり、ハードウェアが追加もしくは削除されても (再列挙がなされず) 固定のままであり、またハードウェアが壊れた場合にシームレスに交代可能であるという利点がある。
 
マイナス面は、従来使用されていたeth0やwlan0といった名前と比べて読みにくい場合がある。
 
○命名ルール
 
・先頭2文字
en はイーサネット
wl はワイヤレス LAN (WLAN)
ww はワイヤレス広域ネットワーク (WWAN)
 
・3文字目以降
o
 オンボードデバイスの索引番号
s[f][d]
 ホットプラグスロットの索引番号
x
 MACアドレス
ps[f][d]
 PCIの地理的な場所
ps[f][u][..][c][i]
 USBポート番号チェーン

ネットワークプロファイル名を変更する方法
以下のようにネットワークの名前もデバイス名と同じ名前になっています。入力が面倒なので簡単な文字列に変更する場合の例を示します。
 
●ネットワークの設定を確認
# nmcli con
名前         UUID         タイプ          デバイス
enp0s29f7u1  dbeda・・・  802-3-ethernet  enp0s29f7u1

# nmcli --fields connection con show enp0s29f7u1
connection.id:                          enp0s29f7u1
connection.uuid:                        dbedadc5-12b2-416c-8937-41cf3d833c0c
connection.interface-name:              enp0s29f7u1
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
・・・

●ネットワークプロファイル名を変更
 
nmcliコマンドでもできますが、nmtuiの方が全体の設定を見渡せてわかりやすいので、こちらを使用しています。
 
nmtui
→接続の編集
→設定対象の接続を選択して”編集”
→プロファイル名を変更。
 
ネットワークを再起動して有効にする。
# systemctl restart network
 
●設定後の確認

# nmcli con
名前  UUID           タイプ          デバイス
eth0  dbedadc5-・・  802-3-ethernet  enp0s29f7u1

# nmcli --fields connection con show eth0
connection.id:                          eth0
connection.uuid:                        dbedadc5-12b2-416c-8937-41cf3d833c0c
connection.interface-name:              enp0s29f7u1
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
・・・

# more ifcfg-enp0s29f7u1
TYPE=Ethernet
BOOTPROTO=none
・・・
NAME=eth0
UUID=dbedadc5-12b2-416c-8937-41cf3d833c0c
DEVICE=enp0s29f7u1
ONBOOT=yes
DNS1=192.168.1.1
IPADDR=192.168.1.3
PREFIX=24
GATEWAY=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
ネットワークアドレスの設定
●設定の確認
 
①DHCP使用の場合の例
# nmcli --fields ipv4 con show eth0
ipv4.method:                            auto
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:
ipv4.gateway:                           --
・・・・

# more /etc/sysconfig/network-scripts/ifcfg-exxxx
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
・・・
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

②静的IPアドレス設定の例

# nmcli --fields ipv4 con show eth0
ipv4.method:                            manual
ipv4.dns:                               192.168.1.1
ipv4.dns-search:
ipv4.addresses:                         192.168.1.3/24
ipv4.gateway:                           192.168.1.1
・・・・・

# more /etc/sysconfig/network-scripts/ifcfg-exxxx
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
・・・・
ONBOOT=yes
IPADDR=192.168.1.3
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

●設定の変更
 
# nmtui
→接続の編集
→設定対象の接続を選択して”編集”
 
①静的IPアドレス設定の場合
 
IPv4設定:手作業
アドレス:192.168.1.3/24
ゲートウェイ:192.168.1.1
DNS:192.168.1.1
 
②DHCP使用の場合
 
IPv4設定:自動
 
ネットワークを再起動して有効にする。
# systemctl restart network

モバイルバージョンを終了