摘要: 转自恋猫大鲤鱼

1. 命令简介

ifconfig(configure a network interface)命令是系统管理员命令,用于查看和配置网络接口。

 

2. 命令格式

ifconfig [-v] [-a] [-s] [INTERFACE]
ifconfig [-v] INTERFACE [aftype] OPTIONS | ADDRESS ...

  1. 不跟任何参数,单独执行 ifconfig 命令将显示当前活动接口的状态。

  2. 如果给定一个接口参数,则它仅显示给定接口的状态。

  3.如果只给一个选项 -a, 他将显示所有接口的状态,包括那些关闭的接口。

  4. 其他情况,用于配置一个网络接口。

3. 参数说明

-a   

  显示所有接口的状态,包含关闭的接口。

-s  

  显示接口的简短列表,类似于 netstat -i

-v  

  冗余模式,遇到错误将报告错误信息

INTERFACE
  接口的名称。这通常是一个驱动程序名,后边跟着一个单元号。例如用于第一个以太网接口的 eth0
up
  此标志表示激活该接口。如果将地址分配给该接口,则会隐式激活接口
down
  此标志用于关闭接口的驱动程序
[-]arp
  启动或关闭接口使用 ARP 协议
[-]promisc
  启用或禁用接口的混杂模式,如果选中,网络上的所有数据包都将由接口接收
[-]allmulti
  启动或者禁用所有多播模式,如果选中,则接口将接收网络上的所有多播数据包
mtu N
  设置接口的最大传输单元
dstaddr ADDR
  为点对点链路(如 PPP ) 设置远程 IP 地址,关键字 dstaddr 现在已经过时了,现在使用 pointtopoint 代替
netmask ADDR
  设置接口的 IP 网络掩码。此值默认为通常的 A、B 或 C 类网络掩码(从接口 IP 地址派生),但可以设置为任何值
add ADDR/PREFIX_LEN
  向接口添加 IPv6 地址
del ADDR/PREFIX_LEN
  从接口中删除 IPv6 地址
tunnel ::aa.bb.cc.dd
  创建一个新的SIT(IPv6-in-IPv4)设备,通过隧道到达给定的目的地
irq ADDR
  设置此设备使用的中断行。并非所有设备都可以动态更改其 IRQ 设置
io_addr ADDR
  为该设备设置 I/O 空间中的起始地址
mem_start ADDR
  设置此设备使用的共享内存的起始地址。只有少数几个设备需要这个
media TYPE
  设置设备要使用的物理端口或介质类型。典型的类型值有10base2(细以太网)、10baseT(双绞线 10Mbps 以太网)、AUI(外部收发器)等。特殊的媒体类型可以使用 auto 来告诉驱动程序进行自动感知。注意,并非所有设备都可以更改此设置
[-]broadcast [ADDR]
  如果给定地址参数,则为该接口设置协议广播地址。否则设置(或清除)接口的 IFF_BROADCAST标志
[-]pointopoint [ADDR]
  这个关键字启用了接口的点对点模式,这意味着它是两台机器之间的直接连接,没有其他人监听它。如果给了地址参数,就像过时的 dstaddr 关键字一样,设置另一端的协议地址。否则设置或清除接口的 IFF_POINTOPOINT 标志
hw CLASS ADDR
  如果设备驱动程序支持此操作,则设置此接口的物理地址。CLASS 为硬件类型名称,ADDR 为物理地址。目前支持的硬件类包括 ether (Ethernet)、ax25 (AMPR AX.25)、ARCnet 和 netrom (AMPR NET/ROM)
multicast
  在接口上设置多播标志。一般不需要显示设置,因为驱动程序本身会设置正确的标志
ADDRESS
  接口的 IP 地址
txqueuelen LENGTH
  设置设备的传输队列的长度。对于具有高延迟(调制解调器链路,ISDN)的较慢设备,将其设置为小值是有用的,以防止快速批量传输过多地干扰诸如 telnet 之类的交互通信

 

4. 常用示例

  1. 查看处于激活状态的网络接口信息 

  pi@raspberrypi:~ $ ifconfig

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:79:38:aa  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 29298  bytes 13939205 (13.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 29298  bytes 13939205 (13.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.151  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8b43:4db2:4fa8:d26c  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:2c:6d:ff  txqueuelen 1000  (Ethernet)
        RX packets 299370  bytes 35111185 (33.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 239969  bytes 39287176 (37.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0 表示第一块网卡。

  wlan0 表示运行中网卡,以wlan0为例

  第一行 UP(代表网卡开启状态),BROADCAST(支持广播),RUNNING(代表网卡的网线被接上),MULTICAST(支持组播),MTU:1500(最大传输单元 1500 字节)

  第二行 inet :192.168.1.151 为网卡的 IPv4 地址,broadcast:192.168.1.255 为广播地址,netmask:255.255.255.0 为子网掩码;
  第四行 ether 表示连接类型为以太网,b8:27:eb:2c:6d:ff为网卡的物理地址;
  第五六行:接收、发送数据包情况统计;
  第七八行:接收、发送数据字节数统计信息。

  lo 是表示主机的回环地址,这个一般是用来测试一个网络程序,只能在本机上访问,局域网或外网的主机无法访问该地址。

  

  2. 启动或者关闭指定网卡

  

ifconfig eth0 down
ifconfig eth0 up

  3. 修改 MAC 地址

ifconfig eth0 down
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
ifconfig eth0 up
  4. 配置 IP 地址
# 给 eth0 网卡配置 IP 地址
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