Bagaimana saya bisa menemukan antarmuka jaringan yang tersedia?

88

Ini berkaitan dengan linux, tetapi jika ada yang tahu metode * nix umum itu akan bagus.

Saya mem-boot sistem kemarin dengan kabel ethernet terpasang. "NetworkManager" tidak diinstal, jadi setelah mulai saya pergi untuk mencari nama antarmuka ethernet dengan ifconfiguntuk memulai klien DHCP secara manual, tetapi tidak menunjukkan apa-apa selain lo.

NIC terdaftar melalui lspci, dan driver kernel yang sesuai dimuat. Sistem biasanya menggunakan wifi, dan saya bisa mengingat nama antarmuka untuk itu wlan0. Ketika saya mencoba ifconfig wlan0 up, wlan0muncul. Tapi satu-satunya nama antarmuka ethernet yang bisa saya ingat adalah eth[N]dan em[N]- tidak ada yang berfungsi.

Dokumen ini mengacu pada "nama antarmuka yang dapat diprediksi" tetapi tidak melakukan pekerjaan yang baik untuk menjelaskan apa itu sebenarnya secara sederhana. Itu merujuk pada sepotong kode sumber yang menyiratkan nama dalam kasus ini dapat disimpulkan dari nomor bus PCI dan slot, yang tampaknya seperti kerumitan yang tidak perlu rumit.

Pencarian lain di sekitar membuat saya percaya bahwa ini mungkin ditentukan oleh systemddalam hubungannya dengan udev, tetapi ada hampir 100 file dalam /usr/lib/udev/rules.ddan menghabiskan satu jam mencoba untuk menentukan di mana (dan jika ) ada file konfigurasi systemd untuk ini juga tampaknya konyol.

Akan lebih baik untuk mengetahui dengan pasti bahwa mereka tersedia, tidak hanya bagaimana mereka mungkin dinamai jika mereka, jadi saya bisa mengesampingkan masalah perangkat keras, dll. Apakah tidak ada cara sederhana untuk menemukan nama-nama antarmuka jaringan yang tersedia di linux?

goldilocks
sumber
Dalam pertanyaan Anda menyatakan bahwa Anda menggunakan ip linktetapi kemudian Anda menerima jawaban yang menyarankan ip link showyang melakukan hal yang persis sama. Mengapa?
Pavel Šimerda
@ PavelŠimerda Kamu benar. Saya mungkin sebenarnya telah menggunakan ip route- saya menulis pertanyaan ini pada hari berikutnya setelah masalah diselesaikan (lihat jawaban saya sendiri); Saya tidak terbiasa menggunakan ipdan tidak menghargai halaman manual yang terlalu sederhana, jadi saya mungkin menyerah setelah mencoba dan mulai melalui /sys, karena saya tahu kmod dimuat, dll. Dan ini lebih mudah untuk saya. Saya akan menghapus itu sepenuhnya dari pertanyaan.
goldilocks
Halaman manual untuk iproute2 cukup bagus saat ini, saya kira Anda menggunakan dan versi paket yang lebih lama.
Pavel Šimerda

Jawaban:

93

Metode paling sederhana yang saya tahu adalah daftar semua antarmuka Anda

ifconfig -a

SUNTING

Jika Anda menggunakan sistem yang sudah usang, Anda dapat menggunakannya

ip link show
Elliott Frisch
sumber
3
Jika saya baru saja melihat halaman manual! Menarik untuk mengetahui apakah ipmemiliki paralel, karena seharusnya ifconfig sedang "usang" untuk itu (IMO) perintah lebih tumpul dan kurang ramah pengguna.
goldilocks
2
Hal pertama di saya man ifconfig: "CATATAN Program ini sudah usang! Untuk memeriksa penggantian ip ..." Itu mungkin khusus untuk linux. Mudah-mudahan mereka harus mempertahankannya untuk kompatibilitas dengan sesuatu.
goldilocks
4
ifconfig telah ditinggalkan, TMK, jadi kita harus mencoba menampilkan contoh menggunakan ip. Lihat artikel wikipedia ifconfig: en.wikipedia.org/wiki/Ifconfig .
slm
3
@slm Meskipun pertanyaannya adalah (apakah) spesifik linux, sebuah contoh menggunakan keduanya tampaknya bagus karena pengguna BSD mungkin terbiasa melihat halaman "linux" - sebenarnya saya akan mengambil linux dari judul dan mengedit sebuah bit (awalnya ini dijawab sendiri dan saya tidak berpikir ada metode portabel).
goldilocks
5
ifconfig sudah tidak digunakan lagi? Ayolah. Perintah ini telah ada selama sekitar 30 tahun.
Michael Martinez
72

Kernel mencantumkannya dengan nama /sys, keduanya secara terpisah di (misalnya) susunan perangkat PCI - meskipun menemukannya di sana jika Anda tidak tahu harus mulai dari mana tidak mudah - dan bersama-sama melalui symlink di /sys/class/net. Misalnya:

> ls /sys/class/net
em1 lo wlp6so

Contoh lain:

> ls /sys/class/net
lo p6s1 wlan0

Jika Anda tidak yakin yang mana, Anda bisa menambahkan semuanya:

ifconfig [name] up 

Atau:

ip link set [name] up

Dan kemudian lihat petunjuk (cukup jelas) yang terdaftar oleh ifconfig(tanpa argumen). Kode sumber systemd yang ditautkan dari dokumen Freedesktop.org juga merujuk pada:

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

Meskipun dalam salah satu kasus di atas ( p6s1) tidak ada awalan.

goldilocks
sumber
Awalan yang saya dapatkan untuk ethernet adalah eth. Saya percaya enini untuk nirkabel lan.
Kaushal Modi
4
@kaushalmodi ethadalah hal kernel linux; implementasi systemd melalui nama antarmuka yang dapat diprediksi udev Freedesktop.org - kernel tidak dapat diprediksi dalam arti yang sama, yang merupakan penyebab semua kebingungan. Kutipan di atas secara eksplisit dipotong dan disisipkan dari sini . Ada lebih dari itu, karena saya tidak punya mesin systemd menggunakan enethernet; yang terdekat adalah em, yang lain sama sekali berbeda. Anda dapat membaca tautan Freedesk.org dalam pertanyaan Anda sendiri untuk penjelasan lebih lanjut.
goldilocks
4
[Kemudian] Suatu saat dalam setahun terakhir Fedora atau systemd memperbaikinya? PCI ethernet saya sekarang eno1.
goldilocks
10

Saya selalu melakukannya cat /proc/net/devsederhana dan mudah diingat

Mohammad Rafiee
sumber
4
tetapi itu hanya memberikan antarmuka aktif, tidak semua antarmuka
Grant Bowman
4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

Itu saya tahu, tetapi saya pasti terbuka untuk penambahan dan koreksi.

Mick Myhera
sumber
2
Hah? ifconfig adalah Linux juga.
fpmurphy
4
@ fpmurphy1 Baca paragraf pertama (setelah sinopsis) dari man ifconfigpada sistem linux.
goldilocks