X

失联的nas

2022/2/25

从昨天下午开始 发现惠州那边新家的nas访问不到

最开始是想架设个新的web文件管理系统 然后发现网页打不开

于是打开手机 访问家里的监控摄像头 发现可以正常链接其它联网的家电也都在线 所以排除家里断网

登录qnapcloud 查看信息 可以看到ddns有更新ip 但是访问不了 所以推测:

  1. DDNS寄了
  2. NAS寄了
  3. Virtualization Station寄了
  4. VM里的ubuntu寄了
  5. 公网段被回收了

如果DDNS寄了 那我只要找到IP就可以了 如果该ip上有我的应用 那就是我的nas了

于是golang撸了个访问网址的程序

func sendRequest(rmt string) {
    req, _ := http.NewRequest("GET", "https://"+rmt+":x", nil)
    req.Host="https://x.xxx.xxx:x"
    _, err := http.DefaultClient.Do(req)
    if err == nil {
        fmt.Println(rmt, "ok")
    } else {
        fmt.Printf("%v\n", err)
    }
}

goroutine 走起 这点小并发毛毛雨

for i := 1; i < 255; i++ {
    go sendRequest("xxx.xxx.xxx." + strconv.Itoa(i))
}

结果没有可访问的 对比今天昨天ddns ip是有变化的 所以nas在工作 ip网段也是公网网段

所以3,4可能性比较高 要么Ubuntu出问题 要么虚拟机出问题

然后我假定ddns正常工作 扫一下端口:

func scan(host string, start, end int) {
    ch := make(chan int, 100)
    opens := make([]int, 0)
    for port := start; port <= end; port++ {
        pt := port
        p := net.JoinHostPort(host, strconv.Itoa(port))
        ch <- port
        go func() {
            timeout := time.Second
            conn, err := net.DialTimeout("tcp", p, timeout)
            if err != nil {
                fmt.Println(err)
            }
            if conn != nil {
                defer conn.Close()
                opens = append(opens, pt)
                fmt.Println("Opened", p)
            }
            <-ch
        }()
    }
    fmt.Printf("opend ports: %v\n", opens)
}

发现只有1723端口是开的 查阅了一下 这是个vpn端口 莫非是路由器vpn没有关闭? 我印象里家里路由确实有建立vpn账号测试vpn功能 但那是猴年马月的事情了...

开始痛苦记忆账号

打开电脑 添加vpn 链接... 连不上

其实威联通和家里路由都是有远程功能的 但是出于安全 我都关掉了

不必要的端口转发我都没有打开

防贼防到自己头上了 好桑心 像钥匙掉家里的感觉

祸不单行的是 我的小车在维保中 然后4s遇到疫情 我没法去取车 所以 去新家也去不了了(疫情期间的公共交通应该没有跨区域)

看样子只能等待春暖花开时候再回去一趟

日子顿时多了几分寂寞

Commit