네트워크 인터페이스가 물리적 (장치)인지 가상 (별칭)인지 어떻게 알 수 있습니까?


17

OpenWrt (라우터 용 임베디드 Linux 종류)를 실행하는 작은 홈 라우터가 있습니다. 여기에는 5 개의 이더넷 포트 (하나는 WAN으로 표시되고 4는 LAN 1-4로 표시)가 있습니다. 다음과 같이 네트워크 인터페이스가 정의되어 있습니다 ifconfig.

root@TIBERIUS: ~ > ifconfig | grep Link
br-lan    Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan1      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan2      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan3      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan4      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lo        Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
wlan0     Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0

보시다시피, 많은 장치가 있지만 하나의 MAC 주소 만 있습니다.

나는 그 장치 중 일부가 가상이라는 것을 알고 있습니다. 을 제외 lo하고 pppoe-wan루프백 장치와 PPPoE 연결입니다. 그러나 나머지 사람들에게는 물리적 또는 가상인지 어떻게 알 수 있습니까? 가상 인터페이스에 레이블을 지정하는 명명 규칙이 있음을 이해 eth0.1하지만 분명히 여기에 따르지 않습니다. 다음 ifconfig두 인터페이스 에 대한 출력을 보자 .

root@TIBERIUS: ~ > ifconfig wan
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15007 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13341276 (12.7 MiB)  TX bytes:1831757 (1.7 MiB)

root@TIBERIUS: ~ > ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25799 errors:0 dropped:0 overruns:23 frame:0
          TX packets:25294 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15481996 (14.7 MiB)  TX bytes:15160380 (14.4 MiB)
          Interrupt:4

그렇다의 모호한 상세에서 txqueuelen0이 아닌 데 eth0, 유일하게 눈에 띄는 차이점은이 eth0Interrupt내가 아는 한 하드웨어 기능입니다 항목을. ? 에서 Interrupt항목을 검색 하여 네트워크 인터페이스가 물리적인지 아닌지 알려주는 방법 은 ifconfig무엇입니까? 아니면 더 좋은 방법이 있습니까? 네트워크 장치가 물리적인지 가상인지 확인하는 간단하고 간단한 방법은 무엇입니까?

거기에 참고 관련 질문 만이 허용 대답을 가지고 있지만, 그것이 결정적인 없습니다.

최신 정보

derobert의 답변에 대한 답은 다음에서 파생 된 정보입니다 ls -l /sys/class/net.

br-lan      -> ../../devices/virtual/net/br-lan
eth0        -> ../../devices/platform/ag71xx.0/net/eth0
lan1        -> ../../devices/platform/dsa.0/net/lan1
lan2        -> ../../devices/platform/dsa.0/net/lan2
lan3        -> ../../devices/platform/dsa.0/net/lan3
lan4        -> ../../devices/platform/dsa.0/net/lan4
lo          -> ../../devices/virtual/net/lo
pppoe-wan   -> ../../devices/virtual/net/pppoe-wan
wan         -> ../../devices/platform/dsa.0/net/wan

[이 목록의 부록 : wlan0과 함께 표시 wlan0 -> ../../devices/platform/ath9k/net/wlan0되었지만 위 목록을 복사하면 WLAN이 비활성화되어 표시되지 않았습니다.]

나는 eth0유일한 장치 라고 말할 것 입니다. 무엇인지 명확하지 않습니다 dsa.0.

Bryan Agee의 답변에 대한 답변 :

root@TIBERIUS: ~ > cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'eth'
        option ifname 'eth0'
        option proto 'none'

config interface 'lan'
        option ifname 'lan1 lan2 lan3 lan4'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.33.1'
        option netmask '255.255.255.0'

config interface 'wan'
        option ifname 'wan'
        option proto 'pppoe'
        option username '…'
        option password '…'

IRQ, txqueue 등과 같은 하드웨어 관련 항목을 찾으십시오. 나에게 제기되는 질문은-왜 유스 케이스에서 차별화해야합니까?
Nils

