6
程序员应该掌握的常用网络问题定位工具
source link: http://dockone.io/article/2434153
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
程序员应该掌握的常用网络问题定位工具
项目日常运维的过程中,经常会遇到各种奇奇怪怪的网络问题。那么排查网络问题,就成为一个合格的程序员必备技能。这里列举出一些常用的指令,用于日常工作中快速定位网络问题。
这个是大家经常用到的一个小工具,用于检查两台服务器之间是否能够成功交换数据包。
ping
指令向对方主机发送ICMP
报文。当能成功ping
通时表示两台主机之间的网络链路是畅通的。如果ping
不通,首先需要确认对方是否关停了ping
服务,如果没有关停,就需要检查双方的网络链接问题了。telnet
该指令主要用于检查到对方端口的网络联通性,如果telnet
能通,一般证明TCP
三次握手已经建立成功,也就是网络层是畅通的。如果telnet
不通,需要确认对方是否已经启动相应服务端口,如果已启动,那么就要检查双方的防火墙策略等问题。ifconfig
ifconfig
指令除了可以查看网卡信息外,还可以修改网络配置。比如查看网卡信息 ifconfig -a
;启动网卡 ifconfig eth0 up
;关停网卡 ifconfig eth0 down
等操作。除了使用
ifconfig
查看及配置网卡信息外,还可以通过 ip link show
查看网卡信息,启动网卡信息 ip link set down eth0
; 关停网卡 ip link set up eth1
等操作。注意:启动关停网卡在
SSH
链接的情况下,尽量不要操作。
route
route
指令一般用于查看和配置服务器路由信息。比如查看路由信息 route -n
或者 route -nee
添加或者删除路由信息 route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}
等等。同样,除了使用
route
指令外也可以使用 ip route show
查看路由信息;和 route -n
是等效的。这里更推荐使用ip route
命令。traceroute
该指令用于查看从源地址到目的地址的路由路径。比如traceroute www.baidu.com
用于判断你和目标地址之间经过了哪些网络设备。windows
下是tracert
netstat
这个指令比较强大,也是程序员日常用的比较多的一个指令。该指令可以显示服务器的网络状态,比如,显示服务器当前所有socket
链接 netstat -a
; 显示UDP/TCP
端口的使用情况 netstat -apu/netstat -apt
; 显示网络统计信息 netstat -s
; 查看8080
端口的状态 netstat -anp|grep 8080
。和
netstat
等价的指令是ss
指令。ss -l
列出所有本机已经打开的端口。ss -t/u -a
显示所有tcp/udp
链接。查看某个链接属于哪个进程 ss -tp
。查看本地的端口状态 ss -t src ip:8080
。这里更推荐使用ss
指令。tcpdump
网络抓包工具,当遇到奇怪的网络问题时,通过tcpdump
进行网络抓包,然后进行分析定位问题。根据源IP进行抓包 tcpdump -i eth2 src 192.168.199.100
即只抓取通过eth2
这块网卡的且源地址为192.168.199.100
的网络包。当然也可以指定端口抓包,比如 tcpdump src port 8088
。总之该命令非常强大,这里不做更多的详细介绍,感兴趣的可以自行了解。这是一个网络嗅探和扫描工具,做网络安全的小伙伴会比较熟悉。经常用来检查对方主机开放了哪些端口。比如查看对方主机开放了哪些端口
nmap -PS 192.168.199.100
,还可以探测目标IP的操作系统 nmap -O 192.168.199.100
。总之该命令做网络安全的会用的比较多,程序员使用的会比较少一些,感兴趣的可以深入研究,该指令及其强大。上面提到的小工具,对于有些问题的定位,可以通过两个不同的指令达到同样的效果。比如
ifconfig -a
和 ip link show
; route -n
和 ip route show
;以及netstat
和ss
。出现这样的情况是因为,ifconfig
和 netstat
等命令来自于net-tools
工具包,而ip link
和 ss
等指令来自iproute2
工具包。net-tools
已经停止开发了,在很多新版的操作系统里面已经不是默认自带的工具包了,如果想使用需要单独安装。iproute2
是用来替换net-tools
的,很多新版linux
都是默认安装的。而且iproute2
包中的很多指令在功能和性能上都要比net-tools
包中提供的指令更强大。我这里从网上找了一张图片用来说明俩个工具包的指令对比。原文链接:https://mp.weixin.qq.com/s/zj4yBgi7QkWunD4mrG4p5A,关注基础编程,注重经验分享及个人成长。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK