![3fed5d6b9de1deb217168f202bc4658e.png](https://i-blog.csdnimg.cn/blog_migrate/6da21bc26a83a331ee59ea68deeb50b1.jpeg)
php中文网课程
每日17点准时技术干货分享
![54bed376c4208eddce99588282975ac3.png](https://i-blog.csdnimg.cn/blog_migrate/303c1f0f85c12a38542765bd8a44afa1.jpeg)
本文为php中文网认证作者:“齐天大圣”投稿。
如果公司网站打不开了,假如是因为网络问题,你该如何去进行排查。又比如,远程连接工具连不上服务器或mysql数据库连不上,会不会是因为网络问题。
日常工作或学习中,我们经常会遇到各种各样的网络问题(因为计算机网络实在太复杂了)。现在我们来看看,如果linux服务器出现了网络问题,该如何去排查。
ping
首先来看ping命令,这个命令是用来测试两台主机之间能否进行正常通讯的工具。ping的对象既可以是ip地址,也可以是域名。该命令在linux以及windows的cmd模式下都可以使用。使用方法都是一样的。
# ping -c 4 8.210.247.5PING 8.210.247.5 (8.210.247.5) 56(84) bytes of data.64 bytes from 8.210.247.5: icmp_seq=1 ttl=64 time=1.54 ms64 bytes from 8.210.247.5: icmp_seq=2 ttl=64 time=1.48 ms64 bytes from 8.210.247.5: icmp_seq=3 ttl=64 time=1.46 ms64 bytes from 8.210.247.5: icmp_seq=4 ttl=64 time=1.48 ms--- 8.210.247.5 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 1.460/1.494/1.548/0.042 ms # ping -c 1 baidu.com ……
下面,是一个shell脚本,用来查看局域网有哪些ip可以进行通讯
#!/bin/bashnet='192.168.2.'seqs=`seq 1 254`for seq in $seqsdo ip=$net$seq /usr/bin/ping -c 1 -W 1 $ip >/dev/null 2>&1 if [ "$?" == "0" ];then echo "$ip is UP" fidone
traceroute
该命令是用来查看两台主机之间的各个节点的网络情况。如果当你访问一个网站的时候,速度较慢,那么可以用该命令来查看所有节点的网络情况。
# traceroute -n google.comtraceroute to google.com (172.217.163.238), 30 hops max, 60 byte packets 1 * * * 2 11.109.220.61 1.444 ms 1.577 ms 11.109.216.189 1.500 ms 3 11.109.220.190 5.512 ms * 11.109.220.174 5.382 ms 4 11.131.180.222 1.660 ms 11.131.180.218 1.519 ms 11.131.180.250 1.365 ms ……
nslookup
该命令是可以通过域名来反查ip地址的,使用非常简单。
nslookup 5iqm.comServer: 100.100.2.136Address: 100.100.2.136#53Non-authoritative answer:Name: 5iqm.comAddress: 121.196.12.64
netstat
。如果网站访问不了,我们首先做的应该是ping服务器的ip地址,如果能够正常ping通,接下来应该ping网站域名,看dns是否正常解析。如果都没有问题,网站还是访问不了,那就需要去看看80端口是否对外开放了。netstat命令就是用来查看主机端口监听情况。
# netstat -tlunpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30721/nginx: master tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1275/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1167/sshd tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 30721/nginx: master tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2068/python
telnet
该命令可以用来测试服务器的指定端口是否对自己开放。
# telnet 8.210.110.139 22Trying 8.210.110.139...Connected to 8.210.110.139. Escape character is '^]'.SSH-2.0-OpenSSH_7.4# telnet 8.210.110.139 3306Trying 8.210.110.139... <=== 一直是这样的状态则
如果是上述的第一种情况,则说明8.210.110.139的22端口是开放的。如果是第二种的话,一直在trying,则说明此端口没有对自己开放。
![9200857cb8a4cfec0d24e7b67cfd87f0.png](https://i-blog.csdnimg.cn/blog_migrate/e24197734e050a59f7976d721b46e836.png)
▼