InfraAcademy

InfraAcademy Blog

【Linux】インターフェースの情報を確認する方法【IPアドレスやインターフェース名を調べる】

| #Linux #コマンド #Linux入門

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、インターフェースの情報を確認する方法について解説します。Linuxでインターフェースの情報を確認するためには、ipコマンドもしくはifconfigコマンドを使用します。

結論から言うと、現在の基本はip aというコマンドです。コマンドを使用すると、インターフェースに設定されたIPアドレスやインターフェース名を調べることができます。

長年使われてきたifconfigは、実は旧式の位置づけになっています。この記事ではipコマンドを中心に、出力の読み方やeth0・ens33といったインターフェース名の意味まで、初心者の方向けに解説していきます。

【Linux】インターフェースの情報を確認する方法

まず、ipコマンドとifconfigコマンドの使い方について解説します。

サーバーにログインして、最初に自分のIPアドレスを調べたい場面は多いですよね。どちらのコマンドでも確認できますが、2つのコマンドは立ち位置が少し違います。

現在のLinuxで標準とされているのは、iproute2パッケージに含まれるipコマンドです。一方のifconfigはnet-toolsパッケージの古いコマンドで、最近のディストリビューションには最初から入っていないことも増えました。

ipコマンドの使い方(ip a)

まずは、標準のipコマンドから見ていきましょう。インターフェースの情報を表示するには、次のように入力します。

ip a

ip aは、ip address showを省略した書き方です。ip addrip addressと入力しても、まったく同じ結果が表示されます。

コマンドを入力すると、以下のように表示されます。

ipコマンドの表示結果

インターフェースに設定されたIPアドレスなどが分かります。この出力の細かい読み方は、次の章で項目ごとに解説しますね。

ifconfigコマンドの使い方

次に、ifconfigコマンドを使ってインターフェース情報を表示させます。ターミナルでifconfigと入力するだけです。

コマンドを入力すると、このようにインターフェースの情報を表示します。

ifconfigの表示結果

ifconfigコマンドはデフォルトで使えない場合があるので、その際はipコマンドを使うようにしましょう。もしくは、以下のコマンドでインストールするとifconfigコマンドが使えるようになります。

apt-get install net-tools

RHEL系のディストリビューションなら、dnf install net-toolsでインストールできます。そもそもコマンドが入っているかどうかは、whichコマンドとwhereisコマンドでコマンドの場所を調べる方法で確認できますよ。

インストール方法については、こちらの記事で詳しく解説しています。

【linux】IPアドレスを確認する方法は?【ifconfigが使えない場合の対処方法解説】

なぜifconfigは使えないことがあるのか

command not foundと表示されて、驚いた経験はありませんか。これは故障ではなく、ディストリビューション側の方針変更が理由です。

ifconfigを含むnet-toolsは開発が長く停滞しており、後継のiproute2への移行が進みました。その流れを受けて、RHEL 8やCentOS 8以降ではnet-toolsが標準では入らなくなっています。

Ubuntuでも、最小構成でインストールした場合はifconfigが入っていません。今からLinuxを学ぶなら、どの環境でも確実に使えるipコマンドを軸に覚えるのがおすすめです。

ip aの出力結果の読み方

コマンドを打てるようになっても、出力の意味が分からないと不安ですよね。ここでは、ip aで表示される内容を項目ごとに読み解いていきます。

出力には、loeth0のようなインターフェースが並びます。loはループバックインターフェースといって、自分自身との通信に使われる仮想的なインターフェースです。

loには必ず127.0.0.1というIPアドレスが設定されています。外部との通信に使われるのは、eth0などのもう一方のインターフェースです。

主な項目の意味を、表にまとめます。

表示 意味
lo ループバックインターフェース(自分自身との通信用)
state UP インターフェースが有効な状態(無効ならDOWN)
mtu 1500 一度に送信できるデータサイズの上限
link/ether インターフェースのMACアドレス
inet IPv4アドレスとサブネットマスク
inet6 IPv6アドレス

IPアドレスを確認したいときは、inetの行に注目しましょう。192.168.1.10/24のような形式で表示され、/24の部分はサブネットマスクを表しています。

インターフェース名の横にある<BROADCAST,MULTICAST,UP,LOWER_UP>は、フラグと呼ばれる状態情報です。この中にUPが含まれていれば、インターフェースは有効になっています。

link/etherの行には、MACアドレスが表示されます。機器の調査やネットワークの設定作業で必要になることが多いので、場所を覚えておくと便利です。

