问题表现:无法访问任何网络资源,ping不通网关或外部地址
解决方法:
# 1. 检查物理连接
ip link show # 查看网卡状态(是否UP)
dmesg | grep eth # 查看网卡驱动是否加载
# 2. 检查IP配置
ip addr show # 或 ifconfig(较老系统)
# 3. 检查默认网关
ip route show # 或 route -n
# 4. 检查DNS配置
cat /etc/resolv.conf
# 5. 测试网络连通性
ping -c 4 8.8.8.8 # 测试基础连通性
ping -c 4 your_gateway_ip # 测试局域网连通性
问题表现:可以ping通IP但无法解析域名
解决方法:
# 1. 检查DNS配置
cat /etc/resolv.conf
# 2. 测试DNS解析
nslookup example.com
dig example.com
host example.com
# 3. 临时修改DNS(重启后失效)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 4. 永久修改DNS(根据发行版不同)
# Ubuntu/Debian: 修改/etc/netplan/*.yaml 或 /etc/network/interfaces
# CentOS/RHEL: 修改/etc/sysconfig/network-scripts/ifcfg-eth0
问题表现:无法通过SSH连接到Linux服务器
解决方法:
# 1. 检查SSH服务状态
sudo systemctl status sshd # Ubuntu/Debian
sudo systemctl status ssh # CentOS/RHEL
# 2. 检查防火墙设置
sudo iptables -L # 查看防火墙规则
sudo ufw status # Ubuntu防火墙状态
# 3. 检查SSH端口是否监听
sudo netstat -tulnp | grep ssh
ss -tulnp | grep ssh
# 4. 检查SELinux状态(如果启用)
getenforce
sudo setenforce 0 # 临时禁用测试
问题表现:网络连接时断时续或速度明显低于预期
解决方法:
# 1. 测试网络质量
ping -c 100 your_gateway_ip # 检查丢包率
mtr -n 8.8.8.8 # 可视化路由跟踪
# 2. 检查带宽使用情况
iftop -i eth0 # 需要安装iftop
nload eth0 # 需要安装nload
# 3. 检查网络队列
tc -s qdisc show dev eth0
# 4. 检查MTU设置
ip link show eth0 | grep mtu
ping -M do -s 1472 8.8.8.8 # 测试MTU(1472+28=1500)
问题表现:特定服务无法访问,但服务本身运行正常
解决方法:
# 1. 检查iptables规则
sudo iptables -L -n -v
# 2. 临时开放端口(例如80端口)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 3. 保存iptables规则(根据发行版不同)
sudo iptables-save > /etc/iptables.rules # 然后配置加载规则
# 4. 对于firewalld(CentOS/RHEL)
sudo firewall-cmd --list-all
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
问题表现:可以访问某些网络但无法访问其他网络
解决方法:
# 1. 查看路由表
ip route show
route -n
# 2. 添加临时路由
sudo ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0
# 3. 永久添加路由(根据发行版不同)
# Ubuntu/Debian: 编辑/etc/network/interfaces
# CentOS/RHEL: 编辑/etc/sysconfig/network-scripts/route-eth0
# 4. 检查策略路由
ip rule list
问题表现:网卡无法获取IP或无法正常工作
解决方法:
# 1. 重启网络服务
sudo systemctl restart networking # Ubuntu/Debian
sudo systemctl restart network # CentOS/RHEL
# 2. 手动配置IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip link set eth0 up
# 3. 使用DHCP获取IP
sudo dhclient eth0
# 4. 检查网络管理器状态(如果使用)
sudo systemctl status NetworkManager
问题表现:容器或虚拟网络环境中的网络问题
解决方法:
# 1. 检查网络命名空间
ip netns list
# 2. 在特定命名空间中执行命令
ip netns exec namespace_name ip addr show
# 3. 检查veth对
ip link show type veth
# 4. 检查网桥配置
brctl show # 需要安装bridge-utils
# 数据包捕获
sudo tcpdump -i eth0 -w capture.pcap
sudo tshark -i eth0 # 需要安装wireshark
# 网络性能测试
iperf3 -s # 服务器端
iperf3 -c server_ip # 客户端
# 连接追踪
ss -tulnp # 查看所有连接
lsof -i # 查看进程使用的网络连接
# 系统日志检查
journalctl -u network.service --no-pager -n 50 # systemd系统
dmesg | grep eth0 # 检查内核日志
/etc/network/interfaces
(Debian/Ubuntu网络配置)/etc/sysconfig/network-scripts/ifcfg-eth0
(RHEL/CentOS网络配置)/etc/netplan/*.yaml
(Ubuntu 18.04+网络配置)/etc/resolv.conf
(DNS配置)/etc/hosts
(本地主机名解析)/etc/nsswitch.conf
(名称服务切换配置)/etc/iptables/rules.v4
(iptables规则保存位置)通过以上方法和工具,可以诊断和解决Linux系统中的大多数常见网络问题。