本文转载自微信公众号《Linux开发那些事儿》,作者LinuxThings。转载此文请联系Linux开发那些事公众号.在老版本的Linux中,ifconfig命令是用来检查和配置网络接口的,但是这个命令已经不再维护了,取而代之的是ip命令。ip命令与ifconfig命令非常相似,但相比之下,ip命令更强大。它可以执行ifconfig命令无法执行的各种任务。本文将介绍ip命令显示所有网络接口信息的一些常用操作。输入ipaddr或ipa命令显示所有网络接口信息[root@ecs-centos-7~]#ipaddr1:lo:mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostlovalid_lftforeverpreferred_lftforeverinet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000:link/etherbrff:8:16:ff:ffinet192.168.0.9/24brd192.168.0.255scopeglobalnoprefixroutedynamiceth0valid_lft74409secpreferred_lft74409secinet6fe80::f816:3eff:fee0:4fb8/64scopelinkvalid_lftforeverpreferred_lftforever[root@ecs-centos-7]#在上面那个接口可以看到输出~]#系统的lo和eth0,前者是网络环回接口,后者是常规网络接口输出接口信息的字段详解:BROADCAST表示支持广播,MULTICAST表示多播BroadcastUP网络接口处于打开状态LOWER_UP表示网线已插入并连接到网络mtu1500:最大传输单元为1500字节qdiscpfifo_fast:数据包排队状态UP:接口状态为打开qlen1000:传输队列长度链接/etherfa:16:3e:e0:4f:b8Mac地址brdff:ff:ff:ff:ff:ff广播地址inet192.168.0.9/24:IPV4scopeglobal:全局有效dynamiceth0:动态分配地址valid_lft74409sec:IPV4有效期preferred_lft74409sec:IPV4preferredlifetimeinet6fe80::f816:3eff:fee0:4fb8/64IPV6scopelink:仅在该接口有效除了输出所有网络接口信息外,还可以根据是否支持IPV4或IPV6,通过以下方式个性化设置网络接口信息,output命令ip-4a会输出只支持IPV4的接口信息同理,命令ip-6a会输出只支持IPV4的接口信息tsIPV6根据接口名称输出命令ipashoweth0会输出eth0接口的信息[root@ecs-centos-7~]#ipashoweth02:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ffinet192.168.0.9/24brd192.168.0.255scopeglobalnoprefixroutedynamiceth0valid_lft73494secpreferred_lft73494secinet6fe80::f816:3eff:fee0:4fb8/64scopeeverpixroutedynamiceth0valid_lft73494secpreferred_lft73494secinet6fe80::f816:3eff:fee0输出命令lftreredlinkfornetwork关闭状态输出命令iplinklsup将输出所有处于打开状态的网络接口信息,然后iplinklsdown将输出所有处于关闭状态的网络接口信息,除了IPaddressaddaddIP命令格式为指定网络接口分配IP地址:ipaaddipaddressdevinterfacename例如:现在你要为eth0网络接口分配一个IP192.168.1.10,网络掩码为20,请看以下示例针对具体输入[root@ecs-centos-7~]#ipaadd192.168.1.10/20deveth0[root@ecs-centos-7~]#ipashoweth02:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ffinet192.168.0.9/24brd192.168.0.255scopeglobalnoprefixroutedynamiceth0valid_lft71787secpreferred_lft71787secinet192.168.1.10/20scopeglobaleth0valid_lftforeverpreferred_lftforeverinet6fe80::f816:3eff:fee0:4fb8/64scopelinkvalid_lftforeverpreferred_lftforever从上面例子的输出结果可以看如果命令ipaadd192.168.1.10/20deveth0执行成功,没有输出。如果网口eth0不存在,会输出Cannotfinddevice"eth0"其实也可以执行ping192.168.1.10命令来测试网口IP是否分配成功。如果能ping通IP,说明分配成功,否则说明分配失败。如果想了解更多关于掩码的信息,可以自行查阅掩码信息。移除IP将IP添加到网络接口后,可以使用ipadelipaddressdevinterfacename命令从指定接口移除指定IP。删除时需要在IP后携带网络掩码[root@ecs-centos-7~]#ipadel192.168.1.10/20deveth0[root@ecs-centos-7~]#ipashoweth02:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ffinet192.168.0.9/24brd192.168.0.255scopeglobalnoprefixroutedynamiceth0valid_lft71414secpreferred_lft71414secinet6fe80::f816:3eff:fee0:4fb8/64scopelinkvalid_lftforeverpreferred_lftforever修改网络接口状态要关闭或者开启网络接口,可以使用iplinksetdevinterfacenameup/downcommandForexample:therearetwonetworkinterfacesloandeth0,thespecificinterfaceinformationisasfollows[root@ecs-centos-7~]#ipa1:lo:mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostlovalid_lftforeverpreferred_lftforeverinet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ffinet192.168.0.9/24brd192.168.0.255scopeglobalnoprefixrouteddynamiceth0valid_lft59216secpreferred_lft59216secinet6fe80::f816:3eff:fee0:4fb8/64scopelinkvalid_lftforeverpreferred_lftforever通过ping-w3127.0.0.1命令测试,结果显示lo接口当前开启。具体测试输出如下[root@ecs-centos-7ping-w3127.0.0.1PING127.0.0.1(127.0.0.1)56(84)bytesofdata.64bytesfrom127.0.0.1:icmp_seq=1ttl=64time=0.014ms64bytesfrom127.0.0.1:icmp_seq=2ttl=64time.7bytesfrom127.0.0.1:icmp_seq=2ttl=64time.7bytes=0.026ms12640.0.1:icmp_seq=3ttl=64time=0.022ms64bytesfrom127.0.0.1:icmp_seq=4=0.023ms---127.0.0.1pingstatistics---4packetstransmitted,4received,0%packetloss,time2999msrttmin/avg/max/mdev=0.014/0.021/0.026/0.005ms现在关闭lo网络接口,测试接口状态再次。具体命令如下:[root@ecs-centos-7~]#iplinksetdevlodown[root@ecs-centos-7~]#iplinkshowlo1:lo:mtu65536qdiscnoqueuestateDOWNmodeDEFAULTgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00[root@ecs-centos-7~]#ping-w3127.0.0.1PING0127.0。.1(127.0.0.1)56(84)个字节的数据。---127.0.0.1ping统计---传输了4个数据包,0received,100%packetloss,time2999ms执行iplinksetdevlodown命令后,网络接口lo关闭,通过iplinkshowlo命令查看接口信息,结果显示接口down..0.1测试接口状态,再次确认接口关闭。修改网口传输队列长度。网络接口的传输队列长度可以通过plsettxqueuelenlengthdevinterfacename命令设置[root@ecs-centos-7~]#iplshoweth02:eth0:mtu1500qdiscpfifo_faststateUPmodeDEFAULTgroupdefaultqlen1200link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ff[root@ecs-centos-7~]#iplsettxqueuelen1000deveth0[root@ecs-centos-7~]#iplshoweth02:eth0:mtu1500qdiscpfifo_faststateUPmodeDEFAULTgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ff在上面的例子中,字符Thestringqlen1200表示传输队列长度为1200。可以看出从例子来看,修改传输队列长度之前,传输队列长度为1200,执行iplsettxqueuelen1000deveth0命令修改传输队列长度为1000,然后执行iplshoweth0命令查询信息eth0网络接口。查询结果中默认的qlen1000表示修改成功。网络接口的MTU(MaximumTransmissionUnit)可以通过plsetmtulengthdevinterfacename命令修改设置网络接口的最大传输单元[root@ecs-centos-7~]#iplshoweth02:eth0:<广播、多路广播AST,UP,LOWER_UP>mtu1600qdiscpfifo_faststateUPmodeDEFAULTgroupdefaultqlen1200link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ff[root@ecs-centos-7~]#iplsetsetmtu1500deveth0[root@ecs-centos-7~]#iplshoweth02:eth0:mtu1500qdiscpfifo_faststateUPmodeDEFAULTgroupdefaultqlen1200link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ff在上例中,字符串mtu1600表示最大transmission的单位是1600,从例子中可以看出,在修改传输队列长度之前,最大传输单元是1600,执行iplsetsetmtu1500deveth0命令修改最大传输单元为1500,然后执行iplshoweth0命令查询eth0网络接口信息,查询结果中mtu1500表示修改成功查看IP路由表查看IP路由表可以使用以下命令ipriprouteiprlistiproutelist查看路由表[root@ecs-centos-7~]#iprdefaultvia192.168.0.1deveth0protodhcpmetric100169.254.169.254via192.168.0.254deveth0protodhcpmetric100192.168.0.0/24deveth0protokernelscopelinksrc192.168.0.9metric100查看指定IP以及网络掩码的路由表[root@ecs-centos-7~]#iprlist192.168.0.0/24192.168.0.0/24deveth0protokernelscopelinksrc192.168.0.9metric100查看ARP缓存ARP是AddressResolutionProtocol的缩写,全称是一种地址解析协议,用于实现IP地址到Mac地址的映射,即要求目标IP的Mac地址在本地存储一个Mac地址对应的IP映射表。这个表叫做ARP缓存表,可以用ipn命令查看缓存表[root@ecs-centos-7~]#ipn192.168.0.1deveth0lladdrfa:16:3e:64:38:a8REACHABLE192.168.0。254deveth0lladdrfa:fa:fa:fa:fa:01STALE更改网卡Mac地址大多数情况下,不需要修改Mac地址,但有时你可能希望隐藏真实的Mac地址(物理地址),这时就可以修改Mac地址,修改Mac地址的命令如下iplinksetdevinterfacenameaddress下面新建Mac地址以修改lo网络接口的Mac地址为例进行说明[root@ecs-centos-7~]#ipllistlo1:lo:mtu65536qdiscnoqueuestateUNKNOWNmodeDEFAULTgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00[root@ecs-centos-7~]#iplsetloaddressfa:16:3e:e0:4f:b4[root@ecs-centos-7~]#ipllistlo1:lo:mtu65536qdiscnoqueuestateUNKNOWNmodeDEFAULTgroupdefaultqlen1000link/loopbackfa:16:3e:e0:4f:b4brd00:00:00:00:00:00从上面的例子可以看出,lo接口的初始Mac地址为00:00:00:00:00:00执行iplsetloaddressfa:16:3e:e0:4f:b4命令修改Mac地址,然后执行ipllistlo查看lo接口信息。输出结果表示Mac地址修改成功注意:如果在当前网络界面上执行以上命令,当前会话会中断,需要重启机器才能恢复,所以最好测试一下检查其他网络接口上的网络统计信息。ip-slink命令可以查看网络接口的一些统计数据,比如接口传输的字节数、包数、错误或丢弃包数等。[root@ecs-centos-7~]#ip-slink1:lo:mtu65536qdiscnoqueuestateUNKNOWNmodeDEFAULTgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00RX:bytespacketserrorsdroppedoverrunmcast27220000TX:bytespacketserrorsdroppedcarriercollsns272200002:eth0:mtu1500qdiscpfifo_faststateUPmodeDEFAULTgroupdefaultqlen1000link/etherfa:16:3e:e0:4f:b8brdff:ff:ff:ff:ff:ffRX:bytespacketserrorsdroppedoverrunmcast479495310000TX:bytespacketserrorsdroppedcarriercollsns508164920000[root@ecs-centos-7~]#想查看更详细的信息可以使用ip-s-slink命令,在排查网络故障时经常用到