stateDOWNになっている場合、そのインターフェースでは通信できません。通信トラブルの切り分けでは、まずここを確認するのが定石です。

ipコマンドの便利な使い方

ipコマンドの機能は、アドレスの表示だけではありません。サブコマンドを切り替えることで、ネットワーク関連の情報をまとめて確認できます。

代表的なサブコマンドを表にまとめました。

コマンド 確認できる内容
ip aip address IPアドレスなどのアドレス情報
ip link インターフェースのリンク状態やMACアドレス
ip route ルーティングテーブル
ip -s link 送受信パケット数などの統計情報

特定のインターフェースだけ表示する

インターフェースが多い環境では、目的の情報を探すのが大変です。そんなときは、ip addr show eth0のようにインターフェース名を指定しましょう。

指定したeth0の情報だけが表示されるので、出力がすっきりします。名前の部分は、自分の環境のインターフェース名に置き換えてください。

一覧を見やすく表示するip -br a

複数のインターフェースの状態をまとめて確認したいときは、もっと簡潔な表示が便利です。-br(brief)オプションを付けてみましょう。

ip -br a

lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.1.10/24

インターフェース名・状態・IPアドレスだけが1行ずつ並びます。状態とアドレスをひと目で確認できるので、実務でもよく使われている書き方です。

ifconfigコマンドのオプション

ここからは、ifconfigコマンドのオプションを紹介します。旧式とはいえ、古くから稼働しているサーバーではまだ現役で使われているからです。

ifconfigコマンドには様々なオプションがあるので、いくつか紹介します。

特定のインターフェースを見る場合

特定のインターフェースの情報を見る場合は、以下のように入力します。

ifconfig [インターフェース名]

例
ifconfig eth0

コマンドを入力すると、eth0のインターフェースだけの情報のみが表示されます。

ifconfig eth0の表示結果

インターフェースの全ての情報を見る

インターフェースの全ての情報を見る場合は、-aオプションを付けてifconfig -aと入力します。無効になっているインターフェースも含めて、すべて表示されるのが特徴です。

この場合、インターフェースが多く表示されてしまうので注意しましょう。目的のインターフェースが決まっているなら、名前を指定した方が早いです。

インターフェースの通信状況を見る

インターフェースの通信状況を見る場合は、-sオプションを使用してifconfig -sと入力します。

コマンドを入力すると、各インターフェースの通信状況が確認できます。

ifconfig -sの表示結果

送受信したパケット数やエラーの数が、インターフェースごとに一覧表示されます。ipコマンドで同じような情報を見たい場合は、ip -s linkを使いましょう。

ifconfigからipコマンドへの対応表

ifconfigに慣れている方ほど、ipコマンドへの移行で戸惑いやすいです。やりたいことごとに、2つのコマンドの対応関係を整理しておきましょう。

やりたいこと ifconfig(net-tools) ip(iproute2)
全インターフェースの表示 ifconfig ip a
特定インターフェースの表示 ifconfig eth0 ip addr show eth0
インターフェースの有効化 ifconfig eth0 up ip link set eth0 up
通信状況の確認 ifconfig -s ip -s link
ルーティングテーブルの表示 netstat -r ip route

net-tools系では、ルーティングテーブルの確認にnetstatという別のコマンドを使っていました。iproute2では、これらの機能がipコマンドのサブコマンドとして1つに整理されています。

対応関係さえ頭に入れておけば、どちらの環境に入っても慌てずに済みますね。

インターフェース名の読み方(eth0・ens33・enp0s3)

教科書ではeth0と書かれているのに、実際の環境ではens33やenp0s3と表示されて戸惑ったことはありませんか。実はこれ、インターフェースの命名規則が途中で変わったことが原因です。

最近のLinuxでは物理的な接続場所からインターフェース名を自動で決めるため、eth0ではなくens33やenp0s3のような名前になります。この仕組みは、Predictable Network Interface Names(予測可能なネットワークインターフェース名)と呼ばれています。

旧来の方式では、OSが検出した順にeth0、eth1と名前を付けていました。しかしこの方式には、NICが複数あると起動のたびに名前の順番が入れ替わる恐れがあるという弱点がありました。

そこでRHEL 7以降のディストリビューションでは、接続場所にもとづく新しい命名規則がデフォルトになっています。名前の読み方を表にまとめました。

