ifconfig命令

​ifconfig​​​代表​​interface configuration​​,其用于查看和更改系统上网络接口的配置。

语法

ifconfig [-a] [-v] [-s]  [[] 
]
[add
[/]]
[del
[/]]
[[-]broadcast [
]] [[-]pointopoint [
]]
[netmask
] [dstaddr
] [tunnel
]
[outfill ] [keepalive ]
[hw
] [mtu ]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start ] [io_addr ] [irq ] [media ]
[txqueuelen ]
[[-]dynamic]
[up|down] ...

参数

  • ​(none), -a​​: 显示所有网络接口的信息,即使它们已关闭。
  • ​-s​​​: 以与命令​​netstat -i​​相同的格式显示简短列表。
  • ​-v​​: 详细模式,显示某些错误情况的详细信息。
  • ​interface​​​: 接口名称,通常是驱动程序名称,后跟一个单元号,例如第一个以太网接口的​​eth0​​​,如果内核支持别名接口,则可以为​​eth0​​​的第一个别名使用​​eth0:0​​​指定它们,可以使用它们来分配第二个地址,要删除别名接口,可以使用​​ifconfig eth0:0 down​​,注意如果删除第一个(主接口),则对于每个范围即具有地址/网络掩码组合的同一网络,所有别名都将被删除。
  • ​up​​: 该标志导致接口被激活,如果为接口分配了地址,则隐式指定。
  • ​down​​: 该标志导致该接口的驱动程序被关闭。
  • ​[-]arp​​​: 在此接口上启用(指定了​​-​​​前缀则禁用)​​ARP​​协议的使用。
  • ​[-]promisc​​​: 启用(指定了​​-​​前缀则禁用)接口的混杂模式,如果启用混杂模式,接口将接收网络上的所有数据包。
  • ​[-]allmulti​​​: 启用(指定了​​-​​前缀则禁用)全组播模式,启用组播模式后,该接口将接收网络上所有的组播报文。
  • ​metric N​​​: 此参数设置接口度量,接口使用该度量做出路由决策,​​N​​​必须是介于​​0​​​和​​4294967295​​之间的整数。
  • ​mtu N​​: 该参数用于设置接口的最大传输单元,该设置用于限制接口传输的最大数据包大小。
  • ​dstaddr address​​​: 为点到点链路(如​​PPP​​​)设置远程​​IP​​​地址,此关键字现在已过时,请改用​​pointopoint​​关键字。
  • ​netmask address​​​: 设置接口的​​IP​​​网络掩码,该值默认为通常的​​A​​​、​​B​​​或​​C​​​类网络掩码(从接口​​IP​​地址派生),但它可以设置为任何值。
  • ​add address/prefixlen​​​: 在接口上添加​​IPv6​​地址。
  • ​del address/prefixlen​​​: 从接口移除​​IPv6​​地址。
  • ​tunnel aa.bb.cc.dd​​​: 创建一个新的​​SIT (IPv6-in-IPv4)​​设备,通过隧道传送到给定的目的地。
  • ​irq address​​​: 设置此设备使用的中断线,并非所有设备都可以动态更改其​​IRQ​​设置。
  • ​io_addr address​​​: 在此设备的​​I/O​​空间中设置起始地址。
  • ​mem_start address​​: 设置此设备使用的共享内存的起始地址,仅少数设备需要此功能。
  • ​media type​​​: 设置设备要使用的物理端口或介质类型,并非所有设备都可以更改此设置,并且某些设备可以更改其支持的值,类型的典型值是​​10base2​​​(细缆网)、​​10baseT​​​(双绞线​​10 Mbps​​​以太网)、​​AUI​​​外部收发器等,​​auto​​的特殊介质类型告诉驱动程序自动感知介质,同样并非所有驱动程序都可以执行此操作。
  • ​[-]broadcast [address]​​​: 如果指定了地址参数,则将为此接口设置协议广播地址,否则它将设置(指定了​​-​​​前缀则清除)接口的​​IFF_BROADCAST​​标志。
  • ​[-]pointopoint [address]​​​: 这个关键字启用了接口的点对点模式,这意味着它是两台机器之间的直接链接,没有其他人监听它,如果还提供了​​address​​​参数,请设置链接另一端的协议地址,就像过时的​​dstaddr​​​关键字一样,否则,设置或清除接口的​​IFF POINTOPOINT​​标志。
  • ​hw class address​​​: 如果设备驱动程序支持此操作,则设置此接口的硬件地址,关键字之后必须是硬件类的名称以及与硬件地址等效的可打印​​ASCII​​​。当前支持的硬件类别包括以太​​ether (Ethernet)​​​、​​ax25 (AMPR AX.25)​​​、​​ARCnet and netrom (AMPR NET/ROM)​​。
  • ​multicast​​: 在接口上设置多播标志,由于驱动程序自己会正确设置该标志,因此通常不需要这样做。
  • ​address​​​: 分配给该接口的​​IP​​地址。
  • ​txqueuelen length​​​: 设置设备发送队列的长度,对于具有较高延迟的较慢设备(例如通过调制解调器或​​ISDN​​​进行的连接)将其设置为较小的值非常有用,以防止快速的批量传输过多地干扰诸如​​telnet​​之类的交互式通信。

硬体类型

​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)​

地址族

​unix (UNIX Domain)​​​、​​inet (DARPA Internet)​​​、​​inet6 (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)​

示例

显示网络设备信息。

ifconfig

启动关闭指定网卡。

ifconfig eth0 down
ifconfig eth0 up

为网卡配置和删除​​IPv6​​地址。

ifconfig eth0 add 33ffe:3240:800:1005::2/ 64
ifconfig eth0 del 33ffe:3240:800:1005::2/ 64

修改​​MAC​​​地址,需要首先关闭网卡并修改​​MAC​​地址,之后再开启网卡。

ifconfig eth1 hw ether 00:1D:1C:1D:1E
ifconfig eth1 up

为网卡配置​​IP​​地址,并加上子掩码以及广播地址。

ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

启用和关闭​​ARP​​协议。

ifconfig eth0 arp
ifconfig eth0 -arp

设置最大传输单元​​MTU​​。

ifconfig eth0 mtu 1500

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.computerhope.com/unix/uifconfi.htm
https://www.runoob.com/linux/linux-comm-ifconfig.html
https://www.geeksforgeeks.org/ifconfig-command-in-linux-with-examples/