특정 호스트에 연결된 모든 네트워크 카드/인터페이스의 물리적(MAC라고도 함) 주소를 나열하는 방법을 찾으려고 합니다. 문제는 내가 이 기능을 매우 다른 하드웨어를 사용하는 여러 다른 상자에 연결된 데비안 라이브(압착) USB 이미지에 사용하고 싶다는 것입니다. 따라서 예를 들어 무선 드라이버를 USB 스틱에 항상 사용할 수 있는 것은 아니므로 ifconfig
.
나는 문제의 인터페이스 이름이 어디에 있는지 쿼리함으로써 /sys/class/net/*/address
이를 달성 할 수 있다는 인상을 받았습니다. *
그러나 이것은 사실이 아니다. 장치 드라이버를 설치하지 않고도 하드웨어의 물리적 주소를 쿼리할 수 있는 방법이 있어야 한다고 생각합니다.
그래서 내 질문은 다음과 같습니다
- 장치 드라이버가 설치되지 않은 경우에도 네트워크 장치의 물리적 주소를 쿼리하는 것이 실제로 가능합니까?
- 가능하다면 어떻게?
답변1
이는 신뢰할 수 있는 방식으로 달성하는 것이 불가능합니다. 네트워크 카드는 부팅을 위해 드라이버 지원이 필요하며 때로는 주입된 펌웨어가 필요하므로 물리적 주소에 대한 쿼리에 응답할 수 있습니다.
거의 모든 유선 인터페이스는 표준 데비안 커널에서 지원됩니다(적어도 지원하지 않는 유선 인터페이스는 모르겠습니다. 매우 단순하고 표준적입니다). 무선 인터페이스는 훨씬 더 복잡하며 모든 인터페이스가 지원되는 것은 아닙니다. 때로는 기본적으로 데비안 설치에 패키지되지 않은 독점 펌웨어가 필요합니다.
편집하다
기술적인 세부 사항에 관심이 있는 분들을 위해 Linux 커널이 특정 인터페이스의 MAC 주소를 어떻게 아는지 알아냈습니다. 각 네트워크 드라이버에는 해당 구조에 netdevice
드라이버에 등록되는 필드가 있습니다 . 이 필드는 장치를 커널에 등록하기 전에 드라이버에 의해 채워져야 합니다. 자세한 내용은 다음을 참조하세요 linux/netdevice.h
.리눅스 장치 드라이버, 3판, Jonathan Corbet, Greg Kroah-Hartman 및 Alessandro Rubini 저작, 섹션 17.3(http://makelinux.net/ldd3/).