我的笔记本电脑上装有 Ubuntu 14.04。这台笔记本电脑既有用于有线以太网的 RJ45 连接器,也有用于无线/WiFi 的连接器。然而,我注意到,在这台笔记本电脑上,重启后,我只看到以下内容:
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:608 errors:0 dropped:0 overruns:0 frame:0
TX packets:608 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:76086 (76.0 KB) TX bytes:76086 (76.0 KB)
wlan0 Link encap:Ethernet HWaddr XX:71:XX:XX:b1:XX
inet addr:YY.0.XX.XX Bcast:YY.0.XX.XX Mask:255.255.0.0
inet6 addr: fe80::XXXX:XXXX:fe3f:b1db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2589 errors:0 dropped:0 overruns:0 frame:0
TX packets:2044 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1458453 (1.4 MB) TX bytes:292837 (292.8 KB)
事实上,如果我从网络管理器小程序中关闭无线/取消选中“启用 Wi-Fi”,我只会得到这些:
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1794 errors:0 dropped:0 overruns:0 frame:0
TX packets:1794 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:178068 (178.0 KB) TX bytes:178068 (178.0 KB)
ifconfig
从上面的转储中可以看出,eth0
根本没有列出与有线以太网相对应的网络!事实上,直到我将笔记本电脑连接到路由器/交换机,笔记本电脑获得 IP 地址后,它才会出现!?事实上,虽然 RJ45 连接器上没有连接任何东西,但笔记本电脑会通过以下方式报告此信息lshw
:
$ sudo lshw -c network
*-network
description: Wireless interface
product: AR9485 Wireless Network Adapter
vendor: Qualcomm Atheros
physical id: 0
bus info: pci@0000:01:00.0
logical name: wlan0
version: 01
serial: XX:71:XX:XX:b1:XX
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list rom ethernet physical wireless
configuration: broadcast=yes driver=ath9k driverversion=4.2.0-42-generic firmware=N/A ip=YY.0.XX.XX latency=0 link=yes multicast=yes wireless=IEEE 802.11bgn
resources: irq:16 memory:f7c00000-f7c7ffff memory:f7c80000-f7c8ffff
请注意,有线/eth0
适配器没有在任何地方列出?!
否则,当我通过网线将笔记本电脑的 RJ45 连接器连接到路由器或互联网电缆时,我会得到ifconfig
如下条目:
eth0 Link encap:Ethernet HWaddr XX:XX:2b:XX:XX:XX
inet6 addr: fe80::YYYY:YYYY:fe0a:YYYY/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1980 (1.9 KB) TX bytes:12108 (12.1 KB)
事实上,在上面的代码片段中,它eth0
甚至没有分配 IP4 地址;所以显然重要的是它以某种方式连接到以太网网络。
请注意,这台笔记本电脑上/etc/network/interfaces
仅包含:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
...但是,我添加了auto eth0
最后一行,保存并重新启动 - 并且行为没有任何变化(即eth0
仍然隐藏,直到连接)。
现在,另一方面,我将一台台式机作为 Ubuntu 服务器(也是 14.04)进行管理,并且我总是看到它eth0
出现ifconfig
- 即使我已经从台式机的 RJ45 连接器上拔出了网线?!
我的问题是:
- 为什么 Ubuntu 有时会“隐藏”
eth0
(或其他网络接口)直到它们连接 - 以及为什么它不一致(即在桌面上它总是显示,在笔记本电脑上它直到连接才显示)? - 在像这样“隐藏”网络接口的 Ubuntu 上,我如何列出所有网络硬件 - 如上所示,在这种情况下甚至不起作用
sudo lshw
?
答案1
ifconfig
默认情况下仅显示处于 Up 状态的接口。要查看所有接口(包括处于 down 状态的接口):
ifconfig -a
请注意,在 GNU/Linux 中,不推荐ifconfig
使用 (附带net-tools
),而推荐使用较新的ip
(附带iptoute2
)。ip
您可以使用它执行以下操作:
ip addr show
速记:
ip a
检查man ip
以获得更多想法。