名前の例 意味
eth0 旧来の命名規則によるイーサネット(検出順に番号が付く)
eno1 オンボード(マザーボード直付け)のイーサネット
ens33 PCI Expressのホットプラグスロット番号にもとづく名前
enp0s3 PCIバスの位置(バス0・スロット3)にもとづく名前
wlp2s0 無線LANのインターフェース
lo ループバックインターフェース

先頭のenはEthernet、wlは無線LANを表しています。その後ろの文字が、oならオンボード、sならスロット番号、pならバスの位置という接続場所の情報です。

VirtualBoxで作った仮想マシンではenp0s3、VMware環境ではens33という名前をよく見かけます。VirtualBoxでLinuxをインストールする手順で環境を作った方は、ぜひ自分の環境の名前を確認してみてください。

名前が違っても、インターフェースとしての役割は同じです。eth0はあくまで一例と理解しておけば、どの環境でも迷わなくなりますよ。

通信できないときのインターフェース確認手順

サーバーと通信できないとき、インターフェースの確認は切り分けの第一歩になります。ここでは、ipコマンドを使った基本の確認手順を紹介します。

順番に見ていけば、原因のあたりを付けやすくなりますよ。

手順1:インターフェースの状態を確認する

まずip aを実行して、対象のインターフェースがstate UPになっているかを確認します。

DOWNと表示されていたら、そのインターフェースは無効の状態です。ip link set eth0 upのように入力して、有効化してみましょう。

このコマンドには管理者権限が必要です。一般ユーザーで作業している場合は、先頭にsudoを付けて実行してください。

手順2:IPアドレスが設定されているか確認する

状態がUPでも、IPアドレスが付いていなければ通信できません。inetの行が存在するか、意図したアドレスになっているかを確認しましょう。

DHCPで取得するはずのアドレスが付いていない場合は、ネットワーク側の問題も考えられます。固定設定の環境なら、設定ファイルの内容を見直してみてください。

手順3:ルーティングを確認する

インターフェースに問題がなければ、次は経路の確認です。ip routeと入力すると、ルーティングテーブルとデフォルトゲートウェイが表示されます。

defaultの行が無い場合、外部のネットワークへは出ていけません。ゲートウェイのアドレスにpingが通るかどうかも、あわせて確認すると確実です。

インターフェース確認でよくある疑問

最後に、初心者の方からよく聞かれる疑問に答えておきます。

ifconfigとipコマンドはどちらを覚えるべき?

これから学習を始めるなら、ipコマンドを優先して覚えましょう。新しい環境ではifconfigが入っていないことも多く、ipコマンドならほぼすべてのLinuxで使えるからです。

ただし、古い書籍や現場の手順書にはifconfigも登場します。LPICのようなLinux資格の学習でも両方の知識が問われるので、読める程度には押さえておくと安心です。

コマンドは実際に打って覚えるのが一番の近道です。LPICのコマンドを実機で勉強する方法も参考にしてみてください。

ipコマンドで設定したIPアドレスは再起動後も残る?

残りません。ipコマンドでアドレスを追加・変更しても、その設定は一時的なもので、再起動すると消えてしまいます。

設定を永続化したい場合は、NetworkManagerのnmcliコマンドや設定ファイルで行うのが定番です。設定ファイルを編集する機会も多いので、viコマンドの使い方もあわせて覚えておきましょう。

IPアドレスだけを手早く知る方法はある?

hostname -Iと入力すると、ホストに設定されたIPアドレスだけが表示されます。出力が短いので、確認だけしたいときに便利な方法です。

NetworkManagerが動いている環境なら、nmcli device showでも詳細な情報を確認できます。とはいえ、インターフェースの状態まで含めて確認するならip aが確実です。

インターフェースを確認する方法まとめ

今回の記事では、Linuxでインターフェースの情報確認する方法を解説しました。

現在の基本はip aで、ifconfigは旧式のコマンドという関係でしたね。出力を読むときは、inetのIPアドレスとstateの状態に注目しましょう。

ens33やenp0s3といった名前は、接続場所にもとづく新しい命名規則によるものでした。名前の読み方まで分かると、どんな環境でも落ち着いて作業できます。

インターフェースの確認はlinuxの初歩中の初歩なので、しっかりと覚えておきましょう!

コマンドを実際に手を動かして試したい方には、ブラウザ上でLinuxを練習できるサーバー学習サイトInfraAcademyがおすすめです。

以上で解説を終わります。当ブログではインフラに関連した内容を発信しているので興味のある方は是非ご覧ください。

Linux入門講座一覧のほか、ネットワーク入門講座一覧AWS入門講座一覧も公開しています。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る