CentOS7のネットワークディレクトリ、ifconfigの代替であるipコマンド、ifupコマンド、networkスクリプト、ネットワークデバイスの命名ルール、アドレスの設定方法などをまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.sysconfigディレクトリ内のネットワーク設定ファイル
- 2.ifconfigの代替 ipコマンド
- 3.ifupコマンド、/etc/init.d/networkスクリプト 4.ネットワークデバイスの命名ルール
- 5.ネットワークプロファイル名を変更する方法
- 6.ネットワークアドレスの設定
・ほとんどのネットワーク設定の設定ファイル、スクリプトの保存場所。
・インターフェイス固有の情報は、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
・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
・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
ホットプラグスロットの索引番号
x
MACアドレス
p
PCIの地理的な場所
p
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