# ifconfig
## 命令功能
ifconfig命令用来查询和设置网卡的IP地址、网络掩码、网关、硬件mac地址等参数。并能够启用/关闭网卡。
## 命令格式
ifconfig [option]
option:
- [_-a_]
- <_interface_> <_address_> [_netmask <mask>_] [_gateway <address>_]
- [_hw ether <address>_] [_mtu <size>_]
- [_inet6 add <address>_]
- [_inet6 del <address>_]
- [_up|down_]
## 参数说明
**表1** 参数说明
| 参数 | 参数说明 | 取值范围 |
| -------- | -------- | -------- |
| 不带参数 | 打印所有网卡的IP地址、网络掩码、网关、硬件mac地址、MTU、运行状态等信息。 | N/A |
| -a | 打印协议栈收发数据信息。 | N/A |
| interface | 指定网卡名,比如eth0。 | N/A |
| address | 设置IP地址,比如192.168.1.10,需指定网卡名。 | N/A |
| netmask | 设置子网掩码,后面要掩码参数,比如255.255.255.0。 | N/A |
| gateway | 设置网关,后面跟网关参数,比如192.168.1.1。 | N/A |
| hw ether | 设置mac地址, 后面是MAC地址,比如00:11:22:33:44:55。目前只支持ether硬件类型。 | N/A |
| mtu | 设置mtu大小,后面是mtu大小,比如1000。 | - 仅支持ipv4情况下的范围为
[68,1500]。
- 支持ipv6情况下的范围为
[1280,1500]。 |
| add | 设置ipv6的地址,比如2001:a:b:c:d:e:f:d,需指定网卡名和inet6。 | N/A |
| del | 删除ipv6的地址,需指定网卡名和加"inet6"选项,详见示例。 | N/A |
| up | 启用网卡数据处理,需指定网卡名。 | N/A |
| down | 关闭网卡数据处理,需指定网卡名。 | N/A |
## 使用指南
- 命令需要启动TCP/IP协议栈后才能使用。
- 由于IP冲突检测需要反应时间,每次使用ifconfig设置IP后会有2S左右的延时。
## 使用实例
- ifconfig eth0 192.168.100.31 netmask 255.255.255.0 gateway 192.168.100.1 hw ether 00:49:cb:6c:a1:31
- ifconfig -a
- ifconfig eth0 inet6 add 2001:a:b:c:d:e:f:d
- ifconfig eth0 inet6 del 2001:a:b:c:d:e:f:d
## 输出说明
- **示例1** 设置网络参数
```
OHOS:/$ ifconfig eth0 192.168.100.31 netmask 255.255.255.0 gateway 192.168.100.1 hw ether 00:49:cb:6c:a1:31
OHOS:/$ ifconfig
lo ip:127.0.0.1 netmask:255.0.0.0 gateway:127.0.0.1
ip6: ::1/64
HWaddr 00 MTU:0 Running Link UP
eth0 ip:192.168.100.31 netmask:255.255.255.0 gateway:192.168.100.1
HWaddr 00:49:cb:6c:a1:31 MTU:1500 Running Default Link UP
```
输出的各参数说明如下表所示:
**表2** 参数说明
| 参数 | 说明 |
| -------- | -------- |
| ip | 板子IP地址。 |
| netmask | 网络掩码。 |
| gateway | 网关。 |
| HWaddr | 板子硬件mac地址。 |
| MTU | 网络最大传输单元。 |
| Running/Stop | 网卡是否正在运行。 |
| Default | 有这项说明此网卡连接到默认网关。 |
| Link UP/Down | 网卡连接状态。 |
- **示例2** 获取协议栈统计信息
```
OHOS # ifconfig -a
RX packets:6922 errors:0 ip dropped:4312 link dropped:67 overrun:0 bytes:0 (0.0 B)
RX packets(ip6):3 errors:0 dropped:0 overrun:0 bytes:0 (0.0 B)
TX packets:1394 errors:0 link dropped:67 overrun:0 bytes:0(0.0 B)
TX packets(ip6):3 errors:0 overrun:0 bytes:0(0.0 B)
```
输出的各参数说明如下表所示:
**表3** ifconfig -a 参数说明
| 参数 | 说明 |
| -------- | -------- |
| RX packets | IP层已接收的正常数据包的个数。 |
| RX error | IP层已接收的错误数据包的个数,错误类型包括长度错误,校验错误,IP option错误,IP首部protocol错误等。 |
| RX dropped | IP层已丢弃的数据包的个数,丢弃原因包括数据包错误,封包无法转发,本地网卡处于关闭状态等。 |
| RX overrun | MAC层向上层协议栈投递封包失败的个数,失败原因主要是协议栈资源不足。 |
| RX bytes | IP层已接收的正常数据包的总长度,不包括重组未完成的分片的长度。 |
| TX packets | IP层已正常发送或转发的数据包的个数。 |
| TX error | IP层发送失败的数据包的个数,失败原因包括封包无法路由,封包在协议栈内处理失败等。 |
| TX dropped | MAC层由于发送失败而丢弃的数据包个数,失败原因包括网卡驱动处理封包失败等。 |
| TX overrun | 暂未使用。 |
| TX bytes | IP层已正常发送或者转发的数据包的总长度。 |
- **示例3** 设置IPv6的地址信息
```
OHOS:/$ ifconfig eth0 inet6 add 2001:a:b:c:d:e:f:d
NetifStatusCallback(eth0): nsc event: 0x8
NetifStatusCallback(eth0): nsc status changed: 0
NetifStatusCallback(eth0): nsc event: 0x200
NetifStatusCallback(eth0): nsc event: 0x8
NetifStatusCallback(eth0): nsc status changed: 1
NetifStatusCallback(eth0): nsc event: 0x200
NetifStatusCallback(eth0): nsc event: 0x200
OHOS:/$ ifconfig
lo ip:127.0.0.1 netmask:255.0.0.0 gateway:127.0.0.1
ip6: ::1/64
HWaddr 00 MTU:0 Running Link UP
eth0 ip:192.168.1.10 netmask:255.255.255.0 gateway:192.168.1.1
ip6: 2001:A:B:C:D:E:F:D/64
HWaddr 66:2f:e5:bd:24:e6 MTU:1500 Running Default Link UP
```
- **示例4** 删除IPv6的地址信息
```
OHOS:/$ ifconfig eth0 inet6 del 2001:a:b:c:d:e:f:d
NetifStatusCallback(eth0): nsc event: 0x200
OHOS:/$ ifconfig
lo ip:127.0.0.1 netmask:255.0.0.0 gateway:127.0.0.1
ip6: ::1/64
HWaddr 00 MTU:0 Running Link UP
eth0 ip:192.168.1.10 netmask:255.255.255.0 gateway:192.168.1.1
HWaddr 66:2f:e5:bd:24:e6 MTU:1500 Running Default Link UP
```