一天一个 Linux 命令(46):ifconfig 命令


一、简介

Linux下的ifconfig命令(英文全称是“network interfaces configuring”)是用于配置和显示Linux内核中网络接口的网络命令。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。有点类似windows系统下的ipconfig命令行工具

二、格式说明

ifconfig [网络设备] [参数]
Usage:
  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] ... ifconfig [网络设备] [down up -allmulti -arp -promisc] [add<地址>] [del<地址>] [<硬件地址>] [io_addr] [irq] [media<网络媒介类型>] [mem_start<内存地址>] [metric<数目>][mtu<字节>] [netmask<子网掩码>] [tunnel<地址>] [-broadcast<地址>] [-pointopoint<地址>] [IP地址]

三、选项说明

add<地址> 设置网络设备IPv6的IP地址
del<地址> 删除网络设备IPv6的IP地址
up 启动指定的网络设备
down 关闭指定的网络设备
<硬件地址> 设置网络设备的类型与硬件地址
io_addr 设置网络设备的I/O地址
irq 设置网络设备的IRQ
media<网络媒介类型> 设置网络设备的媒介类型
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目
mtu<字节> 设置网络设备的MTU
netmask<子网掩码> 设置网络设备的子网掩码
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能
-promisc 关闭或启动指定网络设备的promiscuous模式
[IP地址] 指定网络设备的IP地址
[网络设备] 指定网络设备的名称

四、命令功能

用来查看和配置网络设备,当网络环境发生改变时可通过此命令对网络进行相应的配置。

五、常见用法

5.1 显示网络设备信息

//显示所有的网卡信息
# ifconfig -a
//显示简要的网卡信息
# ifconfig -s
# ifconfig
eth0: flags=4163  mtu 1500
        inet 172.21.0.15  netmask 255.255.240.0  broadcast 172.21.15.255
        inet6 fe80::5054:ff:fe3a:5f30  prefixlen 64  scopeid 0x20
        ether 52:54:00:3a:5f:30  txqueuelen 1000  (Ethernet)
        RX packets 142917061  bytes 20140004625 (18.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 156766684  bytes 52480824073 (48.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 28095958  bytes 56967620926 (53.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28095958  bytes 56967620926 (53.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

说明:

eth0 表示第一块网卡

inet 用来表示网卡的IP地址,此网卡的 IP地址是 172.21.0.15,广播地址, broadcast:172.21.15.255,掩码地址netmask是255.255.240.0

lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。

一般情况下:

第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)

第二行:网卡的IP地址、子网、掩码

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

第四、五行:接收、发送数据包情况统计

第七行:接收、发送数据字节数统计信息。

5.2 启动关闭指定网卡

//启动网卡
# ifconfig eth0 up
//关闭网卡,此操作要慎重,如果ssh登录可能会导致网络连接断开
# ifconfig eth0 down

5.3 为网卡配置和删除IPv6地址

//为网卡设置IPv6地址
# ifconfig eth0 add fe80::5054:ff:fe3a:5f30::2/64
//为网卡删除IPv6地址
# ifconfig eth0 del fe80::5054:ff:fe3a:5f30::2/64

5.4 用ifconfig修改MAC地址:

//关闭网卡
# ifconfig eth0 down
//修改MAC地址
# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
//启动网卡
# ifconfig eth0 up

5.5 配置IP地址:

//给eth0网卡配置IP地址
# ifconfig eth0 172.21.0.18
// 给eth0网卡配置IP地址,并加上子掩码
# ifconfig eth0 172.21.0.18 netmask 255.255.255.0
// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
# ifconfig eth0 172.21.0.18 netmask 255.255.255.0 broadcast 172.21.1.255

5.6 启用和关闭ARP协议

# ifconfig eth0 arp  //开启
# ifconfig eth0 -arp  //关闭

5.7 设置最大传输单元

//设置能通过的最大数据包大小为 1500 bytes
# ifconfig eth0 mtu 1500