系统日志:
/var/log/syslog
(Ubuntu/Debian)/var/log/messages
(RHEL/CentOS)网络服务日志:
/var/log/nginx/error.log
(Nginx)/var/log/apache2/error.log
(Apache)/var/log/mysql/error.log
(MySQL)防火墙日志:
/var/log/ufw.log
(UFW)/var/log/firewalld
(Firewalld)/var/log/iptables.log
(iptables)DNS解析日志:
/var/log/named.log
(BIND)/var/log/resolvconf.log
日志特征:
connect() timed out
Connection timed out
排查步骤:
1. 检查目标服务是否运行:systemctl status <service>
2. 检查网络连通性:ping <目标IP>
3. 检查端口是否开放:telnet <目标IP> <端口>
或 nc -zv <目标IP> <端口>
4. 检查防火墙规则:iptables -L -n
或 firewall-cmd --list-all
日志特征:
Connection refused
排查步骤:
1. 确认目标服务是否监听正确端口:ss -tulnp
或 netstat -tulnp
2. 检查服务配置文件中绑定的IP地址
3. 检查SELinux状态:getenforce
和 /var/log/audit/audit.log
日志特征:
Name or service not known
Temporary failure in name resolution
排查步骤:
1. 检查DNS配置:cat /etc/resolv.conf
2. 测试DNS解析:dig example.com
或 nslookup example.com
3. 检查DNS服务器连通性:ping 8.8.8.8
(Google DNS)
日志特征:
Network is unreachable
No route to host
排查步骤:
1. 检查路由表:ip route
或 route -n
2. 检查网络接口状态:ip addr
或 ifconfig
3. 检查网关连通性:ping <网关IP>
tcpdump - 抓包分析:
tcpdump -i eth0 -nn port 80 -w capture.pcap
wireshark/tshark - 图形化/命令行抓包分析
mtr - 结合ping和traceroute:
mtr -rw <目标IP或域名>
ss/netstat - 查看网络连接状态:
ss -tulnp
netstat -tulnp
nmap - 端口扫描:
nmap -sT -p 1-1024 <目标IP>
防火墙问题:
# 临时开放端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 永久规则(Ubuntu)
ufw allow 80/tcp
# 永久规则(RHEL)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
SELinux问题:
# 检查SELinux日志
grep "denied" /var/log/audit/audit.log | audit2why
# 临时设置
setenforce 0
# 永久设置(不推荐)
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
网络配置问题:
# 检查网络配置
cat /etc/network/interfaces
cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 重启网络服务
systemctl restart networking # Debian/Ubuntu
systemctl restart network # RHEL/CentOS
DNS问题:
# 临时修改DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# 永久修改(根据发行版不同)
# 编辑/etc/resolv.conf或/etc/netplan/*.yaml等配置文件
通过系统日志分析结合这些工具和命令,可以有效地诊断和解决大多数Linux系统中的网络连接问题。