PHP速学视频免费教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
linux网络故障排查的起点是检查物理层与链路层连通性,逐步深入ip配置、路由、dns、防火墙、服务状态及抓包分析。1.首先确认网线连接正常,使用ip link show或ifconfig -a查看网卡状态是否up,down则用命令激活;2.通过ip a show确认ip地址配置正确,ip r show检查默认路由是否存在;3.用ping测试本机、网关、外网ip和域名解析,判断问题层级;4.cat /etc/resolv.conf或resolvectl status确认dns配置,dig或nslookup测试域名解析;5.检查iptables、ufw或firewalld规则,确认端口开放;6.用ss -tuln或netstat -tuln查看监听端口,lsof -i定位占用进程;7.利用tcpdump在对应接口抓包分析数据流向,保存为pcap文件后导入wireshark进行图形化深度解析;8.查看journalctl -xe或tail -f /var/log/syslog获取系统和服务日志线索,辅助问题定位。
Linux网络故障排查,其实就是一场侦探游戏,核心在于系统性地缩小问题范围,并最终锁定症结所在。这通常需要从最基础的网络连通性检查开始,逐步深入到系统日志、服务状态,最终动用强大的抓包和诊断工具,去“看”网络里到底发生了什么。很多时候,问题并不复杂,只是我们没有找到正确的“视角”去观察它。
排查Linux网络故障,我习惯从以下几个层次入手,像剥洋葱一样层层深入:
物理层与链路层初步判断:
ip link show或
ifconfig -a(如果还在用) 确认网卡是否识别,状态是否是UP。如果显示DOWN,尝试
sudo ip link set <interface_name> up激活。
dmesg输出,看是否有网卡驱动相关的错误信息。
IP地址与路由配置:
ip a show:确认网卡是否正确获取到IP地址(手动配置或DHCP)。检查子网掩码是否正确。
ip r show:查看路由表,特别是默认网关是否指向正确。如果缺少默认路由,外部网络将无法访问。
ping <gateway_ip>:测试能否ping通网关。
ping 8.8.8.8或
ping 114.114.114.114:测试能否ping通外网IP,排除DNS问题。
traceroute <destination_ip>或
mtr <destination_ip>:追踪数据包路径,看是在哪一跳中断。
DNS解析问题:
cat /etc/resolv.conf:检查DNS服务器配置是否正确。
resolvectl status(systemd-resolved 用户) 或
systemd-resolve --status:查看DNS解析器状态。
dig <hostname>或
nslookup <hostname>:测试域名解析是否正常。如果能ping通IP但不能ping通域名,基本就是DNS问题。
防火墙与安全组:
sudo iptables -nvL:检查iptables规则,看是否有规则阻止了流量。
sudo ufw status:如果使用UFW,检查其状态和规则。
sudo firewall-cmd --list-all(如果使用firewalld):检查firewalld规则。
服务与端口状态:
ss -tuln或
netstat -tuln:查看哪些端口正在监听,哪些连接已建立。确认服务是否在正确的端口上监听。
sudo lsof -i :<port_number>:查看哪个进程占用了特定端口。
systemctl status <service_name>:检查相关网络服务的运行状态,比如
nginx、
apache2、
sshd等。
抓包分析:
tcpdump -i <interface> host <ip_address> and port <port_number> -vvv -X:在命令行实时抓取数据包,观察流量走向和内容。这是最直接的“看”网络数据的方式。
tcpdump抓取的数据保存为pcap文件 (
-w <filename.pcap>),然后导入Wireshark进行图形化分析。Wireshark提供了强大的协议解析和过滤功能,能帮助我们深入理解数据包的每一个细节。
系统日志:
journalctl -xe:查看系统日志,特别是与网络、服务相关的错误或警告信息。很多时候,服务启动失败或配置错误会在日志中留下线索。
tail -f /var/log/syslog或
/var/log/messages:实时监控日志,观察在重现问题时是否有新的错误出现。
当我们面对一个“网络不通”的模糊报告时,首先要做的不是急着去用复杂的工具,而是要明确问题的“边界”和“症状”。这个起点,我个人觉得,是明确故障的范围和初步的连通性测试。
打个比方,你家停电了,你会先看是不是总闸跳了,而不是直接拆开插座检查。网络故障也是如此。
一旦有了初步判断,就可以进行最简单的连通性测试:
ping
命令:
ping 127.0.0.1:测试本机网络栈是否正常。如果这个都不通,那问题非常底层。
ping <本机同网段另一台机器的IP>:测试局域网内连通性。
ping <默认网关IP>:测试能否到达网关。如果网关不通,那基本可以确定问题在本地网卡、线缆或网关设备本身。
ping 8.8.8.8(Google DNS) 或
ping baidu.com:测试能否访问外部网络。如果能ping通IP但ping不通域名,那DNS配置就成了重点怀疑对象。
ip a show
和 ip r show
:
ip a show告诉你你的网卡叫什么,有没有IP地址,地址对不对。
ip r show告诉你你的数据包要往哪里走,有没有去往目的地的路。很多时候,IP地址配置错误、子网掩码不对或者缺少默认路由,就能直接导致“网络不通”。
这些基础检查,看似简单,却能迅速排除大量低级错误,为后续的深入排查指明方向。
Linux命令行工具的强大之处在于它们的组合性和灵活性,能够以非常精细的方式检查网络状态。除了上面提到的
ping、
ip,还有一些工具是网络排查的利器。
ss
(Socket Statistics) / netstat
:
ss -tuln:这是我最常用的命令之一。
t表示TCP,
u表示UDP,
l表示监听状态,
n表示不解析服务名和主机名(更快)。它能清晰地列出所有正在监听的端口以及对应的进程。如果你的服务声称已经启动,但这里看不到对应的监听端口,那么服务可能根本没起来,或者监听的地址/端口不对。
ss -s:查看套接字统计信息,能大致了解当前系统的网络连接负载。
netstat虽然老旧,但在很多系统上依然可用,
netstat -tulnp也能达到类似效果,
p参数可以显示进程ID和程序名。
lsof -i
(List Open Files - Internet sockets):
ss或
netstat没告诉你具体是哪个进程时,
lsof -i :<port_number>就能派上用场。它会列出所有打开了指定端口的进程,包括PID,这对于解决端口冲突问题非常有效。
lsof -i tcp或
lsof -i udp也能列出所有TCP或UDP连接。
curl
/ wget
:
curl -v <http://example.com>:它会显示HTTP请求的详细过程,包括DNS解析、TCP连接、SSL握手、HTTP请求头和响应头。如果
ping能通,但
curl连不上网站,那么问题可能出在HTTP/HTTPS代理、防火墙、Web服务器配置或应用层服务本身。
-v参数非常关键,能提供大量调试信息。
wget <http://example.com>:类似
curl,可以测试HTTP/HTTPS连通性。
nmap
(Network Mapper):
nmap也可以用来快速扫描目标主机的开放端口。
nmap -p 22,80,443 <target_ip>:扫描目标IP的22、80、443端口是否开放。这能帮助你判断目标机器的防火墙是否允许你的连接,或者服务是否确实在监听这些端口。
这些工具的组合使用,能让你像X光一样“透视”网络连接的各个层面,从链路到应用,迅速锁定问题所在。
当所有基础工具都无法明确指出问题,或者你需要深入了解数据包在网络中是如何流动的、内容是什么时,抓包工具就成了不可或缺的“显微镜”。
tcpdump和
Wireshark是这个领域的两大巨头。
tcpdump
:命令行下的瑞士军刀
tcpdump是一个强大的命令行抓包工具,尤其适合在服务器上进行实时监控和快速诊断。
基本用法:
sudo tcpdump -i <interface_name>
<interface_name>是你要监听的网卡接口,比如
eth0、
ens33、
lo(本地回环)。
常用选项和过滤:
-n:不将IP地址转换为主机名,不将端口号转换为服务名,提高抓包速度和可读性。
-nn:更彻底,不解析主机名和服务名。
-v/
-vv/
-vvv:增加详细程度,显示更多协议信息。
-X:显示十六进制和ASCII码的数据包内容,可以看到应用层数据。
-s 0:捕获完整数据包,不截断(默认会截断)。
-w <filename.pcap>:将抓取到的数据包保存到文件,方便后续用
Wireshark分析。
tcpdump的精髓。
host <ip_address>:只抓取与指定IP地址相关的数据包。
port <port_number>:只抓取指定端口的数据包。
src host <ip>/
dst host <ip>:源IP或目的IP。
src port <port>/
dst port <port>:源端口或目的端口。
tcp/
udp/
icmp:只抓取特定协议的数据包。
and/
or/
not:组合过滤条件。
sudo tcpdump -nn -i eth0 host 192.168.1.100 and port 80 or port 443 -w web_traffic.pcap
eth0接口上,与
192.168.1.100之间,发生在80或443端口的TCP/UDP数据包,并保存到
web_traffic.pcap文件。
Wireshark
:图形化数据包分析大师
Wireshark是一个图形界面的网络协议分析器,它能够读取
tcpdump生成的pcap文件,并提供极其强大的协议解析、过滤和可视化功能。
Wireshark,选择
File -> Open,导入你用
tcpdump保存的pcap文件。
Wireshark的过滤功能比
tcpdump强大得多,支持各种协议字段的过滤。
ip.addr == 192.168.1.100:显示与该IP地址相关的所有数据包。
tcp.port == 80:显示所有TCP 80端口的数据包。
http:显示所有HTTP协议的数据包。
http.request.method == "POST":过滤HTTP POST请求。
tcp.flags.syn == 1 and tcp.flags.ack == 0:显示所有SYN包(TCP三次握手的第一步)。
Wireshark能自动解析上百种网络协议,并以树状结构展示每个数据包的详细内容,从物理层到应用层,一览无余。
Follow -> TCP Stream,可以查看一个完整的TCP会话的来回数据流,这对于调试HTTP、SSH等应用层协议非常有用。
实战场景:
假设你的Web服务器无法访问。
ping确认服务器是否在线。
ss -tuln确认Nginx/Apache是否在监听80/443端口。
sudo tcpdump -nn -i eth0 port 80 or port 443 -w web_debug.pcap。
tcpdump,将
web_debug.pcap文件下载到本地,用
Wireshark打开。
Wireshark中过滤
tcp.port == 80 or tcp.port == 443。
抓包是网络排查的最后一道防线,也是最能揭示真相的手段。它能让你看到数据包在“线”上的真实面貌,排除各种猜测,直达问题本质。
已抢2127个
抢已抢2600个
抢已抢3108个
抢已抢4778个
抢已抢4185个
抢已抢34407个
抢