查看 vps 端口是否开放 (被封) 的几个方法

  • A+
所属分类:网络加速

这两天网络又不是很好,发现之前用的好好的国外 vps 忽然抽风了,代理(酸、酸)死活连接不上。使用 ping 工具 ping 了下 vps 的 ip,ip 好好的,可以正常 ping 通,接着使用 ssh 工具 xshell 远程连接 vps (使用的是 22 端口) 也可以正常登录,看来大概率是端口被封锁了。如果是端口被封锁了,那么更换其他端口即可。

那么有什么办法可以快速的验证 vps 的某个端口是否被封锁?方法蛮多的,下面总结下几个常用的方法。

方法一:使用在线工具进行检查

首先使用国内站长工具端口扫描检查下 vps 的端口是否可以正常访问,工具地址:http://tool.chinaz.com/port/

访问后,输入你的 ip 和要检查的端口即可如下:

查看 vps 端口是否开放 (被封) 的几个方法

如果提示关闭,说明在国内无法正常访问该 vps 的端口。

紧接着用国外端口扫描工具 https://www.yougetsignal.com/tools/open-ports/ ,重新检查下你的 ip 和 端口:

查看 vps 端口是否开放 (被封) 的几个方法

如果提示 open ,则说明在国外可以正常访问你 vps 对应的端口。所以,如果国内检测无法访问,国外检测可以正常访问,那么这就说明你的端口被防火墙封锁了。

如果检测的结果是国内、国外都无法正常访问,那么应该是你 vps 出了问题,比如程序死了等,好好检查你的 vps 即可。

方法二:使用 tcping 工具

tcping 工具官网下载地址:https://elifulkerson.com/projects/tcping.php

这是 windows 下的一款检测工具,大小就两三百K,分为 32 和 64 位(tcping.exe 或者 tcping64.exe)。根据你自己的需要,下载对应的版本即可。

下载完后把 .exe 文件拷贝到 C:\Windows\System32 这个目录下。拷贝完后 win+R 快捷键后输入 cmd ,打开 dos 命令窗口:

查看 vps 端口是否开放 (被封) 的几个方法

然后使用命令 tcping 下端口即可,如下:

查看 vps 端口是否开放 (被封) 的几个方法

如果 ping 不通,那么再使用上面的国外端口扫描工具

https://www.yougetsignal.com/tools/open-ports/

重新 ping 下,如果国内不通,国外通,那么就是你的端口被封锁了。

方法三:使用 PHP 代码的方法

上面那两种方法基本够用了,如果你感兴趣,那么有可以使用代码的方法进行检测,下面直接附上 php 代码

  1. <?php
  2.     $host = 'www.baidu.com'; //要ping的地址,也可以是IP
  3.     $port = '80'; //要ping的端口
  4.     $num  = 3;
  5.     function microtime_float()
  6.     {
  7.         list($usec, $sec) = explode(" ", microtime());
  8.         return ((float)$usec + (float)$sec);
  9.     }
  10.     function ping($host,$port)
  11.     {
  12.          $time_start = microtime_float();
  13.          $ip = gethostbyname($host);
  14.          $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
  15.          if(!$fp) return 'replay time out!';
  16.          $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
  17.          @fputs($fp,$get);
  18.          @fclose($fp);
  19.          $time_end = microtime_float();
  20.          $time = $time_end - $time_start;
  21.          $time = ceil($time * 1000);
  22.          return 'Reply from '.$ip.': time='.$time.'ms<br />';
  23.     }
  24.     echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data:<br /><br />'."\r\n";
  25.     for($i = 0;$i < $num;$i++)
  26.     {
  27.           echo ping($host,$port);
  28.           sleep(1);
  29.     }

如果没报超时,则说明 vps 对应的端口可以正常访问。

综上,总结了几个比较常用的方法,你可以根据个人喜欢选择某一个方法进行检测即可。上面的方法除了检测某些代理的端口,比如酸酸(ss)是否被封锁外,同样可以检测某个 vps 的某个端口是否正常开放,还是蛮方便的。

图片引用自网络