linux中的ifconfig命令简介
1. 概述
有时我们需要**检查和重新配置 Linux 机器上的网络接口。**这有助于我们解决网络问题、安装或配置网络接口卡。
在本教程中,我们将研究 ifconfig ,它用于管理我们的网络接口。我们将看看它的语法和一些常见的用例。
2. 什么是ifconfig ?
ifconfig代表“接口配置”。它允许我们查看和配置网络接口设置。
$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.129 netmask 255.255.255.0 broadcast 192.168.91.255
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 1823 bytes 916481 (916.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 950 bytes 105268 (105.2 KB)
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 639 bytes 56025 (56.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 639 bytes 56025 (56.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
正如我们所见,只需运行此命令即可输出有关所有活动网络接口的信息。
3. 基本语法
让我们看一下基本语法:
ifconfig [options] [interface]
options参数确定ifconfig命令显示的内容。
interface参数指定我们要使用该命令定位的特定网络接口。
4. 查看特定网络接口
假设我们想查看单个接口ens33的详细信息:
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.129 netmask 255.255.255.0 broadcast 192.168.91.255
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 2281 bytes 949247 (949.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 991 bytes 111961 (111.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如我们所见,列表现在只包含ens33接口的详细信息。
5. 常用显示选项
5.1. -a(全部)
如果我们想显示所有接口,无论它们是否处于活动状态,我们都可以添加*-a*标志:
$ ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.129 netmask 255.255.255.0 broadcast 192.168.91.255
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 90793 bytes 114935888 (114.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32279 bytes 2094115 (2.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=8<LOOPBACK> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 776 bytes 67908 (67.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 776 bytes 67908 (67.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
此命令返回ens33接口和lo接口。
我们可以通过查看 标志,特别是UP和RUNNING关键字来查看接口是启用还是禁用。
从这里我们可以看到,似乎ens33网络接口已启用并正在运行,而lo接口已禁用。
如果我们在没有*-a选项的情况下运行该命令,它将仅显示ens33网络接口。*
5.2. -s(短)
对于接口的快速摘要,以及一些简短的网络统计信息,我们可以使用*-s*选项:
$ ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 90798 0 0 0 32284 0 0 0 BMRU
lo 65536 799 0 0 0 799 0 0 0 LRU
该命令为我们提供了一个简短的网络接口列表。
我们应该注意,这些网络接口名称可能会因计算机而异。
5.3. -v(详细)
我们可以使用 -v选项查看所有带有详细错误信息的活动网络接口:
$ ifconfig -v
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.129 netmask 255.255.255.0 broadcast 192.168.91.255
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 90826 bytes 114938592 (114.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32287 bytes 2094984 (2.0 MB)
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 802 bytes 70854 (70.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 802 bytes 70854 (70.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
虽然此输出看起来与默认输出相同,但如果出现错误,它还会提供其他信息。
6. 启动和关闭接口
up和 down命令用于启用和禁用特定的网络接口。假设我们要禁用接口 ens33:
$ sudo ifconfig ens33 down
我们应该注意,我们需要使用sudo来提升我们使用该命令的权限。
该命令停止了ens33网络接口。但是,它没有产生任何输出来告诉我们。
因此,让我们检查一下该接口是否已被禁用:
$ ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
lo 65536 817 0 0 0 817 0 0 0 LRU
现在,让我们重新启用界面并再次检查:
$ sudo ifconfig ens33 up
$ ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 91291 0 0 0 32340 0 0 0 BMRU
lo 65536 821 0 0 0 821 0 0 0 LRU
7. 更改界面设置
默认情况下,Linux 通过 DHCP 为大多数网络接口分配 IP 地址。这通常是推荐的,但如果我们需要给网络接口一个特定的静态 IP 地址、子网掩码或广播地址,我们可以使用 ifconfig。
7.1. 设置静态 IP 地址
让我们使用ifconfig将我们的接口设置为静态 IP 地址192.168.91.200:
$ sudo ifconfig ens33 192.168.91.200
现在,让我们看一下界面:
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.200 netmask 255.255.255.0 broadcast 192.168.91.255
inet6 fe80::eda4:f797:27d4:df20 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 93199 bytes 115117763 (115.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32845 bytes 2168554 (2.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在这里,我们看到 IP 地址的值已按预期更改。
7.2. 设置子网掩码
当我们更改网络接口的 IP 地址时,我们可能还想更改子网掩码以匹配。
我们为此使用网络掩码选项:
$ sudo ifconfig ens33 netmask 255.255.0.0
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.128 netmask 255.255.0.0 broadcast 192.168.255.255
inet6 fe80::eda4:f797:27d4:df20 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 93400 bytes 115137530 (115.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33066 bytes 2200524 (2.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我们可以看到上面的命令已经将网络掩码更改为255.255.0.0。
7.3. 设置广播地址
广播地址通常会自行分配,但如果我们想指定一个特定的广播地址,我们可以使用广播选项:
$ sudo ifconfig ens33 broadcast 10.2.255.255
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.128 netmask 255.255.255.0 broadcast 10.2.255.255
inet6 fe80::eda4:f797:27d4:df20 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 93690 bytes 115157142 (115.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33113 bytes 2209591 (2.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如我们所见,该命令已将广播地址更改为10.2.255.255。
7.4. 在一行中设置 IP 地址、子网掩码和广播地址
如果我们需要全部更改它们,那么在单个命令中指定每个网络参数将是低效的。 但是,ifconfig允许我们一次设置它们:
$ sudo ifconfig ens33 10.2.1.101 netmask 255.255.0.0 broadcast 10.2.255.255
如果我们再次运行 ifconfig,我们现在可以看到我们指定的所有网络设置:
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.2.1.101 netmask 255.255.0.0 broadcast 10.2.255.255
inet6 fe80::eda4:f797:27d4:df20 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:7f:1a txqueuelen 1000 (Ethernet)
RX packets 94069 bytes 115188532 (115.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33260 bytes 2231587 (2.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0