有几个命令可以帮助您在Linux系统上查看网络状况,包括ip、ethtool、traceroute、tcptraceroute和tcpdump。ifconfig和netstat命令当然非常有用,但还有许多其他命令可以帮助您查看Linux系统上的网络状况。本文探讨了一些用于检查网络连接的非常方便的命令。ip命令ip命令显示的信息与您使用ifconfig命令时的大部分信息相同。其中一些信息以不同的格式显示,例如显示192.168.0.6/24而不是inetaddr:192.168.0.6Bcast:192.168.0.255,虽然ifconfig更适合数据包计数,但ip命令有许多有用的选项.首先,ipa命令可以列出所有网络接口的信息。$ipa1:lo:mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8范围主机lovalid_lftforeverpreferred_lftforeverinet6::1/128范围主机valid_lftforeverpreferred_lftforever2:eth0:mtu1500qdiscpfifo_faststateUPgroup/10default0qlen0:1e:4f:c8:43:fcbrdff:ff:ff:ff:ff:ffinet192.168.0.6/24brd192.168.0.255scopeglobaleth0valid_lftforeverpreferred_lftforeverinet6fe80::21e:4fff:fec8:43fc/64scopelinkvalid_lftforeverpreferred_lftforever如果只想查看网络接口的简单列表,可以使用grep限制其输出。$一个|grepinetinet127.0.0.1/8scopehostloinet6::1/128scopehostinet192.168.0.6/24brd192.168.0.255scopeglobaleth0inet6fe80::21e:4fff:fec8:43fc/64scopelink可以看到您的默认路由使用以下命令:$iprouteshowdefaultvia192.168.0.1deveth0192.168.0.0/24deveth0protokernelscopelinksrc192.168.0.6在此输出中,您可以看到通过eth0的默认网关是192.168.0.1,本地网络是相当标准的192.168.0.0/24。您还可以使用ip命令启用和禁用网络接口。$sudoiplinkseteth1up$sudoiplinkseteth1downethtool命令另一个非常有用的检查网络的工具是ethtool。该命令提供了大量关于网络接口的描述性数据。eth0的$ethtooleth0Settings:支持的端口:[TP]支持的链接模式:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/Full支持的暂停帧使用:否支持自动协商:是广告ffbaseTes:al1link模式:al110baseT/全100baseT/半100baseT/全1000baseT/全广告暂停帧使用:无广告自动协商:是速度:100Mb/s双工:全端口:双绞线PHYAD:1收发器:内部自动协商:在MDI-X上:on(auto)Cannotgetwake-on-lansettings:OperationnotpermittedCurrentmessagelevel:0x00000007(7)drvprobelinkLinkdetected:yes您还可以使用ethtool命令检查以太网驱动程序设置。$ethtool-ieth0driver:e1000eversion:3.2.6-kfirmware-version:1.4-0expansion-rom-version:bus-info:0000:00:19.0supports-statistics:yessupports-test:yessupports-eeprom-access:yessupports-register-dump:yessupports-priv-flags:no自动协商的细节可以用这个命令显示:$ethtool-aeth0Pauseparametersforeth0:Autonegotiate:onRX:onTX:ontraceroute命令traceroute命令用于显示路由路径。它的工作原理是在一系列数据包中设置数据包标头的TTL(生存时间)字段,以捕获数据包所采用的路径以及数据包从一跳传输到下一跳所花费的时间。traceroute的输出对于评估网络连接的健康状况很有用,因为某些路由可能需要更长的时间才能到达最终目的地。$sudotracerouteworld.std.comtraceroute到world.std.com(192.74.137.5),最多30跳,60字节数据包1192.168.0.1(192.168.0.1)3.691ms3.678ms3.665ms210.224.64.1(10.224.64.1))26.273MS27.354MS28.574MS310.20.0.33(10.20.0.33)28.293MS30.625MS33.959MS410.20.0.226(10.20.0.0.226)40.429毫秒6ash-b1-link.telia.net(80.239.161.69)41.612毫秒28.214毫秒29.573毫秒7xe-1-3-1.er1.iad10.us.zip.zayo.com(64.125.13.157)30.429毫秒27.915毫秒29.065毫秒8ae6.cr1.dca2.us.zip.zayo.com(64.125.20.117)31.353毫秒32.413毫秒33.821毫秒9ae27.cs1.dca2.us.eth.zayo.com(64.125.30.246)毫秒43.47444.519毫秒46.037毫秒10ae4.cs1.lga5.us.eth.zayo.com(64.125.29.202)48.107毫秒48.960毫秒50.024毫秒11ae8.mpr3.bos2.us.zip.zayo.com(64.125.30.139)50毫秒51.6262毫秒39.283毫秒1264.124.51.229.t495-rtr.towerstream.com(64.124.51.229)40.233毫秒41.295毫秒39.651毫秒1369.38.149.18(69.38.149.18)44.955ms46.210ms55.673ms1464.119.137.154(64.119.137.154)56.076ms56.064ms56.052ms15world.std.com(192.74.137.5)63.440ms63.886ms63.870mstcptraceroute命令tcptraceroute命令与traceroute基本上是一样的,除了它可以绕过大多数常见防火墙的过滤。正如命令的手册页所述,tcptraceroute发送TCPSYN数据包而不是UDP或ICMPECHO数据包,因此它不太可能被阻止。tcpdump命令tcpdump命令允许您捕获网络数据包以供进一步分析。使用-D选项列出可用的网络接口。$tcpdump-D1.eth0[Up,Running]2.any(在所有接口上捕获的伪设备)[Up,Running]3.lo[Up,Running,Loopback]4.nflog(Linuxnetfilterlog(NFLOG)接口)5.nfqueue(Linuxnetfilter队列(NFQUEUE)接口)6.usbmon1(USB总线1号)7.usbmon2(USB总线2号)8.usbmon3(USB总线3号)9.usbmon4(USB总线4号)10.usbmon5(USBbusnumber5)11.usbmon6(USBbusnumber6)12.usbmon7(USBbusnumber7)-v选项控制你看到多少细节-v越多,细节越多,但超过3v没有意义。$sudotcpdump-vvhost192.168.0.32tcpdump:侦听eth0,链路类型EN10MB(以太网),捕获大小262144字节20:26:31.321816IP(tos0x10,ttl64,id22411,偏移量0,标志[DF],protoTCP(6),length184)192.168.0.6.ssh>192.168.0.32.57294:Flags[P.],cksum0x8221(incorrect->0x0254),seq3891093411:3891093555,ack23889883308:2388.IP2868313(2388.IP2868333)tos0x10,ttl64,id22412,offset0,flags[DF],protoTCP(6),length200)192.168.0.6.ssh>192.168.0.32.57294:Flags[P.],cksum0x8231(不正确->0x3db0),seq144:304,ack1,win329,length16020:26:31.323791IP(tos0x0,ttl128,id20259,offset0,flags[DF],protoTCP(6),长度40)192.168。0.32.57294>192.168.0.6.ssh:Flags[.],cksum0x643d(correct),seq1,ack304,win385,length020:26:31.383954IP(tos0x10,ttl64,id22413,offset0,flags[DF],protoTCP(6),length248)...当你运行这样的命令时,你会看到很多输出。此命令从特定主机和eth0上捕获11个数据包。-w选项标识保存捕获的数据包的文件。在这个示例命令中,我们只要求捕获11个数据包。$sudotcpdump-c11-ieth0src192.168.0.32-wpackets.pcaptcpdump:侦听eth0,链路类型EN10MB(以太网),捕获大小262144字节11个数据包捕获的11个数据包由filter0接收的数据包由pcap命令丢弃地址映射到硬件地址。它提供的信息在某种程度上也可用于识别系统,因为网络适配器可以告诉您有关使用它们的系统的一些信息。下面的第二个MAC地址以f8:8e:85开头,很容易识别为Comtrend路由器。$arp-a?(192.168.0.12)在eth0上的b0:c0:90:3f:10:15[ether]?(192.168.0.1)atf8:8e:85:35:7f:b9[ether]oneth0上面第一行是系统自带网卡的MAC地址。该网络适配器似乎是由台湾的ChiconyElectronics制造的。您可以轻松地在线查找MAC地址关联,例如使用Wireshark中的工具-https://www.wireshark.org/tools/oui-lookup.html。