ฉันจะหาอินเตอร์เฟสเครือข่ายที่มีอยู่ได้อย่างไร


88

นี่เป็นเรื่องเกี่ยวกับ linux แต่ถ้าใครรู้วิธีการทั่วไป * น่าจะดี

ฉันบูทระบบเมื่อวานนี้โดยเสียบสายอีเธอร์เน็ต "NetworkManager" ไม่ได้ติดตั้งดังนั้นเมื่อมันเริ่มฉันจึงไปหาชื่อของอินเตอร์เฟสอีเธอร์เน็ตด้วยifconfigเพื่อเริ่มไคลเอนต์ DHCP ด้วยตนเอง แต่มันไม่ได้แสดงอะไรอื่นนอกจากlo.

NIC ถูกแสดงรายการผ่านlspciและโหลดเคอร์เนลไดรเวอร์ที่เหมาะสม ระบบปกติใช้ WiFi, wlan0และฉันจะจำชื่ออินเตอร์เฟซที่เป็น เมื่อฉันพยายามifconfig wlan0 up, wlan0ปรากฏ แต่เฉพาะชื่ออินเตอร์เฟซอีเธอร์เน็ตที่ฉันจะจำได้eth[N]และem[N]- ทั้งที่ทำงาน

เอกสารนี้อ้างถึง "ชื่ออินเทอร์เฟซที่สามารถคาดเดาได้" แต่ไม่สามารถอธิบายสิ่งที่พวกเขาอาจกล่าวได้ง่าย มันอ้างถึงชิ้นส่วนของซอร์สโค้ดซึ่งบอกเป็นนัยถึงชื่อในกรณีนี้อาจถูกอนุมานได้จากบัส PCI และหมายเลขสล็อตซึ่งดูเหมือนว่ายุ่งยากซับซ้อนโดยไม่จำเป็น

การค้นหารอบ ๆ ทำให้ฉันเชื่อว่าสิ่งนี้อาจถูกกำหนดโดยการsystemdใช้ร่วมกันudevแต่มีไฟล์เกือบ 100 ไฟล์/usr/lib/udev/rules.dและใช้เวลาหนึ่งชั่วโมงในการพิจารณาว่า (และถ้ามี) ไฟล์ปรับแต่ง systemd สำหรับเรื่องนี้ยังดูไร้สาระ

นอกจากนี้ยังเป็นการดีที่จะทราบว่าพวกเขาพร้อมใช้งานไม่ใช่แค่ว่าพวกเขาจะตั้งชื่ออย่างไรดังนั้นฉันจึงสามารถแยกแยะปัญหาฮาร์ดแวร์ ฯลฯไม่ได้มีวิธีง่ายๆในการค้นหาชื่อของอินเตอร์เฟสเครือข่ายที่มีอยู่ บน linux?


ในคำถามที่คุณระบุว่าคุณใช้ip linkแต่แล้วคุณยอมรับคำตอบที่แนะนำip link showซึ่งทำในสิ่งเดียวกัน ทำไม?
Pavel Šimerda

@ PavelŠimerdaคุณพูดถูก ในความเป็นจริงฉันอาจจะใช้ip route- ฉันเขียนคำถามนี้ในวันถัดไปหลังจากที่ปัญหาได้รับการแก้ไข (ดูคำตอบของฉันเอง); ฉันไม่ได้ติดนิสัยการใช้ipและไม่ชอบหน้าคนสปาร์ตันมากเกินไปดังนั้นฉันอาจยอมแพ้หลังจากลองและเริ่มผ่าน/sysเพราะฉันรู้ว่า kmod ถูกโหลดเป็นต้นและนี่เป็นเรื่องที่ง่ายกว่า ถึงฉัน. ฉันจะลบมันออกไปจากคำถามอย่างสมบูรณ์
goldilocks

หน้าคู่มือสำหรับiproute2ค่อนข้างดีทุกวันนี้ฉันคิดว่าคุณกำลังใช้และแพ็คเกจรุ่นเก่ากว่า
Pavel Šimerda

คำตอบ:


93

วิธีที่ง่ายที่สุดที่ฉันรู้ในรายการอินเตอร์เฟสทั้งหมดของคุณคือ

ifconfig -a

แก้ไข

หากคุณอยู่ในระบบที่ล้าสมัยคุณสามารถใช้งานได้

ip link show

