让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案能帮助您,请采纳,非常感谢!
.
每日一句正能量,让它带给您好心情:生活的意义,在于不断探索、不断成长、不断成为更好的自己。
.
根据您描述的问题,这是一个典型的网络连接异常情况。SSH能连接但网页无法访问,DNS能解析但HTTP请求无响应,这表明系统在运行一段时间后出现了网络层面的故障。
问题分析
从您的测试结果可以看出:
- DNS解析正常(能ping通1.1.1.1)
- SSH连接正常(22端口工作)
- 但HTTP/HTTPS流量被阻断
- 直接IP访问也失败
可能的原因和解决方案
1. 防火墙规则问题
检查macOS的防火墙设置:
# 查看防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
# 查看所有规则
sudo pfctl -s rules 2>/dev/null
# 重置防火墙(谨慎使用)
sudo pfctl -f /etc/pf.conf
2. 网络服务缓存问题
尝试重置网络服务:
# 刷新DNS缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# 重置网络接口
sudo ifconfig en0 down
sudo ifconfig en0 up
3. Cloudflare Tunnel配置检查
检查Cloudflare Tunnel状态和配置:
# 查看cloudflared进程状态
ps aux | grep cloudflared
# 检查tunnel日志
sudo journalctl -u cloudflared.service -f
# 或者直接查看cloudflared日志
cloudflared tunnel list
4. 系统网络诊断
使用网络诊断工具:
# 检查路由表
netstat -rn
# 检查所有网络连接
lsof -i -P | grep -i "established"
# 检查是否有进程占用80/443端口
sudo lsof -i :80
sudo lsof -i :443
5. 创建自动监控脚本
创建一个监控脚本,在发现问题时自动重启网络服务:
#!/bin/bash
# network_monitor.sh
CHECK_URL="http://www.baidu.com"
MAX_RETRIES=3
check_network() {
for i in $(seq 1 $MAX_RETRIES); do
if curl -s --connect-timeout 10 $CHECK_URL > /dev/null; then
echo "$(date): Network is OK"
return 0
fi
sleep 5
done
echo "$(date): Network connection failed"
return 1
}
if ! check_network; then
echo "$(date): Attempting to fix network..."
# 刷新DNS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# 重启cloudflared服务
brew services restart cloudflared 2>/dev/null || \
sudo systemctl restart cloudflared 2>/dev/null || \
pkill cloudflared
sleep 10
# 如果还是失败,重启网络接口
if ! check_network; then
echo "$(date): Restarting network interface..."
sudo ifconfig en0 down
sleep 2
sudo ifconfig en0 up
fi
fi
设置定时任务(每5分钟检查一次):
crontab -e
# 添加以下行
*/5 * * * * /path/to/network_monitor.sh >> /var/log/network_monitor.log 2>&1
6. 系统级解决方案
如果问题持续出现,考虑以下系统级方案:
# 重置所有网络设置(这会清除所有网络配置)
sudo rm /Library/Preferences/SystemConfiguration/*
sudo reboot
注意:执行此命令前请备份重要的网络配置
建议的排查步骤
- 首先检查系统日志:
log show --predicate 'process == "networkd"' --last 1h
- 检查内核扩展:
kextstat | grep -v com.apple
- 监控网络流量:
sudo tcpdump -i any -n host 1.1.1.1
建议从简单的DNS刷新和防火墙检查开始,逐步深入到系统级调试。如果问题仍然存在,可能需要检查是否有第三方安全软件或网络工具干扰了网络连接。