V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asuraa
V2EX  ›  宽带症候群

杭州联通端口全被屏蔽

  •  
  •   asuraa · 259 天前 · 1623 次点击
    这是一个创建于 259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就剩25110端口 是开放的 ,其他从 1 到 65535 全都是封锁的

    我网上抄了个 golang 程序测试的

    package main
    
    import (
    	"flag"
    	"fmt"
    	"net"
    	"runtime"
    	"time"
    )
    
    // CheckIsOpen 检查端口是否打卡
    func CheckIsOpen(domain string, timeout time.Duration, portChan chan int, exitChan chan bool, openPort []int, rescan chan int) {
    	for {
    		port, ok := <-portChan
    		if !ok {
    			break
    		}
    		socket := fmt.Sprintf("%v:%v", domain, port)
    		_, err := net.DialTimeout("tcp", socket, timeout) //发起握手操作  有回应 说明打开了端口 并且做了延时 超过一定时间 直接说明未打开
    
    		defer func() {
    			recover()
    		}()
    
    		if err == nil {
    			rescan <- port
    			fmt.Println(socket, " 打开")
    			openPort = append(openPort, port)
    		} else {
    			//fmt.Println(socket, " 关闭")
    		}
    	}
    	exitChan <- true
    }
    func main() {
    	cores := runtime.NumCPU()
    	runtime.GOMAXPROCS(cores - 1)
    	domainP := flag.String("domain", "", "请输入指定的 IP 地址")
    	flag.Parse()
    	domain := *domainP
    
    	if domain == "" {
    		fmt.Println("请输入 IP 地址")
    		return
    	}
    	openPort := make([]int, 10)
    	exitChan := make(chan bool)
    	portChan := make(chan int)
    	resChan := make(chan int, 100)
    	go func() {
    		for i := 0; i < 65535; i++ {
    			portChan <- i
    		}
    		close(portChan) //及时关闭管道 使用 for 循环取出时才不会等待
    	}()
    	timeout := time.Millisecond * 200
    	for i := 0; i < 18; i++ {
    		go CheckIsOpen(domain, timeout, portChan, exitChan, openPort, resChan)
    	}
    	for i := 0; i < 18; i++ {
    		<-exitChan
    	}
    	close(exitChan)
    	close(resChan)
    	fmt.Println("开启的端口号:")
    	for {
    		port, res := <-resChan
    		if !res {
    			break
    		}
    		fmt.Println(port)
    	}
    }
    
    
    19 条回复    2023-09-08 23:04:54 +08:00
    ranaanna
        1
    ranaanna  
       259 天前
    奇怪的,最应该屏蔽的 25 和 110 反而是开的,说不通的
    lemon6
        2
    lemon6  
       259 天前
    我这里一切正常啊
    asuraa
        3
    asuraa  
    OP
       259 天前
    @ranaanna 我换了猫 但是这玩意跟猫应该没关系啊, 我用的爱快路由 然后端口转发到群晖 还设置了 dmz 完事扫描都是封禁的


    @lemon6 你也是杭州联通? 你是那个 fttr 的 1000m 么 我是 fttr 1000m 的然后自己换了光猫
    dude4
        4
    dude4  
       259 天前
    光猫拨号?有些光猫防火墙是 BUG 的,你懂
    szdosar
        5
    szdosar  
       258 天前
    我怀疑可能是由于线程并发导致的,
    当并发扫描大量端口时,
    某些端口的结果可能会被其他线程的输出所覆盖,
    或者由于某种原因被忽略。
    你试试把线程数降低点,
    比如 5 线程?
    szdosar
        6
    szdosar  
       258 天前
    另外,你的超时毫秒改成 400-500 毫秒看看?
    yinmin
        7
    yinmin  
       258 天前
    linux 测试 TCP 端口的指令:nc -vz -w 2 [ip] [port]
    asuraa
        8
    asuraa  
    OP
       258 天前
    @yinmin 这个我也搞了个脚本测试 也是全封 脚本如下:

    #!/bin/bash

    for port in {1..65535}; do
    echo -n "TCP $port: "
    result=$(nc "1.1.1.1" "$port" -w 1 -v 2>&1 < /dev/null)
    if [ "$?" -eq 0 ]; then
    echo "Open"
    echo "$port" >> success.txt
    continue
    fi
    if [[ "$result" == *refused* ]]; then
    echo "Closed"
    fi
    if [[ "$result" == *time* ]]; then
    echo "$port" >> block_list.txt
    echo "BLOCKED"
    fi
    done




    @dude4 不是光猫拨号 我是爱快软路由 pppoe 拨号 我换光猫是为了突破 1G 宽带上限 以前电信用的就是这个没啥问题啊
    ranaanna
        9
    ranaanna  
       258 天前
    1. 非公网 IP ?但是不能解释为什么 25 和 110 是开的

    2. 在内网测的?很多时候会出现这样的情况:内网的设备使用外部 IP 地址相互通信。这种情况被形象地叫做发夹网络( hairpinning )。通常路由器软件在做 port forwarding 的时候会考虑这种情况作相应的地址转换(叫做 NAT loopback, 或 NAT reflection, 或 harpin NAT )。也有可能爱快默认没有开启,或需要额外的配置?这也可解释为什么 25 和 110 是开的(因为是爱快开的,而其他端口因为是在内网用外部 ip 访问,但又没有 harping NAT ,所以都不通)
    asuraa
        10
    asuraa  
    OP
       258 天前
    @ranaanna pppoe 拨号的 ip 跟我 ip138 看到的是同一个 所以是公网 ip

    我昨天在外地 用外地的宽带测试的
    lemon6
        11
    lemon6  
       257 天前
    @luodaoyi #3 是的,杭州千兆联通+vsol 光猫,公网 ip+端口一切正常
    asuraa
        12
    asuraa  
    OP
       257 天前
    @lemon6 我是拱墅的你在哪里 我也是千兆联通 + vsol +公网 ip 端口全完蛋 难道是爱快的问题么
    ranaanna
        13
    ranaanna  
       256 天前
    @luodaoyi 思路对了,运营商没有道理给你公网 IP 同时又屏蔽所有其他端口同时又开放 25 和 110 。所以一定是你的爱快自己开了 25 和 110 ,或者 DMZ 到了开了 25 和 110 内网设备。如果是后者,记得需要把 port forwarding 到其他设备的端口排除在 DMZ 外,不然是不行的。不知道爱快又没有相应的设置选项
    asuraa
        14
    asuraa  
    OP
       256 天前
    @ranaanna 非常有可能 问题是我之前电信也是同一个爱快 都是正常的 奇了怪了
    AS58453
        15
    AS58453  
       256 天前
    不可能封闭所有端口,不然正常的上网都出不去了呀。普通的网络请求都是高位端口。
    ranaanna
        16
    ranaanna  
       256 天前
    @AS58453 这倒不会影响正常的上网,只是屏蔽所有 inbound 连接而已,并不是不能建立连接
    asuraa
        17
    asuraa  
    OP
       256 天前
    @ranaanna 是的 屏蔽 inbound 不影响上网 就是无法对外提供服务
    nightcc
        18
    nightcc  
       256 天前 via Android
    很奇怪

    首先怀疑是路由的问题,可以检查一下端口转发是否正常(比如把 wan 连到另一个路由上从外部扫描),或者直接用路由监听某个端口

    其次怀疑扫描的问题,是不是扫的频率太高才被防火墙拦的(运营商的防火墙,或者自己路由的防火墙),可以单独扫几个端口试试,再试试用 nmap 扫,它可以区分 closed 和 filtered ,因为一般防火墙拒绝后会回 icmp 包
    asuraa
        19
    asuraa  
    OP
       256 天前
    @nightcc 我打算周末有空就把爱快撤了直接上硬路由 然后再观察观察情况
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5188 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:57 · PVG 10:57 · LAX 19:57 · JFK 22:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.