【问题标题】:How can I test an outbound connection to an IP address as well as a specific port?如何测试到 IP 地址和特定端口的出站连接?
【发布时间】:2011-08-29 02:33:59
【问题描述】:

好的,我们都知道如何使用 PING 来测试与 IP 地址的连接性。我需要做的是类似的事情,但测试我对给定 IP 地址和特定端口(在本例中为 1775)的出站请求是否成功。最好从命令提示符执行测试。

【问题讨论】:

  • 哦,请接受您未解决的问题的一些答案。
  • 在 ubuntu/mac 中远程登录 {IP} {PORT}

标签: ip


【解决方案1】:

这是我制作的一个小站点,允许测试任何传出端口。服务器侦听所有可用的 TCP 端口。

http://portquiz.net

telnet portquiz.net XXXX

【讨论】:

  • 这很有趣,但这不是一个长期的解决方案,对吧?虽然我猜它的代码编写起来非常简单。
  • @Shurane 是的,这很简单:它使用 iptables 将所有 tcp 端口重定向到 80。当然这取决于我的服务器是否可用,但我打算长期保持这种状态。我也在寻找一个简单易于键入的域名来注册。如果您有任何想法,请随时告诉我。
  • 谢谢。我为该服务订购了一个域,这样输入起来更容易:portquiz.net
  • 这是否适用于端口 25?我需要确定我的 ISP 是否阻止了到 P25 的传出连接。
  • 很棒,但遗憾的是它不支持端口 22 和 25。
【解决方案2】:

如果目标 IP/端口上有服务器运行,您可以使用 Telnet。除了“无法连接”之外的任何响应都表明您能够连接。

【讨论】:

    【解决方案3】:

    为了自动化令人敬畏的服务 portquiz.net,我确实编写了一个 bash 脚本:

    NB_CONNECTION=10
    PORT_START=1
    PORT_END=1000
    
    for (( i=$PORT_START; i<=$PORT_END; i=i+NB_CONNECTION ))
    do
        iEnd=$((i + NB_CONNECTION))
        for (( j=$i; j<$iEnd; j++ ))
        do
            #(curl --connect-timeout 1 "portquiz.net:$j" &> /dev/null && echo "> $j") &
            (nc -w 1 -z portquiz.net "$j" &> /dev/null && echo "> $j") &
        done
        wait
    done
    

    【讨论】:

      【解决方案4】:

      如果您正在测试 TCP/IP,测试远程地址/端口的一种廉价方法是远程登录到它并查看它是否连接。对于 HTTP(端口 80)等协议,您甚至可以键入 HTTP 命令并获取 HTTP 响应。

      例如

      Command IP          Port
      Telnet  192.168.1.1 80
      

      【讨论】:

        【解决方案5】:

        我发现最快/最有效的方法是使用这里描述的 nmap 和 portquiz.net:http://thomasmullaly.com/2013/04/13/outgoing-port-tester/ 这会扫描到前 1000 个最常用的端口:

        # nmap -Pn --top-ports 1000 portquiz.net
        
        Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-02 22:28 CDT
        Nmap scan report for portquiz.net (178.33.250.62)
        Host is up (0.072s latency).
        rDNS record for 178.33.250.62: electron.positon.org
        Not shown: 996 closed ports
        PORT     STATE SERVICE
        53/tcp   open  domain
        80/tcp   open  http
        443/tcp  open  https
        8080/tcp open  http-proxy
        
        Nmap done: 1 IP address (1 host up) scanned in 4.78 seconds
        

        全部扫描(耗时 6 秒而不是 5 秒):

        # nmap -Pn -p1-65535 portquiz.net
        

        【讨论】:

        • 如果我错了,请纠正我,但 portquiz 端口 445 似乎没有从外部打开(我点击了链接)。我应该使用什么公共外部服务来测试我可以连接到 Internet 上的 445 端口?
        【解决方案6】:

        @benjarobin 用于测试端口序列的 bash 脚本示例对我不起作用,因此我创建了这个最小的非单行(命令行)示例,该示例从序列中写入开放端口的输出1-65535(所有适用的通信端口)到本地文件并禁止所有其他输出:

        for p in $(seq 1 65535); do curl -s --connect-timeout 1 portquiz.net:$p >> ports.txt; done
        

        不幸的是,这需要 18.2 小时才能运行,因为我的旧版本 curl 允许的最小连接超时整数秒数是 1。如果您的 curl 版本 >=7.32.0(输入“curl -V”) ,您可以尝试更小的十进制值,具体取决于您连接到服务的速度。或者尝试更小的端口范围以最小化持续时间。

        此外,它会附加到输出文件 ports.txt,因此如果多次运行,您可能需要先删除该文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-11
          • 1970-01-01
          • 2018-08-07
          • 2019-11-20
          • 1970-01-01
          • 1970-01-01
          • 2010-11-17
          • 1970-01-01
          相关资源
          最近更新 更多