Làm thế nào tôi có thể tìm thấy các giao diện mạng có sẵn?


88

Điều này liên quan đến linux, nhưng nếu bất cứ ai biết về một phương pháp * nix chung sẽ tốt.

Tôi đã khởi động một hệ thống vào ngày hôm qua với cáp ethernet được cắm. "NetworkManager" chưa được cài đặt, vì vậy khi nó bắt đầu, tôi đã tìm tên giao diện ethernet ifconfigđể khởi động máy khách DHCP một cách thủ công, nhưng nó không hiển thị gì khác ngoài lo.

NIC được liệt kê thông qua lspcivà trình điều khiển hạt nhân thích hợp đã được tải. Hệ thống thường sử dụng wifi và tôi có thể nhớ tên giao diện đó là wlan0. Khi tôi cố gắng ifconfig wlan0 up, đã wlan0xuất hiện. Nhưng tên giao diện ethernet duy nhất tôi có thể nhớ là eth[N]em[N]- cả hai đều không hoạt động.

Tài liệu này đề cập đến "tên giao diện có thể dự đoán" nhưng không làm tốt công việc giải thích những gì chúng có thể là những thuật ngữ đơn giản. Nó đề cập đến một đoạn mã nguồn ngụ ý tên trong trường hợp này có thể được suy ra từ bus PCI và số khe, có vẻ như là một rắc rối phức tạp không cần thiết.

Các tìm kiếm khác xung quanh khiến tôi tin rằng điều này có thể được xác định bằng cách systemdkết hợp với udev, nhưng có gần 100 tệp trong /usr/lib/udev/rules.dvà dành một giờ cố gắng xác định nơi (và nếu ) có tệp cấu hình systemd cho điều này cũng có vẻ vô lý.

Nó cũng sẽ được tốt đẹp để biết chắc chắn rằng họ có sẵn, không chỉ là làm thế nào họ có thể được đặt tên là nếu họ đang có, vì vậy tôi có thể loại trừ các vấn đề phần cứng, vv Không phải là có một cách đơn giản để tìm ra tên của giao diện mạng có sẵn trên linux?


Trong câu hỏi bạn nói rằng bạn đã sử dụng ip linknhưng sau đó bạn chấp nhận một câu trả lời cho thấy ip link showđó là điều hoàn toàn giống nhau. Tại sao?
Pavel imerda

@ PavelŠimerda Bạn nói đúng. Trên thực tế tôi có thể đã sử dụng ip route- tôi đã viết câu hỏi này vào ngày hôm sau sau khi vấn đề được giải quyết (xem câu trả lời của riêng tôi); Tôi không có thói quen sử dụng ipvà không đánh giá cao các trang người Spartan quá mức, vì vậy tôi có lẽ đã từ bỏ nó sau một lần thử và bắt đầu đi qua /sys, vì tôi biết kmod đã được tải, v.v. và điều này đơn giản hơn với tôi. Tôi sẽ loại bỏ nó hoàn toàn khỏi câu hỏi.
goldilocks

Các trang hướng dẫn cho iproute2 hiện nay khá tốt, tôi đoán bạn đang sử dụng và phiên bản cũ hơn của gói.
Pavel imerda

Câu trả lời:


93

Phương pháp đơn giản nhất mà tôi biết để liệt kê tất cả các giao diện của bạn là

ifconfig -a

BIÊN TẬP

Nếu bạn đang sử dụng hệ thống đã bị lỗi thời, bạn có thể sử dụng

ip link show

3
Nếu tôi chỉ nhìn vào trang người đàn ông! ipThật thú vị khi biết nếu có song song, vì được cho là ifconfig đang bị "lỗi thời" vì điều đó (IMO) khó hiểu hơn và lệnh thân thiện với người dùng hơn.
goldilocks

2
Điều đầu tiên trong tôi man ifconfig: "LƯU Ý Chương trình này đã lỗi thời! Để kiểm tra thay thế ip ..." Điều đó có thể dành riêng cho linux. Hy vọng họ phải giữ nó để tương thích ngược với một cái gì đó.
goldilocks

4
ifconfig đã không được dùng nữa, TMK, vì vậy chúng ta nên cố gắng hiển thị các ví dụ bằng cách sử dụng ip. Xem bài viết wikipedia ifconfig: en.wikipedia.org/wiki/ Ifconfig .
slm

3
@slm Mặc dù câu hỏi là (cụ thể) là linux, nhưng một ví dụ sử dụng cả hai có vẻ tốt vì người dùng BSD có thể có thói quen xem các trang "linux" - thực tế tôi sẽ lấy linux ra khỏi tiêu đề và chỉnh sửa bit (ban đầu điều này là tự trả lời và tôi không nghĩ có một phương pháp di động).
goldilocks

5
ifconfig không dùng nữa? nào. Lệnh này đã được khoảng 30 năm.
Michael Martinez

72

Hạt nhân liệt kê chúng theo tên /sys, cả hai đều riêng biệt (ví dụ) cây của các thiết bị PCI - mặc dù việc tìm thấy chúng ở đó nếu bạn không biết chúng bắt đầu từ đâu không đơn giản - và cùng nhau thông qua các liên kết tượng trưng /sys/class/net. Ví dụ:

> ls /sys/class/net
em1 lo wlp6so

Một vi dụ khac:

> ls /sys/class/net
lo p6s1 wlan0

Nếu bạn không chắc chắn đó là cái gì, bạn có thể đặt tất cả chúng lên:

ifconfig [name] up 

Hoặc là:

ip link set [name] up

Và sau đó nhìn vào các đầu mối (khá rõ ràng) được liệt kê bởi ifconfig(không có đối số). Mã nguồn systemd được liên kết từ tài liệu Freedesktop.org cũng đề cập đến:

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

Mặc dù trong một trong các trường hợp trên ( p6s1) không có tiền tố.


Tiền tố tôi nhận được cho ethernet là eth. Tôi tin enlà cho lan không dây.
Kaushal Modi

4
@kaushalmodi ethlà một thứ hạt nhân linux; systemd thực hiện thông qua các tên giao diện có thể dự đoán được của udev Freedesktop.org - các hạt nhân không thể dự đoán theo cùng nghĩa, đó là nguyên nhân của tất cả sự nhầm lẫn. Các trích dẫn ở trên được cắt rõ ràng n 'dán từ đây . Có nhiều hơn thế, vì tôi không có bất kỳ máy systemd nào sử dụng encho ethernet; gần nhất là em, những người khác là hoàn toàn khác nhau. Bạn có thể tự đọc liên kết Freedesk.org trong câu hỏi để được giải thích thêm.
goldilocks

4
[Sau đó] Đôi khi trong năm qua Fedora hoặc systemd đã sửa chữa điều đó? PCI ethernet của tôi bây giờ eno1.
goldilocks

10

Tôi luôn luôn làm cat /proc/net/devnó đơn giản và dễ nhớ


4
nhưng điều đó chỉ cung cấp các giao diện hoạt động, không phải tất cả các giao diện
Grant Bowman

4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

Điều đó tôi biết, nhưng chắc chắn là mở để bổ sung và sửa chữa.


2
Huh? ifconfig cũng là Linux.
fpmurphy

4
@ fpmurphy1 Đọc đoạn đầu tiên (sau bản tóm tắt) của man ifconfighệ thống linux.
goldilocks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.