5

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

Posted by 撒得一地 on 2019年9月19日 in PHP笔记, 杂谈

这两天网络又不是很好,发现之前用的好好的国外 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 命令窗口:

打开cmd

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

使用 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 的某个端口是否正常开放,还是蛮方便的。

上一篇:

下一篇:

相关推荐

5 Comments

Comments are closed. Would you like to contact the author directly?
网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.