排查linux网络故障应按步骤进行:一、检查本地网络接口状态,使用ip link或ifconfig确认网卡是否up,用ip addr查看ip配置是否正确,并查看日志获取报错信息,必要时重启网卡或重新获取ip;二、测试基本连通性,先ping网关确认局域网状态,再ping外部地址测试外网连接,通过ip route show检查路由表是否正确;三、检查dns和端口连接,修改/etc/resolv.conf测试dns解析,使用nslookup验证域名解析,用telnet或nc测试目标端口是否开放;四、查看系统防火墙和selinux设置,使用systemctl status firewalld或ufw status检查防火墙状态,按需开放端口,临时禁用selinux以排除策略限制问题。
网络出问题的时候,第一反应不该是重启服务器,而是按照流程一步步排查。Linux系统下排查网络故障其实有一套相对固定的思路,从基础连通性到服务配置逐层深入,多数常见问题都能定位清楚。
一、检查本地网络接口状态
先确认网卡有没有正常启动。用 ip link 或者老一点的 ifconfig 看看网卡是不是 up 的状态。如果看到类似 DOWN 或者没有分配 IP 地址,那可能就是网卡没起来。
接着可以用 ip addr 查看IP地址是否正确,特别是如果你是手动配置的IP,容易写错子网掩码或者网关。
另外,可以看看 /var/log/messages 或者 journalctl -u networking(取决于发行版)是否有报错信息。
常见的处理方法:
- 重启网卡:ip link set eth0 down/up
- 重新获取IP(如果是DHCP):dhclient eth0
- 检查网卡配置文件(如 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ifcfg-eth0)
有时候只是配置写错了,改完重启一下就通了。
二、测试基本连通性
确定本机网卡没问题后,下一步是测试网络是否通。最简单的办法是 ping 自己的网关:
ping <网关IP>
如果能通,说明局域网没问题;不通的话可能是交换机、防火墙或路由的问题。
再试着 ping 外部地址,比如:
ping 8.8.8.8
如果 ping 不通外网但能 ping 通网关,那可能是 DNS 配置不对或者默认路由设置有问题。这时候可以看一下路由表:
ip route show
确保默认路由指向正确的网关。如果有多个网卡或者多条路由,可能会出现优先级错误的情况。
三、检查DNS和端口连接
即使网络通了,也不代表服务就能访问。这时候要检查DNS解析是否正常。可以临时修改 /etc/resolv.conf 加一个公共DNS,比如:
nameserver 8.8.8.8
然后试试能不能解析域名:
nslookup example.com
如果还是不行,有可能是防火墙拦住了53端口,或者DNS服务器本身挂了。
另一个常见问题是目标端口不通。比如你访问不了网页,但 ping 是通的,那可能是 80/443 被屏蔽了。可以用 telnet 或 nc 测试端口:
telnet example.com 80
如果连接不上,可能是目标服务器没开对应服务,也可能是中间有防火墙拦截。
四、查看系统防火墙和SELinux设置
很多网络问题其实是被系统自带的防火墙挡住了。CentOS/RHEL 上可以用:
systemctl status firewalld
Ubuntu则是:
ufw status
如果防火墙开着,记得检查允许的端口。例如开放80端口:
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
另外,SELinux有时也会限制某些服务的网络访问。可以临时禁用看看:
setenforce 0
如果问题解决了,那就是SELinux策略的问题,需要调整相关策略或放行对应服务。
基本上就这些步骤,按顺序来一般能找到问题所在。网络排查不复杂,但容易忽略细节,比如拼写错误、防火墙规则、路由优先级这些小地方。遇到问题别急着重启,先查查日志和配置,效率更高。
以上就是如何排查Linux网络故障 常见问题诊断流程解析的详细内容,更多请关注php中文网其它相关文章!