如何找到当前活动的网络接口的名称?

如何找到当前活动的网络接口的名称?

我需要获取当前处于活动状态的网络接口的名称(例如 eth0、wlan0),即当前正在发送和接收流量的网络接口。当它连接到 WiFi 时,它将是 wlan0,但当它直接连接时,它将是 eth0。或者其他名称,具体取决于系统上的网络设备以及哪个是活动的。我如何才能找到它?

答案1

打开终端并运行命令:

ifconfig

活动接口将具有 IP 地址以及发送和接收的字节数。以下是示例:

eth0  Link encap:Ethernet  HWaddr xx:a8:6b:fe:06:xx
      inet addr:192.168.1.14  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::eea8:6bff:fefe:696/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:449232 errors:0 dropped:0 overruns:0 frame:0
      TX packets:309483 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:633900275 (633.9 MB)  TX bytes:27944824 (27.9 MB)

检查以太网接口是否被使用:

ping -c3 -I eth0 www.google.com
ping: Warning: source address might be selected on device other than eth0.
PING www.google.com (74.125.228.145) from 192.168.1.100 eth0: 56(84) bytes of data.Wi-Fi
From Think410 (192.168.1.100) icmp_seq=1 Destination Host Unreachable
From Think410 (192.168.1.100) icmp_seq=2 Destination Host Unreachable
From Think410 (192.168.1.100) icmp_seq=3 Destination Host Unreachable

验证无线接口是否被使用:

ping -c3 -I wlan0 www.google.com
PING www.google.com (74.125.228.148) from 192.168.1.100 wlan0: 56(84) bytes of data.
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=1 ttl=50 time=37.5 ms
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=2 ttl=50 time=36.8 ms
64 bytes from iad23s17-in-f20.1e100.net (74.125.228.148): icmp_seq=3 ttl=50 time=35.9 ms

因此,显然,互联网流量目前是通过我的无线接口 wlan0 路由的。

可以同时连接以太网和无线网络。通常,网络管理器会禁止这样做,因为以太网通常更快、更安全,因此会优先使用以太网。如果想要将以太网用于 LAN,将无线网络用于 WAN(互联网),通常会删除 NM 并在 /etc/network/interfaces 中手动设置所有详细信息。

答案2

找出特定流量将流向哪个接口的一个好方法是使用ip route getGoogle(8.8.8.8)或 Cloudflare(1.1.1.1)DNS 服务器来确定互联网流量将经过哪个接口:

$ ip route get 1.1.1.1
1.1.1.1 via 192.168.2.1 dev eth0 src 192.168.2.155 uid 0
    cache

然后,您可以执行诸如使用用于互联网的接口设置变量之类的操作:

LANIFACE=$(ip route get 1.1.1.1 | grep -Po '(?<=dev\s)\w+' | cut -f1 -d ' ')

然后还可以获取接口的IP地址:

LANIP=$(ip addr show "$LANIFACE" | grep "inet " | cut -d '/' -f1 | cut -d ' ' -f6)

不要忘记同样的方法也适用于其他网络,而不仅仅是互联网上的网络。

答案3

无需ping反复搜索。使用ip link;它比 有更多相关信息ifconfig。每个界面都会报告类似

  • LOOPBACK,表示处于活动状态但永远不会向外部(有线或无线)
  • NO-CARRIER,表示外部但没有产生信号
  • BROADCAST,表示外部且处于活动状态
  • LOWER-UP,表示 PHY 已启用

您可以使用 LOWER-UP 拥有两个或更多外部接口,但通常这不是一个好主意。这是我的笔记本电脑,带有环回(注意 LOWER_UP),以太网关闭,wlan0 启动并生成信号,wlan4(USB wifi)启动但不生成信号,wlan4.mon 监控模式嗅探 BSS 上的所有站点(注意 LOWER-UP)。wlan4.mon 不传输。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 24:b6:fd:24:59:b9 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 4c:eb:42:32:0c:9e brd ff:ff:ff:ff:ff:ff
26: wlan4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:26:f2:b3:d7:93 brd ff:ff:ff:ff:ff:ff
27: wlan4.mon: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
    link/ieee802.11/radiotap 00:26:f2:b3:d7:93 brd ff:ff:ff:ff:ff:ffter code here

答案4

nmcli device status可能有帮助。

相关内容