3
ถ้าฉันแค่ดูหน้าคน! เป็นที่น่าสนใจที่จะรู้ว่าipมีขนานเพราะ ifconfig จะถูก "ล้าสมัย" ในความโปรดปรานของที่ (IMO) ป้านมากขึ้นและผู้ใช้ที่เป็นมิตรน้อยคำสั่ง
goldilocks

2
สิ่งแรกในของฉันman ifconfig: "หมายเหตุโปรแกรมนี้ล้าสมัย! สำหรับการตรวจสอบการแทนที่ ip ... " นั่นอาจจะเฉพาะกับลินุกซ์ หวังว่าพวกเขาจะต้องเก็บมันไว้สำหรับความเข้ากันได้ย้อนหลังกับบางสิ่งบางอย่าง
goldilocks

4
ifconfig ได้รับการเลิก TMK ipดังนั้นเราควรจะพยายามที่จะแสดงตัวอย่างการใช้ ดูบทความ ifconfig วิกิพีเดีย: en.wikipedia.org/wiki/Ifconfig
slm

3
@slm ถึงแม้ว่าคำถามคือ (เฉพาะ) ลินุกซ์โดยเฉพาะตัวอย่างการใช้ทั้งสองดูเหมือนดีเนื่องจากผู้ใช้ BSD อาจติดนิสัยในการดูหน้า "ลินุกซ์" ต่อไป - ในความเป็นจริงฉันจะลบลินุกซ์ออกจากชื่อและแก้ไข bit (เดิมนี้เป็นคำตอบด้วยตนเองและฉันไม่คิดว่าจะมีวิธีการพกพา)
goldilocks

5
ifconfig เลิกใช้แล้ว? มาเลย คำสั่งนี้มีมานานกว่า 30 ปีแล้ว
Michael Martinez

72

เคอร์เนลแสดงรายการตามชื่อใน/sysทั้งสองแยกต่างหากใน (เช่น) ต้นไม้แห่งอุปกรณ์ PCI - แม้ว่าการหาพวกเขามีถ้าคุณไม่ทราบว่าพวกเขาจะเริ่มต้นด้วยไม่ง่าย - และร่วมกันผ่าน symlinks /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(ไม่มีข้อโต้แย้ง) ซอร์สโค้ด systemd ที่ลิงก์จากเอกสาร Freedesktop.org ยังอ้างถึง:

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

แม้ว่าในกรณีใดกรณีหนึ่งข้างต้น ( p6s1) ไม่มีคำนำหน้า


ethคำนำหน้าฉันจะได้รับสำหรับอีเธอร์เน็ตเป็น ฉันเชื่อว่าenมีไว้สำหรับ LAN แบบไร้สาย
Kaushal Modi

4
@kaushalmodi ethเป็นสิ่งเคอร์เนล linux; systemd ใช้ชื่ออินเทอร์เฟซที่คาดเดาได้ของ udev Freedesktop.org - เคอร์เนลไม่สามารถคาดเดาได้ในความหมายเดียวกันซึ่งเป็นสาเหตุของความสับสนทั้งหมด อ้างข้างต้นถูกตัดอย่างชัดเจน n' วางจากที่นี่ มีมากกว่านั้นเนื่องจากฉันไม่มีเครื่อง systemd ใด ๆ ที่ใช้enสำหรับอีเธอร์เน็ต ที่ใกล้ที่สุดคือemคนอื่นจะแตกต่างอย่างสิ้นเชิง คุณสามารถอ่านลิงก์ Freedesk.org ในคำถามด้วยตัวคุณเองสำหรับคำอธิบายเพิ่มเติม
goldilocks

4
[ต่อมา] บางครั้งในปีที่ผ่านมา Fedora หรือ systemd แก้ไขให้ถูก อีเธอร์เน็ต PCI eno1ของฉันตอนนี้
goldilocks

10

ฉันมักจะทำcat /proc/net/devมันง่ายและจดจำง่าย


4
แต่นั่นเป็นเพียงการให้อินเทอร์เฟซที่ใช้งานเท่านั้นไม่ใช่ทุกอินเทอร์เฟซ
Grant Bowman

4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

ที่ฉันรู้ แต่แน่นอนว่าเปิดให้เพิ่มเติมและแก้ไข


2
ฮะ? ifconfig เป็น Linux เช่นกัน
fpmurphy

4
@ fpmurphy1 อ่านย่อหน้าแรก (หลังจากสรุป) ของman ifconfigบนระบบ linux
goldilocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.