症状:无法ping通任何地址,ifconfig显示接口未分配IP
解决方案:
# 检查接口状态
ip link show
# 激活接口
sudo ip link set eth0 up
# 分配IP地址(临时)
sudo ip addr add 192.168.1.100/24 dev eth0
# 使用DHCP获取IP
sudo dhclient eth0
症状:可以ping通IP但无法解析域名
解决方案:
# 检查DNS配置
cat /etc/resolv.conf
# 测试DNS解析
nslookup example.com
dig example.com
# 临时修改DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 永久修改DNS(Ubuntu/Debian)
sudo nano /etc/netplan/*.yaml
# 添加nameservers部分
症状:可以访问本地网络但无法访问外部网络
解决方案:
# 查看路由表
ip route show
route -n
# 添加默认网关
sudo ip route add default via 192.168.1.1
# 检查网络连通性
traceroute 8.8.8.8
mtr 8.8.8.8
症状:特定端口无法访问
解决方案:
# 查看iptables规则
sudo iptables -L -n -v
# 临时允许端口(如80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 保存iptables规则(Ubuntu)
sudo netfilter-persistent save
# firewalld系统(CentOS/RHEL)
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
症状:无法通过SSH连接服务器
解决方案:
# 检查SSH服务状态
sudo systemctl status sshd
# 重启SSH服务
sudo systemctl restart sshd
# 检查监听端口
ss -tulnp | grep ssh
netstat -tulnp | grep ssh
# 检查防火墙规则
sudo ufw status # Ubuntu
sudo tcpdump -i eth0 -n
sudo tshark -i eth0
ss -s # 替代netstat
ip -s link # 接口统计
nc -zv example.com 80 # TCP连接测试
ping6 example.com # IPv6测试
nmcli device show # NetworkManager信息
nmcli connection show --active
# 查看系统日志
sudo journalctl -xe # systemd系统
sudo tail -f /var/log/syslog # Debian/Ubuntu
sudo tail -f /var/log/messages # RHEL/CentOS
# 特定服务日志
sudo journalctl -u network.service
sudo journalctl -u NetworkManager.service
通过以上方法,可以诊断和解决大多数Linux网络连接问题。对于复杂问题,可能需要结合多种工具进行综合分析。