liwy2019 2025-11-17 10:26 采纳率: 0%
浏览 4

关于Macmini启动成功一段时间后,会突然出现ssh正常但cloudfare服务无法启动的问题,研究发现macmini这时候浏览器里面也无法上网!(相关搜索:服务器)

Macmini做后端,DNS能ping通,但网页请求无响应
我自己把Macmini做成一个后端服务器,用zerotier穿透到公网方便远程vscode ssh。同时用cloudflare隧道把ip映射到我的域名上方便所有用户连接。但是Macmini启动成功一段时间后,会突然出现ssh正常但cloudflare服务无法启动的问题,研究发现macmini这时候浏览器里面也无法上网,但是ssh能连接。
命令行中DNS能ping通:
ping -c 4 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=253 time=7.855 ms
64 bytes from 1.1.1.1: icmp_seq=1 ttl=253 time=7.147 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=253 time=115.563 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=253 time=7.413 ms
--- 1.1.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.147/34.495/115.563/46.806 ms
但是网页不论ip和域名都ping不通:
ping -c 4 http://www.baidu.com/
ping: cannot resolve http://www.baidu.com/: Unknown host

ping -c 4 119.75.217.109
PING 119.75.217.109 (119.75.217.109): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
--- 119.75.217.109 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

  • 写回答

1条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-11-17 11:03
    关注

    让【宝码香车】来帮您解答,本回答参考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
    

    注意:执行此命令前请备份重要的网络配置

    建议的排查步骤

    1. 首先检查系统日志
      log show --predicate 'process == "networkd"' --last 1h
    
    1. 检查内核扩展
      kextstat | grep -v com.apple
    
    1. 监控网络流量
      sudo tcpdump -i any -n host 1.1.1.1
    

    建议从简单的DNS刷新和防火墙检查开始,逐步深入到系统级调试。如果问题仍然存在,可能需要检查是否有第三方安全软件或网络工具干扰了网络连接。

    评论

报告相同问题?

问题事件

  • 修改了问题 11月17日
  • 创建了问题 11月17日