사용 가능한 네트워크 인터페이스를 찾는 방법은 무엇입니까?

사용 가능한 네트워크 인터페이스를 찾는 방법은 무엇입니까?

이것은 Linux에 관한 것이지만 일반적인 *nix 방법을 아는 사람이 있다면 좋을 것입니다.

어제 이더넷 케이블을 연결한 상태로 시스템을 부팅했습니다. "NetworkManager"가 설치되지 않았기 때문에 일단 시작한 후 ifconfig이더넷 인터페이스의 이름을 찾아 DHCP 클라이언트를 수동으로 시작하려고 했지만 표시되지 않았습니다 lo.

NIC가 나열 lspci되고 적절한 커널 드라이버가 로드됩니다. 시스템은 일반적으로 Wi-Fi를 사용하며 인터페이스 이름은 입니다 wlan0. 시도해보니 ifconfig wlan0 up나타 wlan0났습니다. 그러나 내가 기억할 수 있는 유일한 이더넷 인터페이스 이름은 eth[N]em[N]- 둘 다 작동하지 않습니다.

이 파일"예측 가능한 인터페이스 이름"을 참조하지만 그것이 무엇인지 간단한 용어로 설명하는 데는 적합하지 않습니다. 이것은 소스 코드의 일부를 참조합니다. 이는 이 경우 이름이 아마도 PCI 버스 및 슬롯 번호에서 추론되었음을 의미하므로 불필요한 복잡해 보입니다.

systemd다른 검색을 통해 이것이 와 결합하여 결정될 수 있다고 믿게 되었지만 udev거기에는 거의 100개의 파일이 있으며 /usr/lib/udev/rules.d어디에 있는지 확인하는 데 한 시간이 걸렸습니다.만약에)에는 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 주소를 얻는 데 도움이 되는 한 가지 방법은 다음과 같습니다.ip

hostname -i

설명에서 지적했듯이 이 메커니즘은 DNS 호스트 이름 확인에 의존하며 사용 가능한 모든 네트워크 인터페이스에 대해 신뢰할 수 있는 결과를 제공하지 않습니다.

그럼에도 불구하고 이 명령은 시스템 도구를 자주 사용할 수 없는 컨테이너(Docker, LXC) 시나리오 문제를 해결하는 데 도움이 될 수 있습니다. 적어도 어떤 경우에는 목표에 따라 도움이 될 수 있는 컨테이너 IP가 표시됩니다.

관련 정보