如何测试到IP地址和特定端口的出站连接?

如何测试到IP地址和特定端口的出站连接?,ip,Ip,好的,我们都知道如何使用PING测试与IP地址的连接。我需要做的是类似的事情,但测试我对给定IP地址和指定端口(在本例中为1775)的出站请求是否成功。最好从命令提示符下执行测试。如果您正在测试TCP/IP,测试远程addr/端口的一种廉价方法是telnet连接到它并查看它是否连接。对于HTTP(端口80)等协议,您甚至可以键入HTTP命令并获取HTTP响应 乙二醇 如果目标IP/端口上正在运行服务器,则可以使用Telnet。除了“无法连接”之外的任何响应都表明您能够连接。这里是我制作的一个小站

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

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

乙二醇


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

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


为了自动化很棒的服务portquick.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
NB_连接=10
端口启动=1
端口端=1000
对于((i=$PORT\u START;i/dev/null&&echo“>$j”)&
完成
等待
完成

用于测试端口序列的@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中,因此如果运行多次,您可能希望首先删除该文件。

我发现的最快/最有效的方法是使用nmap和portquick.net,如下所述:这将扫描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秒):


哦,请接受一些你尚未回答的问题的答案。telnet{IP}{PORT}在ubuntu/Mac中,这很有趣,但它不是一个长期的解决方案,对吗?虽然我猜它的代码编写非常简单。@Shurane是的,它很简单:它使用iptables将所有tcp端口重定向到80。当然,这取决于我的服务器是否可用,但我计划长期保持它。我也在寻找一个解决方案简单易用的域名注册。如果你有任何想法,请随时告诉我。谢谢。我为该服务订购了一个域名,这样就更容易键入:portquick.net端口25可以使用吗?我需要知道我的ISP是否阻止到P25的传出连接。太棒了,但遗憾的是它不支持端口22和25。请纠正我如果我错了,但是PortQuike端口445似乎没有从外部打开(我遵循了链接)。我应该使用什么公共外部服务来测试我是否可以连接到Internet上的端口445?
for p in $(seq 1 65535); do curl -s --connect-timeout 1 portquiz.net:$p >> ports.txt; done
# 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
# nmap -Pn -p1-65535 portquiz.net