Linux系统作为服务器和开发环境的主流选择,网络功能是其核心能力之一,但日常使用中难免会出现各类网络故障,掌握常见故障的排查和解决方法能大幅提升问题处理效率。

常见Linux网络故障类型及解决办法
1. 网卡未启动或识别异常
这是最基础的网络故障,表现为执行网络相关命令时没有对应网卡信息,或者网卡状态显示为down。
首先可以通过ifconfig或者ip addr命令查看当前网卡状态:
# 查看所有网卡信息 ip addr # 若使用旧版系统可以用ifconfig ifconfig -a
如果网卡没有显示,可能是驱动未加载,可检查内核模块:
# 查看已加载的网络驱动模块 lsmod | grep eth # 手动加载对应驱动,以e1000为例 modprobe e1000
如果网卡存在但状态为down,可手动启动:
# 启动eth0网卡,根据实际网卡名调整 ifconfig eth0 up # 或者使用ip命令 ip link set eth0 up
2. IP地址配置错误
IP配置错误会导致无法和同网段其他设备通信,或者无法访问网关。
如果是临时配置IP,可通过以下命令修改:
# 临时设置eth0的IP为192.168.1.100,子网掩码24位 ip addr add 192.168.1.100/24 dev eth0 # 设置默认网关 ip route add default via 192.168.1.1
如果需要永久配置,需要修改网卡配置文件,不同发行版路径略有区别:
- CentOS/RHEL系统:/etc/sysconfig/network-scripts/ifcfg-eth0
- Ubuntu/Debian系统:/etc/netplan/下的yaml配置文件
以CentOS为例,配置文件内容参考如下:
# 网卡配置文件内容 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=eth0 UUID=xxxx-xxxx-xxxx-xxxx DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
修改完成后重启网络服务:
# CentOS 7及以上 systemctl restart NetworkManager # CentOS 6及以下 service network restart
3. 路由表配置异常
路由表错误会导致跨网段访问失败,比如能ping通同网段设备,但无法访问公网。
查看当前路由表的命令如下:
# 查看路由表 ip route # 或者旧版命令 route -n
如果发现没有默认路由,可手动添加:
# 添加默认网关,192.168.1.1为实际网关地址 ip route add default via 192.168.1.1
如果需要删除错误路由:
# 删除指定网段的路由 ip route del 192.168.2.0/24
4. DNS解析失败
表现为可以ping通IP地址,但无法访问域名,比如ping 8.8.8.8正常,但ping www.baidu.com失败。
首先检查DNS配置文件:
# 查看DNS配置 cat /etc/resolv.conf
如果文件内没有正确的DNS服务器,可手动添加:
# 编辑resolv.conf文件 echo "nameserver 8.8.8.8" >> /etc/resolv.conf echo "nameserver 114.114.114.114" >> /etc/resolv.conf
如果是使用NetworkManager管理网络,也可以通过nmcli命令修改DNS:
# 设置eth0的DNS为8.8.8.8和114.114.114.114 nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114" # 重启连接使配置生效 nmcli con down eth0 && nmcli con up eth0
5. 防火墙或SELinux拦截
防火墙规则配置不当会拦截正常的网络请求,表现为本地服务正常启动,但外部无法访问。
临时关闭防火墙测试是否为防火墙问题:
# 关闭firewalld防火墙 systemctl stop firewalld # 关闭iptables防火墙 service iptables stop
如果关闭后网络恢复正常,需要调整防火墙规则,开放对应端口:
# 开放80端口 firewall-cmd --add-port=80/tcp --permanent # 重新加载规则 firewall-cmd --reload
如果是SELinux导致的问题,可临时关闭测试:
# 临时关闭SELinux setenforce 0
网络故障通用排查流程
遇到网络问题时,可以按照以下步骤逐步排查:
- 检查网卡状态,确认网卡已启动且识别正常
- 检查IP和子网掩码配置,确认和所在网段匹配
- 检查路由表,确认有正确的默认路由
- 检查DNS配置,测试域名解析是否正常
- 检查防火墙和SELinux规则,确认没有拦截正常请求
- 测试到网关、公网IP、域名的连通性,定位故障节点
常用测试命令参考:
| 命令 | 作用 |
|---|---|
| ping 192.168.1.1 | 测试到网关的连通性 |
| ping 8.8.8.8 | 测试到公网IP的连通性 |
| nslookup www.baidu.com | 测试DNS解析是否正常 |
| netstat -tulnp | 查看当前监听的端口 |
| tcpdump -i eth0 | 抓包分析网络流量 |
通过以上方法,大部分常见的Linux网络故障都可以快速定位并解决,实际处理时可以根据故障现象选择对应的排查方向,逐步缩小问题范围。