我有一个运行OpenWrt(路由器的嵌入式Linux种类)的小型家用路由器。它具有五个以太网端口,一个标记为WAN,四个标记为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
除了txqueuelen
具有非零值的模糊细节之外eth0
,唯一的显着区别是它eth0
具有一个Interrupt
条目,据我所知这是一个硬件功能。那么,如何通过查找中的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 '…'
lshw -class network
lshw
不在包装清单中。一个博学多才的人可能会成功地在中安装开发工具tmpfs
,但是值得吗?我将通过标准PC进一步了解Linux网络。这将变得更加容易。虽然我对路由器的配置不了解,但它确实可以正常工作。谢谢你的帮助。