利用可能なネットワークインターフェイスを見つける方法は?

利用可能なネットワークインターフェイスを見つける方法は?

これはLinuxに関するものですが、一般的な* nixメソッドを知っている人がいれば良いでしょう。

昨日、Ethernetケーブルを接続した状態でシステムを起動しました。 「NetworkManager」がインストールされていないため、起動後にifconfigイーサネットインターフェイスの名前を見つけてDHCPクライアントを手動で起動しようとしましたが、表示されませんでしたlo

NICが一覧表示されlspci、適切なカーネルドライバがロードされます。システムは通常Wi-Fiを使用し、インターフェイス名はですwlan0。試してみると表示されましifconfig wlan0 upwlan0。しかし、私が覚えることができる唯一のイーサネットインターフェイス名は、eth[N]-em[N]両方動作しません。

このファイル「予測可能なインタフェース名」を参照していますが、それが何であるかを簡単な用語で説明するのには適していません。これはソースコードの一部を参照します。これは、この場合、名前がおそらくPCIバスとスロット番号から推論されたことを意味するので、不必要な複雑に見えます。

systemd他の検索でこれを組み合わせることで決定できると信じていましたが、udevそこにはほぼ100個のファイルがあり、/usr/lib/udev/rules.dどこにあるかを確認するのに1時間かかりました。もし)にはsystemd設定ファイルがありますが、これも言わないようです。

名前がどのように指定されているかだけでなく、利用可能であることを確認できればいいでしょう。もしはい、ハードウェアの問題などを排除できます。Linuxで利用可能なネットワークインタフェースの名前を簡単に見つける方法はありませんか?

答え1

すべてのインターフェイスを一覧表示する最も簡単な方法は次のとおりです。

ifconfig -a

編集する

古いシステムを使用している場合は、次のものを使用できます。

ip link show

答え2

カーネルは名前を/sysPCIデバイスツリーに別々にリストします。開始位置がわからない場合は、見つけるのは簡単ではありませんが、のシンボリックリンクを介して一緒に一覧表示します/sys/class/net。たとえば、

> ls /sys/class/net
em1 lo wlp6so

他の例:

> ls /sys/class/net
lo p6s1 wlan0

どちらがどれであるかわからない場合は、すべて一緒に入れることができます。

ifconfig [name] up 

または:

ip link set [name] up

ifconfig次に、(引数なしで)リストされた(非常に明確な)手がかりを見てください。 Freedesktop.org ドキュメントにリンクされている systemd ソースコードには、以下も引用されています。

Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan

上記の場合()のいずれかp6s1にプレフィックスはありません。

答え3

私はいつもcat /proc/net/devシンプルで覚えやすくします。

答え4

システムにIPアドレスがない場合にifconfigUbuntuからIPアドレスを取得するのに役立つ1つの方法は次のとおりです。ip

hostname -i

説明で述べたように、このメカニズムはDNSホスト名解決に依存し、利用可能なすべてのネットワークインターフェイスに対して信頼できる結果を提供しません。

それにもかかわらず、このコマンドはシステムツールを頻繁に使用できないコンテナ(Docker、LXC)シナリオの問題を解決するのに役立ちます。少なくとも場合によっては、目標に応じて役立つコンテナIPが表示されます。

関連情報