@Nils, OpenWrt를 플래시 한 후 라우터 장치의 네트워크 구성을 명확하게 파악할 수 없습니다. 나는 그것을 완전히 혼란스럽게 생각합니다. 프로젝트 문서와 포럼에서 도움이되었지만 충분하지는 않았으며 기본적인 질문에 대답하지 않았습니다. 이러한 질문 중 하나가 여기서 제기 된 질문입니다. 이제 라우터에 NIC가 두 개 있다고 확신 할 때 하나의 NIC 만있는 것 같습니다. 세부 사항을 명확하게하면 혼동이 줄어 듭니다. 그 이유입니다.
Lumi

작은 사진이나 해당 라우터의 사진 / 문서에 대한 링크를 여기에 넣을 수 있습니까? 실제 MAC을 숨기는 본딩 / 브리징 / NATting과 같은 것들이있을 수 있습니다.
Nils

다음을 사용하여 더 자세한 정보와 필요한 정보를 볼 수 있어야합니다.lshw -class network
Nathan V

@Nils, 여기 있습니다 : wiki.openwrt.org/toh/tp-link/tl-wr941nd-@Nathan , 4MB의 플래시 만 있으면 상자가 다소 구속 lshw되어 있고 패키지 목록에 없습니다. 지식이 풍부하고 단호한 사람이에 개발 도구를 설치하는 데 성공할 tmpfs수 있지만 그만한 가치가 있습니까? 표준 PC를 통해 Linux 네트워킹에 대한 이해를 넓힐 것입니다. 이것은 더 쉬울 것입니다. 이 라우터 구성을 제대로 이해하지 못하지만 제대로 작동합니다. 당신의 도움을 주셔서 감사합니다.
Lumi

답변:


19

당신은 확인할 수 있습니다 /sys:

anthony@Zia:/sys/class/net$ ls -l /sys/class/net/
total 0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 br0 -> ../../devices/virtual/net/br0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lan -> ../../devices/pci0000:00/0000:00:1e.0/0000:07:01.0/net/lan
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Dec 11 15:38 tun0 -> ../../devices/virtual/net/tun0

따라서 실제 장치는 / sys / class / net에 표시됩니다. 하는 것으로 별칭 (LAN과 같은 : 0)하지 (당신이 알 수 있도록 별칭있는). 그리고 실제 하드웨어 (lan)와 아닌 하드웨어 (br0, lo, tun0)를 명확하게 볼 수 있습니다.

명확히하기 위해

가상은 모두 가상에 있기 때문에 위의 내용 중 어느 것이 실제인지 알 수 있습니다. LAN은 PCI 버스에 있습니다.

귀하의 경우, eth0, wan 및 lan1-4의 6 개가 있습니다. 총 5 개의 포트만 있다고 말했기 때문에 다소 이상합니다. eth0은 실제로 스위치 칩에 하드 와이어로 연결되어 있으며 다른 5 포트는 해당 스위치의 포트입니다. wlan0은 / sys에 표시되지 않지만 무선 어댑터 일 수도 있습니다.

따라서 모든 실제적인 목적을 위해 실제 포트는 wan, lan1-4 및 wlan0입니다. br-lan은 4 개의 LAN 포트를 모두 스위치로 작동하도록 설정된 브리지입니다 (따라서 해당 스위치를 분할 할 수 있음).


감사. 내 질문에 비슷한 결과를 추가했습니다. PCI 버스를 사용하거나 여기에 표시되지 않은 출력을 여기에 표시하는 것만 큼 명확하지 않습니다. 실제로 출력을 이해하지 못하지만 하드웨어 식별자처럼 보입니다. 위에 게시 된 출력의 경우 ag71xx드라이버처럼 보이기 때문에 하드웨어라고 생각하게 만듭니다.
Lumi

@Lumi가 답변을 편집했습니다.
derobert

