1、命令简介
ifconfig:用于配置和显示网络接口的信息,包括 IP 地址、MAC 地址、子网掩码等。不过在现代的 Linux 系统中,ifconfig
命令已经被较新的 ip 命令所取代。
2、命令语法
ifconfig [-v] [-a] [-s] [interface] ifconfig [-v] interface [aftype] options | address ...
3、命令描述
Ifconfig
命令用于配置内核驻留网络接口。它在启动时按需设置接口。之后,通常需要对网络参数进行查询和管理。在调试期间或需要进行系统调优时也需要它。
如果没有指定参数,ifconfig
命令显示当前活动接口的状态。如果只指定了一个接口参数,它只显示指定接口的状态;如果使用-a
选项,则显示所有接口的状态,包括down状态。否则,配置接口。
4、命令选项
参数 | 描述 |
-a | 显示所有当前可用的接口,即使是关闭的状态 |
-s | 显示简短的列表(类似于 netstat -i) |
-v | 在某些错误情况下显示更多详细信息 |
interface | 接口的名称。 通常是驱动程序名称后跟一个单位号, 例如第一个以太网接口为 eth0。 如果内核支持别名接口, 可以使用 eth0:0 来指定它们, 其中 eth0 是 eth0 的第一个别名。 可以使用别名来分配第二个地址。 要删除别名接口, 请使用 ifconfig eth0:0 down 命令。 注意: 对于每个范围 (即具有相同地址/子网掩码组合的网络), 如果删除第一个(主要)别名, 则删除所有别名。 |
up | 此标志将激活接口。 如果为接口分配地址, 则会隐式指定此标志。 |
down | 此标志将关闭该接口的驱动程序。 |
[-]arp | 启用或禁用此接口上的 ARP 协议。 |
[-]promisc | 启用或禁用接口的混杂模式。 如果选择此选项, 接口将接收网络上的所有数据包。 |
[-]allmulti | 启用或禁用全多播模式。 如果选择此选项, 接口将接收网络上的所有多播数据包。 |
metric N | 此参数设置接口度量值。 |
mtu N | 此参数设置接口的最大传输单元(MTU)。 |
dstaddr addr | 为点对点链接(例如 PPP) 设置远程 IP 地址。此关键字现在已过时;请改用 pointopoint 关键字。 |
netmask addr | 为此接口设置 IP 网络掩码。 默认值为根据接口 IP 地址派生的 常规 A、B 或 C 类网络掩码, 但可以设置为任何值。 |
add addr/prefixlen | 为接口添加 IPv6 地址。 |
del addr/prefixlen | 从接口删除 IPv6 地址。 |
tunnel aa.bb.cc.dd | 创建新的 SIT(IPv6-in-IPv4)设备, 隧道传输到给定目标。 |
irq addr | 设置此设备使用的中断线。 并非所有设备都可以动态更改其 IRQ 设置。 |
io_addr addr | 设置此设备在 I/O 空间中的起始地址。 |
mem_start addr | 设置此设备使用的共享内存的起始地址。 只有少数设备需要此设置。 |
address | 要分配给此接口的 IP 地址。 |
5、使用示例
1)Ifconfig命令不带参数显示所有激活接口的详细信息。同时也可以查看活动接口的ip地址。可能存在活动的接口,但它们可能没有被分配IP地址
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 20:25:64:08:6a:a4 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 5426 bytes 509075 (509.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5426 bytes 509075 (509.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:c113:9da0:ddcc:2235 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 15381 bytes 7488890 (7.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16671 bytes 2821518 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2)使用-a选项显示服务器上的所有网络接口,即使网络接口已关闭
$ ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 20:25:64:08:6a:a4 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 5426 bytes 509075 (509.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5426 bytes 509075 (509.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:c113:9da0:ddcc:2235 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 15381 bytes 7488890 (7.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16671 bytes 2821518 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3)使用-s选项显示一个短列表,而不是所有的细节。
$ ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 0 0 BMU
lo 65536 9696 0 0 0 9696 0 0 0 LRU
wlan0 1500 32426 0 0 0 35073 0 0 0 BMRU
4)Ifconfig命令以接口名称(wlan0)作为参数显示接口配置的详细信息。
$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:c113:9da0:ddcc:2235 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 39246 bytes 16139815 (16.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 42288 bytes 8517460 (8.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5)Ifconfig命令和down选项可用于禁用网络接口。以root权限使用此命令。
$ sudo ifconfig enp0s25 down
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:187930 errors:0 dropped:0 overruns:0 frame:0
TX packets:187930 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:68712556 (68.7 MB) TX bytes:68712556 (68.7 MB)
wlx503eaa7c4c9b Link encap:Ethernet HWaddr 50:3e:aa:7c:4c:9b
inet addr:192.168.0.4 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::15de:9204:3015:b802/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:409882 errors:0 dropped:1902 overruns:0 frame:0
TX packets:308849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:464826692 (464.8 MB) TX bytes:51670694 (51.6 MB)
6)如果网络接口处于非活动状态,可以使用Ifconfig命令和up选项来激活它。以root权限使用此命令。需要注意的是,网络接口的名称必须在命令选项之前。
$ sudo ifconfig enp0s25 up
$ ifconfig
enp0s25 Link encap:Ethernet HWaddr 7c:05:07:10:08:8d
inet6 addr: fe80::5ba9:5ddd:a609:e410/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4719 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:963440 (963.4 KB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:190712 errors:0 dropped:0 overruns:0 frame:0
TX packets:190712 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:69933565 (69.9 MB) TX bytes:69933565 (69.9 MB)
wlx503eaa7c4c9b Link encap:Ethernet HWaddr 50:3e:aa:7c:4c:9b
inet addr:192.168.0.4 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::15de:9204:3015:b802/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:410653 errors:0 dropped:1929 overruns:0 frame:0
TX packets:309651 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:465020094 (465.0 MB) TX bytes:51915953 (51.9 MB)
7)ifconfig命令可以与接口名称(eth0)和ip地址一起使用,为指定的接口分配ip地址。以root权限使用此命令。
$ sudo ifconfig eth0 192.168.31.228
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.31.228 netmask 255.255.255.0 broadcast 192.168.31.255
ether 20:25:64:08:6a:a4 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 16589 bytes 1698274 (1.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16589 bytes 1698274 (1.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 2409:4053:2105:527d:653c:9f2d:750d:4528 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 53256 bytes 15930912 (15.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58487 bytes 12868848 (12.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
8)要同时分配IP地址、网络掩码地址和广播地址,可以使用以下命令。以root权限使用此命令。
$ ifconfig eth0 192.168.31.144 netmask 255.255.255.0 broadcast 192.168.31.255
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.31.144 netmask 255.255.255.0 broadcast 192.168.31.255
ether 20:25:64:08:6a:a4 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 19543 bytes 2004727 (2.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19543 bytes 2004727 (2.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 2409:4053:2105:527d:653c:9f2d:750d:4528 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 62912 bytes 19006480 (19.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 69417 bytes 15159473 (15.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
9)每当网卡接收到一个分组时,它都会验证该分组是否属于自己。否则,它会正常地丢弃分组,但在混杂模式下,它会接受流经网卡的所有分组。Ifconfig命令连同接口名称(eth0)和promisc参数启用混杂模式。在这种模式下,接口卡将捕获所有正在广播的数据包。以root权限使用此命令。这通常被Wireshark等网络嗅探程序用于分析广播数据包。
$ ifconfig eth0 promisc
$ ifconfig
eth0: flags=4355<UP,BROADCAST,PROMISC,MULTICAST> mtu 1000
inet 192.168.31.144 netmask 255.255.255.0 broadcast 192.168.31.255
ether aa:bb:cc:dd:ee:ff 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 22588 bytes 2330398 (2.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22588 bytes 2330398 (2.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 2409:4053:2105:527d:653c:9f2d:750d:4528 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 73307 bytes 22471053 (22.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 80986 bytes 17490208 (17.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
10)使用带有接口名称(eth0)和-promisc参数的ifconfig命令来禁用混杂模式。
$ ifconfig eth0 -promisc
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1000
inet 192.168.31.144 netmask 255.255.255.0 broadcast 192.168.31.255
ether aa:bb:cc:dd:ee:ff 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
device interrupt 20 memory 0xf7c00000-f7c20000
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 22990 bytes 2375724 (2.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22990 bytes 2375724 (2.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.222 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::fa1c:1e5f:feac:5280 prefixlen 64 scopeid 0x20<link>
inet6 2409:4053:2105:527d:db24:166e:345d:d48a prefixlen 64 scopeid 0x0<global>
inet6 2409:4053:2105:527d:653c:9f2d:750d:4528 prefixlen 64 scopeid 0x0<global>
ether a4:2b:8c:5f:19:0b txqueuelen 1000 (Ethernet)
RX packets 74842 bytes 23020724 (23.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 82714 bytes 17824215 (17.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0