盘点如何在Linux上检查网络连接状况命令方法
2018-02-24 10:07:14
1898浏览
在现如今,大多数开发编程语言都会有命令可以帮助到你,比如在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命令可以列出所有网络接口的信息。
$ipa
1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1
link/loopback00:00:00:00:00:00brd00:00:00:00:00:00
inet127.0.0.1/8scopehostlo
valid_lftforeverpreferred_lftforever
inet6::1/128scopehost
valid_lftforeverpreferred_lftforever
2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_faststateUPgroupdefaultqlen1000
link/ether00:1e:4f:c8:43:fcbrdff:ff:ff:ff:ff:ff
inet192.168.0.6/24brd192.168.0.255scopeglobaleth0
valid_lftforeverpreferred_lftforever
inet6fe80::21e:4fff:fec8:43fc/64scopelink
valid_lftforeverpreferred_lftforever
如果你只想看到简单的网络接口列表,你可以用grep限制它的输出。
$ipa|grepinet
inet127.0.0.1/8scopehostlo
inet6::1/128scopehost
inet192.168.0.6/24brd192.168.0.255scopeglobaleth0
inet6fe80::21e:4fff:fec8:43fc/64scopelink
使用如下面的命令,你可以看到你的默认路由:
$iprouteshow
defaultvia192.168.0.1deveth0
192.168.0.0/24deveth0protokernelscopelinksrc192.168.0.6
在这个输出中,你可以看到通过eth0的默认网关是192.168.0.1,并且本地网络是相当标准的192.168.0.0/24。
你也可以使用ip命令来启用和禁用网络接口。
$sudoiplinkseteth1up
$sudoiplinkseteth1down
ethtool命令
另一个检查网络非常有用的工具是ethtool。这个命令提供了网络接口上的许多描述性的数据。
$ethtooleth0
Settingsforeth0:
Supportedports:[TP]
Supportedlinkmodes:10baseT/Half10baseT/Full
100baseT/Half100baseT/Full
1000baseT/Full
Supportedpauseframeuse:No
Supportsauto-negotiation:Yes
Advertisedlinkmodes:10baseT/Half10baseT/Full
100baseT/Half100baseT/Full
1000baseT/Full
Advertisedpauseframeuse:No
Advertisedauto-negotiation:Yes
Speed:100Mb/s
Duplex:Full
Port:TwistedPair
PHYAD:1
Transceiver:internal
Auto-negotiation:on
MDI-X:on(auto)
Cannotgetwake-on-lansettings:Operationnotpermitted
Currentmessagelevel:0x00000007(7)
drvprobelink
Linkdetected:yes
你也可以使用ethtool命令来检查以太网驱动程序的设置。
$ethtool-ieth0
driver:e1000e
version:3.2.6-k
firmware-version:1.4-0
expansion-rom-version:
bus-info:0000:00:19.0
supports-statistics:yes
supports-test:yes
supports-eeprom-access:yes
supports-register-dump:yes
supports-priv-flags:no
自动协商的详细信息可以用这样的命令来显示:
$ethtool-aeth0
Pauseparametersforeth0:
Autonegotiate:on
RX:on
TX:on
traceroute命令
traceroute命令用于显示路由路径。它通过在一系列数据包中设置数据包头的TTL(生存时间)字段来捕获数据包所经过的路径,以及数据包从一跳到下一跳需要的时间。traceroute的输出有助于评估网络连接的健康状况,因为某些路由可能需要花费更长的时间才能到达最终的目的地。
$sudotracerouteworld.std.com
traceroutetoworld.std.com(192.74.137.5),30hopsmax,60bytepackets
1192.168.0.1(192.168.0.1)3.691ms3.678ms3.665ms
210.224.64.1(10.224.64.1)26.273ms27.354ms28.574ms
310.20.0.33(10.20.0.33)28.293ms30.625ms33.959ms
410.20.0.226(10.20.0.226)36.807ms37.868ms37.857ms
5204.111.0.132(204.111.0.132)38.256ms39.091ms40.429ms
6ash-b1-link.telia.net(80.239.161.69)41.612ms28.214ms29.573ms
7xe-1-3-1.er1.iad10.us.zip.zayo.com(64.125.13.157)30.429ms27.915ms29.065ms
8ae6.cr1.dca2.us.zip.zayo.com(64.125.20.117)31.353ms32.413ms33.821ms
9ae27.cs1.dca2.us.eth.zayo.com(64.125.30.246)43.474ms44.519ms46.037ms
10ae4.cs1.lga5.us.eth.zayo.com(64.125.29.202)48.107ms48.960ms50.024ms
11ae8.mpr3.bos2.us.zip.zayo.com(64.125.30.139)51.626ms51.200ms39.283ms
1264.124.51.229.t495-rtr.towerstream.com(64.124.51.229)40.233ms41.295ms39.651ms
1369.38.149.18(69.38.149.18)44.955ms46.210ms55.673ms
1464.119.137.154(64.119.137.154)56.076ms56.064ms56.052ms
15world.std.com(192.74.137.5)63.440ms63.886ms63.870ms
tcptraceroute命令
tcptraceroute命令与traceroute基本上是一样的,只是它能够绕过最常见的防火墙的过滤。正如该命令的手册页所述,tcptraceroute发送TCPSYN数据包而不是UDP或ICMPECHO数据包,所以其不易被阻塞。
tcpdump命令
tcpdump命令允许你捕获网络数据包来进一步分析。使用-D选项列出可用的网络接口。
$tcpdump-D
1.eth0[Up,Running]
2.any(Pseudo-devicethatcapturesonallinterfaces)[Up,Running]
3.lo[Up,Running,Loopback]
4.nflog(Linuxnetfilterlog(NFLOG)interface)
5.nfqueue(Linuxnetfilterqueue(NFQUEUE)interface)
6.usbmon1(USBbusnumber1)
7.usbmon2(USBbusnumber2)
8.usbmon3(USBbusnumber3)
9.usbmon4(USBbusnumber4)
10.usbmon5(USBbusnumber5)
11.usbmon6(USBbusnumber6)
12.usbmon7(USBbusnumber7)
-v选项控制你看到的细节程度——越多的v,越详细,但超过3个v不会有更多意义。
$sudotcpdump-vvhost192.168.0.32
tcpdump:listeningoneth0,link-typeEN10MB(Ethernet),capturesize262144bytes
20:26:31.321816IP(tos0x10,ttl64,id22411,offset0,flags[DF],protoTCP(6),length184)
192.168.0.6.ssh>192.168.0.32.57294:Flags[P.],cksum0x8221(incorrect->0x0254),seq3891093411:3891093555,ack2388988308,win329,length144
20:26:31.321984IP(tos0x10,ttl64,id22412,offset0,flags[DF],protoTCP(6),length200)
192.168.0.6.ssh>192.168.0.32.57294:Flags[P.],cksum0x8231(incorrect->0x3db0),seq144:304,ack1,win329,length160
20:26:31.323791IP(tos0x0,ttl128,id20259,offset0,flags[DF],protoTCP(6),length40)
192.168.0.32.57294>192.168.0.6.ssh:Flags[.],cksum0x643d(correct),seq1,ack304,win385,length0
20:26:31.383954IP(tos0x10,ttl64,id22413,offset0,flags[DF],protoTCP(6),length248)
...
当你运行像这样的命令时,会看到非常多的输出。
这个命令捕获来自特定主机和eth0上的11个数据包。-w选项标识保存捕获包的文件。在这个示例命令中,我们只要求捕获11个数据包。
$sudotcpdump-c11-ieth0src192.168.0.32-wpackets.pcap
tcpdump:listeningoneth0,link-typeEN10MB(Ethernet),capturesize262144bytes
11packetscaptured
11packetsreceivedbyfilter
0packetsdroppedbykernel
arp命令
arp命令将IPv4地址映射到硬件地址。它所提供的信息也可以在一定程度上用于识别系统,因为网络适配器可以告诉你使用它们的系统的一些信息。下面的第二个MAC地址,以f8:8e:85开头,很容易被识别出是Comtrend路由器。
$arp-a
?(192.168.0.12)atb0:c0:90:3f:10:15[ether]oneth0
?(192.168.0.1)atf8:8e:85:35:7f:b9[ether]oneth0
最后想要了解更多关于Linux发展前景趋势,请关注扣丁学堂Linux培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的
Linux培训视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的
Linux视频教程课程,让你快速掌握Linux从入门到精通开发实战技能。扣丁学堂Linux技术交流群:422345477。
【关注微信公众号获取更多的学习资料】
查看更多关于“Linux培训资讯”的相关文章>>
标签:
Linux命令
Linux视频教程
Linux培训
Linux在线学习
Linux在线视频
Linux系统