이것은 아마도 내 대답보다 더 실용적입니다.
Bryan Agee

감사. wlan0목록을 /sys/class/net복사 할 때 활성화 된 모자 아래의 장치 목록에 메모 가 있었을 것 입니다. :) 이제 위에 추가했습니다. 장치 수에 대해서는 동의하지 않습니다. LAN과 WLAN은 두 개뿐입니다. 그러나 그것은 사소한 요점입니다 ... 좋은 대답, 인정, 감사합니다!
Lumi

@Lumi brctrl delif br-lan lan1는 포트를 브리지에서 떨어 뜨릴 때 사용합니다. 그런 다음 별도의 포트 (LAN 스위치의 일부가 아닌)로 작동한다고 생각합니다.
derobert

5

인터페이스 MAC 주소가 스푸핑 되지 않았다고 가정하면 ethtool을 사용해보십시오 .

ethtool -P {Network interface name}

" 영구 주소 : 00 : 00 : 00 : 00 : 00 : 00 "는 가상 네트워크 인터페이스임을 나타냅니다.

다음 bash 루프는 모든 네트워크 인터페이스에 대한 MAC 주소를 표시합니다.

for i in $(ip -o link show | awk -F': ' '{print $2}'); \
do mac=$(ethtool -P $i) \
&& printf '%-10s %-10s\n' "$i" "$mac"; \
done

lo         Permanent address: 00:00:00:00:00:00
enp5s0f0   Permanent address: 44:1e:a1:73:39:c8
enp4s0f0   Permanent address: 00:9c:02:b0:ef:20
enp5s0f1   Permanent address: 44:1e:a1:73:39:c9
enp4s0f1   Permanent address: 00:9c:02:b0:ef:24
virbr1     Permanent address: 00:00:00:00:00:00
virbr1-nic Permanent address: 00:00:00:00:00:00
virbr0     Permanent address: 00:00:00:00:00:00
virbr0-nic Permanent address: 00:00:00:00:00:00
vnet0      Permanent address: 00:00:00:00:00:00
vnet1      Permanent address: 00:00:00:00:00:00

2

나는 살펴보면서 시작할 것이다 /etc/network/config. 대부분의 배포판에는 네트워크 장치를 정의하고 구성하기위한 유사한 파일이 있습니다. 데비안 / 우분투에서는 / etc / network / interfaces입니다. 그 내용을 게시하려는 경우 별칭, 본드 및 브리지 항목을 식별 할 수 있습니다. 나머지는 물리적 장치입니다.

ifconfig출력 을 살펴보면 인터럽트 (IRQ)가있는 장치에 대해 언급 한대로 알 수 있습니다. 또한 많은 가상 인터페이스에는 메모리가 할당되어 있지 않습니다.

본드 ( 링크 집계 )가 개별 장치의 맥을 재정의하고 브리지 가 동일하게 사용하기 때문에 맥 주소만으로는 판단 할 수 없습니다 . 따라서 HA 가상 호스트 및 라우터에 대한 공통 구성 인 두 개의 장치가 본딩 및 브리지 된 경우 동일한 Mac을 사용하는 4 개의 장치가 있습니다.

eth0  - physical device 1
eth1  - physical device 2
bond0 - the virtual device that uses either or both of the above
br0   - the bridge that uses bond0 and allows sharing/forwarding across bond0

분명히 openwrt에 사용 된 별칭은 위의 별칭이 아니지만 개념은 그대로 유지됩니다. 나는 표준 연습이기 때문에 이것을 사용했습니다.


이것은 다른 방법으로 작성된 인터페이스를 설명하지 않으며 '표준' /etc방법으로 작동합니다. 예를 들어, NetworkManager로 작성된 인터페이스는 언급되지 않았습니다.
gertvdijk

@gertvdijk openwrt가 NetworkManager를 4MB로 압축하지는 않지만 모든 인터페이스가 구성에 있어야합니다.
Bryan Agee

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.