6

程序员应该掌握的常用网络问题定位工具

 3 years ago
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.
neoserver,ios ssh client

程序员应该掌握的常用网络问题定位工具


项目日常运维的过程中,经常会遇到各种奇奇怪怪的网络问题。那么排查网络问题,就成为一个合格的程序员必备技能。这里列举出一些常用的指令,用于日常工作中快速定位网络问题。
这个是大家经常用到的一个小工具,用于检查两台服务器之间是否能够成功交换数据包。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 -aip link showroute -nip route show;以及netstatss。出现这样的情况是因为,ifconfignetstat等命令来自于net-tools工具包,而ip linkss 等指令来自iproute2工具包。net-tools已经停止开发了,在很多新版的操作系统里面已经不是默认自带的工具包了,如果想使用需要单独安装。iproute2是用来替换net-tools的,很多新版linux都是默认安装的。而且iproute2包中的很多指令在功能和性能上都要比net-tools包中提供的指令更强大。我这里从网上找了一张图片用来说明俩个工具包的指令对比。


原文链接:https://mp.weixin.qq.com/s/zj4yBgi7QkWunD4mrG4p5A,关注基础编程,注重经验分享及个人成长。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK