linux上ifconfig命令详解

1. ifconfig 简介

用于显示或设置网络设备

2. 用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <address>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down] ...

3. 参数说明

3.1. 选项介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-a     显示所有的可用网卡, 包括当前处于关闭状态的网卡.
-s 显示短列表(结果类似于netstat -i )
-v 出错状况下显示更多信息.
<interface> 设备名称.
[<AF>] <address> 指定网络设备的地址, 根据不同的协议族, AF 为地址族 <address>不同地址族类型的的地址, 若不指定地址族默认为IPv4地址.
add <address>[/<prefixlen>] 设置网络设备IPv6的IP地址, 格式参考示例.
del <address>[/<prefixlen>] 删除网络设备IPv6的IP地址, 格式参考示例.

[-]arp 启用或关闭设备上的ARP协议.
[-]promisc
启用或关闭设备的promiscuous模式 如果启用, 网络上所有的包都将会被设备接受到.
hw <HW> <address> 设置网络设备的类型与硬件地址, 格式参考示例: 用ifconfig修改MAC地址.
o_addr <NN> 设置网络设备的I/O地址.
irq <NN> 设置网络设备的IRQ.
media <type> 设置网络设备的媒介类型.
mem_start <NN> 设置网络设备在主内存所占用的起始地址.
mtu <NN> 设置网络设备的MTU最大传输单元.
netmask <address> 设置网络设备的子网掩码.
tunnel <address> 建立IPv4与IPv6之间的隧道通信地址.
[-]broadcast [<address>] 将要送往指定地址的数据包当成广播数据包来处理.
[-]pointopoint [<address>] 与指定地址的网络设备建立直接连线,此模式具有保密功能.
up 该信号将会使得网卡被激活, 当一个IP地址被指定的时候, 暗含激活网卡的意思, 但是你可以通过指定网卡别名附加一个 - 压制该默认行为, 当使用IPv4 0.0.0.0 地址时, 该行为也会被压制, 因为内核将会删除网卡别名.
down 该信号将会使得指定的网卡关闭.

3.2. 硬件类型

HW=硬件类型 Hardware Type.
硬件类型列表:

  • loop (Local Loopback)

  • slip (Serial Line IP)

  • cslip (VJ Serial Line IP)

  • slip6 (6-bit Serial Line IP)

  • cslip6 (VJ 6-bit Serial Line IP)

  • adaptive (Adaptive Serial Line IP)

  • ash (Ash)

  • ether (Ethernet)

  • ax25 (AMPR AX.25)

  • netrom (AMPR NET/ROM)

  • rose (AMPR ROSE)

  • tunnel (IPIP Tunnel)

  • ppp (Point-to-Point Protocol)

  • hdlc ((Cisco)-HDLC) lapb (LAPB)

  • arcnet (ARCnet)

  • dlci (Frame Relay DLCI)

  • frad (Frame Relay Access Device)

  • sit (IPv6-in-IPv4)

  • fddi (Fiber Distributed Data Interface)

  • hippi (HIPPI)

  • irda (IrLAP)

  • ec (Econet)

  • x25 (generic X.25)

  • eui64 (Generic EUI-64)

    AF=地址族 Address family. 默认: IPv4 网络协议地址族(inet)

