菜鸟科技网

netcfg命令

netcfg 是一个在 Android 系统中用于管理网络配置的命令行工具,它非常强大,尤其是在需要手动调试、备份或恢复网络设置时,虽然在新版本的 Android 中,很多功能被更现代的 netdConnectivityService 所取代,但 netcfg 仍然是开发者、高级用户和系统工程师的利器。

netcfg命令-图1
(图片来源网络,侵删)

基本信息与适用环境

  • 命令名称: netcfg
  • 主要平台: Android (Linux 内核)
  • 功能: 显示和配置网络接口的状态、IP 地址、路由和 DNS 信息。
  • 权限: 通常需要 root 权限 才能执行修改操作(如添加、删除路由等),但查看信息(netcfgnetcfg list)通常不需要。
  • 替代品/演变: 在较新的 Android 版本中,netcfg 的部分功能已被 ip 命令和 settings get global 等命令所补充或替代,但 netcfg 在查看网络接口的详细状态(特别是 UP/DOWN 状态)方面仍然非常直观。

常用语法和选项

netcfg 命令的基本结构如下:

netcfg [选项] [接口名称]

常用选项

选项 全称 描述 示例
a all 显示所有网络接口的详细信息。 netcfg a
s showroutes 显示路由表信息。 netcfg s
d dns 显示当前使用的 DNS 服务器。 netcfg d
h help 显示帮助信息。 netcfg h
l list 列出所有可用的网络接口。 netcfg l
无选项 - 显示所有已启用的网络接口信息。 netcfg

常用使用场景与示例

示例 1: 查看所有网络接口

这是最常用的功能,可以快速了解设备上有哪些网络连接。

# 显示所有已启用的接口(最常用)
$ netcfg
# 显示所有接口(包括未启用的)
$ netcfg a

输出解读:

输出通常包含以下几列:

netcfg命令-图2
(图片来源网络,侵删)
  • INTERFACE: 接口名称,如 wlan0 (Wi-Fi), rmnet0 (移动数据), lo (回环地址), tun0 (VPN) 等。
  • IFACE: 接口类型。
  • STATE: 接口状态,这是最关键的一列。
    • UP: 接口已启用,可以收发数据。
    • DOWN: 接口已禁用。
    • UNKNOWN: 未知状态。
  • MAC: 硬件地址 (MAC 地址)。
  • IP: 当前分配的 IP 地址。
  • FLAGS: 标志位,如 UP, RUNNING, BROADCAST 等。

示例输出:

INTERFACE      IFACE   STATE     MAC            IP
--------------- ------- --------- --------------- --------------
lo             loopback UP        00:00:00:00:00:00 127.0.0.1/8
wlan0          wifi    UP        AA:BB:CC:DD:EE:FF 192.168.1.100/24
rmnet_data0    rmnet   UP        <MAC not available> 100.64.0.1/24
tun0           tun     UP        <MAC not available> 10.8.0.2/24

从上面的输出可以看出:

  • lo (回环) 和 wlan0 (Wi-Fi) 处于 UP 状态。
  • rmnet_data0 (移动数据) 也处于 UP 状态。
  • tun0 (VPN) 也处于 UP 状态。

示例 2: 查看特定接口信息

如果你想只关注 Wi-Fi 的状态,可以指定接口名称。

$ netcfg wlan0
wlan0   wifi   UP     AA:BB:CC:DD:EE:FF   192.168.1.100/24

示例 3: 查看路由表

使用 -sshowroutes 选项可以查看系统的路由表,这对于理解网络数据包的走向非常有用。

netcfg命令-图3
(图片来源网络,侵删)
$ netcfg -s

输出解读:

路由表条目通常包含:

  • Destination: 目标网络或主机。
  • Gateway: 下一跳网关地址,如果是 0.0.0,表示直接连接。
  • Genmask: 子网掩码。
  • Flags: 标志,如 UG (Gateway, Up) 表示需要通过网关,U (Up) 表示路由可用。
  • Iface: 出接口。

示例输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags     Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         wlan0

解读:

  • 第一条规则:所有目标为 0.0.0 (即所有未知地址) 的数据包,都通过网关 168.1.1wlan0 接口发出,这是默认网关。
  • 第二条规则:所有目标为 168.1.0/24 网段内的数据包,都直接从 wlan0 接口发出,无需经过网关。

示例 4: 查看 DNS 服务器

使用 -ddns 选项可以查看当前网络配置中使用的 DNS 服务器。

$ netcfg -d
Current DNS servers:
192.168.1.1

示例 5: 启用或禁用网络接口 (需要 Root)

这是一个高级操作,通常用于调试。请谨慎使用,错误的操作可能导致网络中断。

# 启用 wlan0 接口 (需要 root)
$ su
# ifconfig wlan0 up
# 禁用 wlan0 接口 (需要 root)
# ifconfig wlan0 down

注意: 在现代 Android 系统中,直接使用 ifconfig 来控制接口可能不稳定,系统有更复杂的网络状态管理机制,更推荐使用 svc 命令来控制 Wi-Fi 和移动数据。


与其他网络命令的对比

命令 主要用途 特点
netcfg 查看/配置网络接口状态、路由、DNS Android 原生,信息直观,特别是 STATE 列。
ip (Linux 标准) 强大的网络配置工具 (路由、地址、隧道等) 功能更全面、更现代,是 ifconfigroute 的替代品。
ifconfig (已过时) 显示/配置网络接口地址 在 Linux 中已被 ip addr 替代,但在 Android 中有时仍可工作。
route (已过时) 显示/操作 IP 路由表 在 Linux 中已被 ip route 替代。
settings get global 查看 Android 系统设置中的网络参数 可以获取 Wi-Fi SSID、IP、网关、DNS 等信息,但格式是文本。
svc 控制 Android 系统的网络服务 用于启用/禁用 Wi-Fi (svc wifi enable) 和移动数据 (svc data enable),是更“官方”的控制方式。

netcfg 是一个经典的、非常实用的 Android 网络诊断工具。

  • 如果你需要快速了解哪个网络接口是活动的(UP/DOWN)netcfg 是最佳选择。
  • 如果你想查看路由表或 DNS 配置netcfg 提供了简洁的命令。
  • 在进行网络调试时netcfg 是你工具箱里必不可少的一员。

尽管系统在不断演进,但 netcfg 的简洁和直观性使其在很长一段时间内仍将在 Android 开发和调试领域占有一席之地。

分享:
扫描分享到社交APP
上一篇
下一篇