質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

1回答

1598閲覧

ifcfgコマンドでデバイスの詳細を確認できない

ren.w

総合スコア42

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

1グッド

1クリップ

投稿2022/03/05 04:24

編集2022/03/05 05:47

前提・実現したいこと

VitrualBoxを使用しているのですが、NATアダプタのenp0s3の詳細が見たくてcat /etc/sysconfig/network-scripts/ifcfg-enp0s3コマンドを入力しても、何も表示されません。
catの部分をviにしてみても何も書かれていません。
それなのにも関わらず、ip aコマンドだと詳細が表示されます。
調べても同じ事例は見当たらなかったため、解決策をお願いします。

該当のソースコード

sh

1[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 2[root@localhost ~]#
endy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答

以下の順に回答します。
最初に直接的な答えとして、設定確認方法。
後半に恐らく知りたいと思われる情報を補足します。

  • 設定確認方法
  • 何が起こっているか
  • NetworkManagerの使い方 (設定確認方法の補足)

設定確認方法

  • nmcli
  • nmcli connection show
  • nmcli connection show enp0s3
  • ip address show
  • ip address show enp0s3

何が起こっているか

ifconfigで設定を表示し、ifcfg-*ファイルに設定を記述してservice network restartで設定反映をするというワークフローを想定しているかなと思います。

しかし、これはCentOS6系までの話です。
今お使いなのはCentOS7系以降の環境と推測します。
(cat /etc/os-releaseや、cat /etc/centos-releaseなどのコマンドでCentOSのバージョンを確認できます。)

CentOS6系とCentOS7系以降では初期で導入されているRPMパッケージが異なりますので、ifconfigなどのコマンドは導入されていません。
別の方法で設定変更を行うことが推奨されます。

Network Managerを使って設定変更する

CentOS7系では、基本的にはNetworkManagerというサービス (デーモン) を使ってネットワークの設定変更を行います。
NetworkManagerと連携したツールは、以下が挙げられます。

  • nmcli (CLI。コマンドラインで使う。一番メジャーな方法)
  • nmtui (TUI。コマンドラインで使う)
  • GUIツール (Gnomeデスクトップなどで、右下のSystem Trayのネットワークアイコンなどから呼び出せると思います)

nmcliの使い方については、ブログや公式ドキュメントなど色々な場所で説明があります。
CentOSをお使いとのことなので、最も公式に近いRHELのドキュメントのURLを貼っておきます。

RHEL8 - ネットワークの設定及び管理

ブログだとこのあたりがあります。

ipコマンドは?

ipコマンドでもネットワーク設定変更はできますが、OS再起動したら設定が消えます。
「ipコマンドによる設定変更はあまりやらない」という理解で良いと思います。
ipコマンドを使って設定変更するケースは極めて稀です。

NetworkManagerとipコマンドを混ぜて使うと色々と面倒なので、ipコマンドで設定変更しないことをおすすめします。

ipコマンドを使って設定「確認」するのはOKです。

nmcliのコマンドサンプル

サンプル載せておきます。
syntax等はググりながら頑張って勉強してください。

設定確認

  • nmcli
  • nmcli device status
  • nmcli connection show
  • nmcli connection show 【connection名。enp0s3など】

connection作成

nmcli connection add ifname enp0s3 con-name enp0s3 type ethernet ipv4.method manual ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 autoconnect yes

connection削除

nmcli connection delete enp0s3

設定反映

nmcli connection up enp0s3

(非推奨) ifconfigを復活させる方法

今後なくなっていく方向になっているのであまりおすすめしませんが、ifconfigをインストールすることもできます。
以下のコマンドでインストールすべきRPMを検索します。

yum provides ifconfig
または
dnf provides ifconfig

するとnet-toolsとわかるので、root権限でyum install net-toolsを実行すればifconfigが入ると思います。
ただ、おすすめはしません。

投稿2022/03/05 09:07

stopendy0122

総合スコア170

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ren.w

2022/03/05 10:42

回答ありがとうございます。 nmcli connection show enp0s3 でアダプタの詳細を確認することができました。 しかし、cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 で何も表示されないのは何故でしょうか。
stopendy0122

2022/03/05 12:11

>cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 で何も表示されないのは何故でしょうか。 NetworkManagerがそのファイルパスで設定情報を管理していないためだと思います。 NetworkManagerがどのパスに設定ファイルを格納するかは、/etc/NetworkManager/NetworkManager.confのpluginsという設定次第です。 詳細はman NetworkManager.confに書いてあります。 もしplugin=keyfile, ifcfg-rh のような値がセットされていた場合、connectionの定義ファイルは恐らく以下のいずれかに存在します。 1. /etc/NetworkManager/system-connections/ 2. /etc/sysconfig/network-scripts/ifcfg-* 今回は2になかったとのことなので、恐らく1の方に定義ファイルがあるのではないでしょうか。 1 (plugin=keyfile)、2 (plugin=ifcfg-rh) のそれぞれについて、manの他に以下のリンクに書いてありました。 https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/assembly_manually-creating-networkmanager-profiles-in-key-file-format_configuring-and-managing-networking https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-ip-networking-with-ifcfg-files_configuring-and-managing-networking nmcliで設定変更している限りは、これらの設定ファイルを普段意識することはありません。 設定ファイルを書き換えてnmcli connection reload コマンドを実行して反映する方法もあるようですので、そのやり方が好みでしたら手順を研究してみるのもありかもしれませんね。
ren.w

2022/03/06 05:54

ありがとうございます。 プラグインはifcfg-rhだったのでls /etc/NetworkManager/system-connections/でディレクトリの中身を表示させようとしたのですが、こちらも何も表示されませんでした。
stopendy0122

2022/03/06 08:09

>プラグインはifcfg-rhだったのでls /etc/NetworkManager/system-connections/でディレクトリの中身を表示させようとしたのですが、こちらも何も表示されませんでした。 plugin=ifcfg-rhであれば、正しいパスは/etc/sysconfig/network-scripts/ifcfg-* です。 ただ、当初の質問によればこのファイルが存在しないか、何も書いてないか...といった状態でしたよね。 私の方でも手元のCentOS Stream 8 (≒CentOS8)で確認したので、その結果を先に共有させてください。 私の環境に置いても、/etc/NetworkManager/NetworkManager.confを見る限り、デフォルトでplugin=ifcfg-rhになっているようでした。 /etc/sysconfig/network-scripts/ifcfg-*に設定情報が書いてありました。 また、試しにconnection設定を変更してみると上記ファイルが更新されていました。 ren.wさんの環境でこのファイルが存在しないか何も書いていないのだとすると、もしかしたらこのファイルを手動で更新したのではないでしょうか? 試しにnmcli connection modify などで一部の設定を書き換えてみてください。 すると、/etc/sysconfig/network-scripts/ifcfg-* にNetworkManagerの設定通りのファイルが生成しているのではないかと思います (私の環境ではそうなりました)。 上述の通り、nmcli connection reloadを実行するか、NetworkManager.serviceを再起動しない限り、NetworkManagerは設定ファイルを見に行きません。 逆に設定ファイルが存在しなかったり空白だったりすると、上記のようにreloadやrestartしたときにネットワークが不通になるはずです。 まずはnmcli connection add や clone、modifyなどで設定変更をしてみて、該当の設定ファイルが生成するかをご確認いただければと思います。
ren.w

2022/03/06 10:34 編集

> plugin=ifcfg-rhであれば、正しいパスは/etc/sysconfig/network-scripts/ifcfg-* です。 失礼しました。番号をよく確認しておりませんでした。 > ren.wさんの環境でこのファイルが存在しないか何も書いていないのだとすると、もしかしたらこのファイルを手動で更新したのではないでしょうか? nmtuiコマンドでIPアドレスを動的から静的に変更したことはありますが、vi /etc/sysconfig/network-scripts/ifcfg-enp0s3コマンドで変更したことはありません。始めから何も書かれていなかったので。 nmcli connection modifyコマンドで一旦ipアドレスを変更して再びcat /etc/sysconfig/network-scripts/ifcfg-enp0s3コマンドで確認してみましたが、何も書かれていないままでした。 しかし、何も書かれていないのにも関わらずnmcli connection reloadコマンドで再起動しても特にネットワークに問題はありませんでした。
stopendy0122

2022/03/06 10:54

> vi /etc/sysconfig/network-scripts/ifcfg-enp0s3コマンドで変更したことはありません。始めから何も書かれていなかったので。 なるほど...失礼いたしました。 >何も書かれていないのにも関わらずnmcli connection reloadコマンドで再起動しても特にネットワークに問題はありませんでした。 ご共有ありがとうございます。 これが不思議ですね...。 nmcli connection reloadを実行しても問題なかったとのことですので、どこかしらにファイルがあるとは思います。 こちらでも環境を変えてRHEL7.9にて引き続き検証しました。 まず、以下のコマンドを実行します。 元々autoconnect yesでも問題ありません。 nmcli connection modify eth0 autoconnect yes 続いて、以下のコマンドでNetworkManager.serviceの詳細ログを確認します。 root権限を持つか、wheelなどのグループに所属するユーザーで実行する必要があります。 journalctl -eu NetworkManager.service すると、以下のようなログが出てきました。 Mar 06 19:49:32 rhel79 NetworkManager[681]: <info> [1646563772.1647] settings-connection[0x561eefb73100,cc73252a-b063-4687-bd4d-6ca1a050e2e1]: write: successfully updated (ifcfg-rh: update /etc/sysconfig/network-scripts/ifcfg-eth0), connection was modified in the process 上記ログから、connection情報が格納されたファイルを確認できると思います。 ren.wさんの環境でも試してみていただけますでしょうか?
ren.w

2022/03/06 12:11

何度も解決策を提案してくださりありがとうございます。 journalctl -eu NetworkManager.serviceコマンドを打ってみたところ、私は以下のログが出てきました。 ```sh 3月 06 21:01:02 localhost.localdomain NetworkManager[684]: <warn> [1646568062.6967] ifcfg-rh: loading "/etc/sysconfig/network-scripts/ifcfg-enp0s3" fails: 3月 06 21:02:14 localhost.localdomain NetworkManager[684]: <info> [1646568134.3801] settings-connection[0x55f0bdb20200,0864a9c1-4615-4424-aea4-48c89ab58ba3 3月 06 21:02:14 localhost.localdomain NetworkManager[684]: <info> [1646568134.3813] audit: op="connection-update" uuid="0864a9c1-4615-4424-aea4-48c89ab58ba ``` 一番上のログを見る限り、"/etc/sysconfig/network-scripts/ifcfg-enp0s3"の読み込みに失敗していますね。 これが何も表示されない原因でしょうか。 下二つは恐らくnmcli connection modify eth0 autoconnect yesで設定を変更したログですよね。
stopendy0122

2022/03/06 15:19

いえいえ、私としても勉強になります。 また、ご確認ありがとうございます。 ログから、本来であれば /etc/sysconfig/network-scripts/ifcfg-enp0s3 に書き込もうとしていることが伺えました。 nmcli connection modify コマンドなので、内部的にはファイルの内容を読み込み、編集しようとしているのでしょうか。 そして、仰るとおり読み込みの段階で失敗しているのではないかと思います。 >下二つは恐らくnmcli connection modify eth0 autoconnect yesで設定を変更したログですよね。 はい、そうだと思います。 私の環境のログでは、末尾に"write: successfully" があるのですが、ren.wさんのログには無いのが少し気になるぐらいです。 上記の1行目のログ (〜 fails:) のログを手元で再現できず、調査が難航しています。 NetworkManagerはroot権限で動いているので、File Permissionの問題とは考えにくいです。 SELinuxによるエラーであればroot権限でも失敗しました。 ただ失敗させても「上記のログは発生せず、しかしファイルは書き換わっていなかった」という結果になりました。 それに、SELinuxによるエラーは「ホームフォルダなどで作成したテキストファイルをmvでifcfg-enp0s3に移動して配置する」といった特殊なケースぐらいしか考えられないので、これも違うかな...と思います。 原因が想定できないため、ここから先はロジカルな切り分けが難しいです...。 強いて言えば、以下のようにインターフェースを作り直すことで直るかも...と思ったぐらいです。 ``` sudo nmcli connection clone enp0s3 tmp sudo mv /etc/sysconfig/network-scripts/ifcfg-enp0s3 /tmp sudo nmcli connection delete enp0s3 sudo nmcli connection clone tmp enp0s3 ``` 設定ファイルを削除し、connectionの複製により新しく作り直すことアプローチです。 原因究明は放棄しています...。 また、直るかどうかも半信半疑です。 念のため、connectionを新規で作り直すためのコマンドも書いておきます。 NATインターフェースとのことなので、恐らくこのような設定 (DHCP利用) だと思います。 ``` sudo nmcli connection add ifname enp0s3 con-name enp0s3 type ethernet autoconnect yes ``` 他にはOS再起動など、当てずっぽうの解決策しか思いつきません (すみません...)。 上記を試した結果など、何か追加情報があればまたご返信お願いします。
stopendy0122

2022/03/06 15:26

一つ忘れていました。 よろしければ、以下ファイルの中身も情報としていただけますか? cat -A で表示すれば特殊文字など諸々見えますので、その情報をいただけるとより嬉しいです。 もし未解決であれば、で結構です。 ``` /etc/sysconfig/network-scripts/ifcfg-enp0s3 ``` NetworkManagerがエラーになる原因が、以下の4つと考えていますが、以下のうち(4) に関連する依頼です。 (1) NetworkManager自体のエラー → 特定のバージョン起因のバグなど含め、このケースの対処は難しそうです... (2) NetworkManager.conf → 恐らくいじっていないと思うので、この可能性も低いと思います (3) /etc/sysconfig/network-scripts/ifcfg-enp0s3 のSELinux観点のエラー (4) /etc/sysconfig/network-scripts/ifcfg-enp0s3 のファイルの中身のエラー (構文など)
ren.w

2022/03/08 14:26

申し訳ありません、通知が届いておらず返信に気付いておりませんでした。 教えていただいたコマンドでデバイスを作り直したところ、無事 cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 で詳細を表示させることができました。ありがとうございます。 また、作り直す前にcatに -A オプションを付けて実行してみましたが、こちらも何も表示されませんでした。 そしてNATインターフェイスについてですが、webサーバー用に作ったためCentOSをインストールする前のネットワーク設定はDHCPではなく静的で設定しています。 これが原因の可能性はないでしょうか。
stopendy0122

2022/03/08 17:25

ご確認ありがとうございました。 ひとまず直ったようで良かったです! 「ファイルの中身を変えずに作り直したら直った」ので、ファイル自体がNetworkManagerの状態のどちらかに異常があったのかな...と想像しています。 NATインターフェイスに元々静的なIPを設定していたことで通信が通らないなどの問題は起こりうると思うのですが、今回の事象にはあまり結びつかない気がします...。 とはいえ仮想化ソフトのNATインターフェイスの挙動が通常の理屈とは異なる可能性も否めないとも思います。 原因ははっきりしないものの、(VM再構築以外の) 解決策がわかって本当に良かったです。
ren.w

2022/03/10 12:05

解決まで付き合っていただきありがとうございました。 ベストアンサーに選ばせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問