3.3. 地址族列表

  • unix (UNIX Domain) UNIX 域协议地址

  • inet (DARPA Internet) IPv4 网络协议地址族

  • inet6 (IPv6) IPv6 网络协议地址族

  • ax25 (AMPR AX.25)

  • netrom (AMPR NET/ROM)

  • rose (AMPR ROSE)

  • ipx (Novell IPX)

  • ddp (Appletalk DDP)

  • ec (Econet)

  • ash (Ash)

  • x25 (CCITT X.25)
    说明:

  • DARPA 美国国防部先进项目研究局.

  • AMPR: Amateur Radio Digital Communications.

  • AX.25: Amateur Radio AX.25 国际业余无线电联盟正式公布了专门的通信协议. AX.25 作为业余分组网的标准补充了 HDIC 和 OSI 模型对无线信道分组网的规定。 虽然 AX.25 协议是由国际业余无线电爱好者联盟制定的,但由于美军及后来发展分组无线网的厂家都遵循了该项协议,使得该协议已超出业余的性质 , 而成为一种通用的国际标准协议

  • netrom:

  • IPX: [互联网分组交换协议]https://baike.baidu.com/item/IPX/609379?fr=aladdin, IPX 是指互联网分组交换协议,提供分组寻址和选择路由的功能,保证可靠到达,相当于数据报的功能;SPX 是顺序报文分组交换协议,它可保证信息流按序、可靠地传送;IPX/SPX 为 Novell 网在网络层和传输层采用的协议;SDLC 是 SNA 中的数据链路层协议,后修改为 HDLC(高级数据链路控制);NFS 是 SUN 制定的网络文件服务标准;ODBC 是微软制定的异构数据库互访的标准,真正体现了数据库开放性. 用来对通过互联网络的数据包进行路由选择和转发,它指定一个无连接的数据包,相当于 TCP/IP 协议簇中的 IP 协议。

  • ddp (Appletalk DDP): 数据报传送协议 Datagram Delivery Protocal. appletalk ( AT )是由 Apple 公司创建的一组网络协议的名字,它用于 Apple 系列的个人计算机。协议栈中的各种协议用来提供通信服务,例如文件服务、打印、电子邮件和其他一些网络服务。表 8-1 列出了构成 AT 协议套件的具体协议。它也同时显示了协议之间的相互联系以及与 OSI 模型的联系。特定型号的路由器和交换机支持 Apple Talk 协议栈。使用这些路由和交换机实现 Apple Talk 网络能够使所有的 Apple 计算机用户享受全球的文件、打印和应用程序服务。

  • ec (Econet):

3.3.1. 说明

  • promiscuous 模式:
    混杂模式, 是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
    一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。在 Linux 操作系统中设置网卡混杂模式时需要管理员权限。在 Windows 操作系统和 Linux 操作系统中都有使用混杂模式的抓包工具,比如著名的开源软件 Wireshark。

4. 示例

4.1. 示例 1: 如何重启网卡?

1
2
3
4
5
6
7
# 查看网卡名, 以及网卡状态
$ ifconfig
# 如果有多块网卡, 选定网卡名, 先关闭网卡, 再打开网卡
$ sudo ifconfig -s enp6s0 down
# 激活网卡
$ sudo ifconfig -s enp6s0 up

4.2. 示例 2: 配置网卡 eno16777736 的 IP 地址,同时激活该设备

1
sudo ifconfig eno16777736 192.168.0.2 netmask 255.255.255.0 up

4.3. 示例 3: 配置网卡 eno16777736 的别名设备 eno16777736:1 的 IP 地址 (未激活)

1
ifconfig eno16777736:1 192.168.0.3

4.4. 示例 4: 激活网卡 eno16777736:1 设备

1
ifconfig eno16777736:1 up

4.5. 示例 5: 查看网卡 eno16777736 设备的配置

1
ifconfig eno16777736

4.6. 示例 6: 关闭网卡 eno16777736:1 设备

1
ifconfig eno16777736:1 down

4.7. 示例 7: 为网卡配置和删除 IPv6 地址

1
2
3
4
5
6

# 为网卡eth0设置IPv6地址
$ sudo ifconfig eth0 add 33ffe:3240:800:1005::2/64
# 为网卡删除IPv6地址
$ sudo ifconfig eth0 del 33ffe:3240:800:1005::2/64

4.8. 示例 8: 用 ifconfig 修改 MAC 地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 方法 1
# 关闭网卡
$ sudo ifconfig eth0 down
# 修改MAC地址
$ sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
# 启动网卡
$ sudo ifconfig eth0 up

# 方法 1
#关闭网卡并修改MAC地址
$ sudo ifconfig eth1 hw ether 00:1D:1C:1D:1E
# 启动网卡
$ sudo ifconfig eth1 up //启动网卡

4.9. 示例 9: 配置 IP 地址

1
2
3
4
5
6
7
8
# 给eth0网卡配置IP地址
$ sudo ifconfig eth0 192.168.1.56

# 给eth0网卡配置IP地址,并加上子掩码
$ ifconfig eth0 192.168.1.56 netmask 255.255.255.0

# 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
$ ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

4.10. 示例 10: 启用和关闭 ARP 协议

1
2
3
4
# 开启
$ ifconfig eth0 arp
# 关闭
$ ifconfig eth0 -arp

4.11. 示例 11: 设置最大传输单元

1
2
# 设置能通过的最大数据包大小为 1500 bytes
$ ifconfig eth0 mtu 1500

5. 后续

更多 linux 相关知识, 请参考鹏叔的技术博客 - linux 专题, 获取实时更新的 Linux 文章.