- A+
这两天网络又不是很好,发现之前用的好好的国外 vps 忽然抽风了,代理(酸、酸)死活连接不上。使用 ping 工具 ping 了下 vps 的 ip,ip 好好的,可以正常 ping 通,接着使用 ssh 工具 xshell 远程连接 vps (使用的是 22 端口) 也可以正常登录,看来大概率是端口被封锁了。如果是端口被封锁了,那么更换其他端口即可。
那么有什么办法可以快速的验证 vps 的某个端口是否被封锁?方法蛮多的,下面总结下几个常用的方法。
方法一:使用在线工具进行检查
首先使用国内站长工具端口扫描检查下 vps 的端口是否可以正常访问,工具地址:http://tool.chinaz.com/port/
访问后,输入你的 ip 和要检查的端口即可如下:
如果提示关闭,说明在国内无法正常访问该 vps 的端口。
紧接着用国外端口扫描工具 https://www.yougetsignal.com/tools/open-ports/ ,重新检查下你的 ip 和 端口:
如果提示 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 命令窗口:
然后使用命令 tcping 下端口即可,如下:
如果 ping 不通,那么再使用上面的国外端口扫描工具
https://www.yougetsignal.com/tools/open-ports/
重新 ping 下,如果国内不通,国外通,那么就是你的端口被封锁了。
方法三:使用 PHP 代码的方法
上面那两种方法基本够用了,如果你感兴趣,那么有可以使用代码的方法进行检测,下面直接附上 php 代码
- <?php
- $host = 'www.baidu.com'; //要ping的地址,也可以是IP
- $port = '80'; //要ping的端口
- $num = 3;
- function microtime_float()
- {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
- function ping($host,$port)
- {
- $time_start = microtime_float();
- $ip = gethostbyname($host);
- $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
- if(!$fp) return 'replay time out!';
- $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
- @fputs($fp,$get);
- @fclose($fp);
- $time_end = microtime_float();
- $time = $time_end - $time_start;
- $time = ceil($time * 1000);
- return 'Reply from '.$ip.': time='.$time.'ms<br />';
- }
- echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data:<br /><br />'."\r\n";
- for($i = 0;$i < $num;$i++)
- {
- echo ping($host,$port);
- sleep(1);
- }
如果没报超时,则说明 vps 对应的端口可以正常访问。
综上,总结了几个比较常用的方法,你可以根据个人喜欢选择某一个方法进行检测即可。上面的方法除了检测某些代理的端口,比如酸酸(ss)是否被封锁外,同样可以检测某个 vps 的某个端口是否正常开放,还是蛮方便的。