0%

Linux 之 ifconfig 命令

Linux ifconfig命令

Linux ifconfig命令用于显示或设置网络设备,在调试或调优的时间经常使用。

官方定义为:

ifconfig - configure a network interface

对于这个命令,一般只要掌握如何查看,如何设置IP地址基本就可以了,对于网络钻的比较深的,还需要更多一些参数。

使用方法为:

1
2
3
4
5
# 显示
$ ifconfig [-v] [-a] [-s] [interface]

# 设置
$ ifconfig [-v] interface [aftype] options | address ...

一些参数的含义为:

  • -a :显示所有网卡的状态,即使是down的状态
  • -s:显示一个短列表
  • interface mtu N 设置最大传输单元【需要管理员权限】
  • netmask addr:设置掩码地址【需要管理员权限】
  • interface up 激活网卡【需要管理员权限】
  • interface down 关闭网卡【需要管理员权限】
  • interface hw ether xx.xx.xx.xx.xx.xx 设置MAC地址【需要管理员权限】

默认无参数使用

如果不指定任何参数,直接显示当前活动的接口,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x0<global>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 5634431 bytes 4994127142 (4.6 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 858051 bytes 109858013 (104.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xc7320000-c733ffff

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 1547215 bytes 92862867 (88.5 MiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 3230 bytes 922051 (900.4 KiB)
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 219608 bytes 105943591 (101.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 219608 bytes 105943591 (101.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

其中一般希望看到的信息包括:

  • inet:为IP地址
  • ether:为MAC地址
  • MTU:最大传输单元

不加任何参数只会显示已经配置并且活跃的网卡信息,如果使用ifconfig -a就可以显示全部的网卡状态了,即使有些网卡是down的状态。

亦或者指定一个interface,比如上面的eth1,则只输出这个网卡的信息,如下:

1
2
3
4
5
6
7
8
9
10
$ ifconfig eth1

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 1547215 bytes 92862867 (88.5 MiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 3230 bytes 922051 (900.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

-s显示短列表

如果只想看到MTU以及数据包的状态,可以用该参数,如下:

1
2
3
4
5
$ ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 5665450 0 0 0 867639 0 0 0 BMRU
eth1 1500 3489187217 0 101054 0 501260400 0 0 0 BMU
lo 65536 219708 0 0 0 219708 0 0 0 LRU

输出信息主要包含了MTU值,发送及接收的数据情况。

配置IP地址

如下对eth0网卡配置IP地址、掩码以及广播地址,当然可以分布操作

1
2
3
4
5
6
7
8
# 给eth0配置IP地址
$ ifconfig eth0 192.168.1.123

# 给eth0配置IP地址和子网掩码
$ ifconfig eth0 192.168.1.123 netmask 255.255.255.0

# 给eth0配置IP地址、子网掩码还有广播地址
$ ifconfig eth0 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255

修改MTU

在某些情况下可能需要修改MTU值,比如增到到MTU为9000,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 1547215 bytes 92862867 (88.5 MiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 3230 bytes 922051 (900.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

# 修改MTU
$ ifconfig eth1 MTU 9000

$ ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 1547215 bytes 92862867 (88.5 MiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 3230 bytes 922051 (900.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

已经看到输出的信息已经把mtu更新为了9000.

这个值对网络传输影响很大。

启动关闭网卡

启动关闭主要的应用场景为重新设置了IP地址,或者暂时对某个网卡进行操作。

1
2
3
4
5
# 关闭eth0
$ ifconfig eth0 down

# 启动eth0
$ ifconfig eth0 up

修改MAC地址

1
2
3
4
5
6
7
8
#关闭网卡
$ ifconfig eth0 down

#修改MAC地址
$ ifconfig eth0 hw ether 01:02:02:04:05:06

#启动网卡
$ ifconfig eth0 up

一般什么情况下来修改MAC地址呢,大多数是在做网络测试还有就LICENSE的时候。

启用和关闭ARP协议

1
2
3
4
5
# 开启ARP
$ ifconfig eth0 arp

# 关闭ARP
$ ifconfig eth0 -arp

不过需要注意的是

  1. 很多的设置操作都需要管理员权限;
  2. 很多操作在重启后设置都会还原,如果需要永久设置,需要更改network的一些配置文件;
  3. 这个程序基本被淘汰了,已经不在更新,所有的操作或者用法均可以通过ip来搞定。等明天~。
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道