现如今云服务器已经是大势所趋,国内比较著名的云服务器厂商有阿里、腾讯,国外有aws,尽管有的公司目前为止还是使用的物理机,但是无论你是使用的云服务器还是物理机,在运行服务时都必不可少的需要监听到指定的端口,而且已经有很多的服务需要监听的端口需要可以通过公网访问,如果想要保证服务正常必须确定端口可以正常访问,例如nginx服务呦,默认的80端口如果在安全组没有开通的话,是一定不能访问的呦。

 

  接下来,我们就来学习下都有那些命令可以用来确定服务器的端口是否已经成功开通吧。

一、nc命令

  nc命令也经常被用于代替nmap进行端口扫描,当然这只是nc命令功能的冰山一角。

(1)、使用nc命令检查指定服务器的指定端口是否被监听

nginx可以做到所有端口拦截吗 nginx支持端口检测_nginx可以做到所有端口拦截吗

选项:

-w:超时秒数设置等待连接的时间

-z:使用0输入/输出模式,只在扫描通讯端口时使用

-v:显示指令执行过程

以上测试结果为,已经被监听的80端口使用nc测试后返回succeeded,而未被监听的端口81返回failed

 

如果要扫描一个范围内的端口,语法如下:

nginx可以做到所有端口拦截吗 nginx支持端口检测_客户端_02

 

(2)、测试指定端口是否可以正常通讯

  更多时候我们都不是为了测试一个端口是否已经被监听,这大多是黑客要做的事情,我们更多的关心的是一个端口是否正常通讯,例如我们公司使用的音视频服务,音视频服务只要包含两项服务,一项用于拨通音视频另一项用于打通端口隧道,让使用音视频服务的客户可以直接连接,采用这种方式的好处是用户之间可以更快的连接因为不必通过服务器进行转发,不会影响用户体验,这就要求我们在部署音视频服务之前先检查指定端口是否可用,用到的方法如下:

服务器端:

nc -l port

客户端:

nc ip port

  服务器端使用nc命令监听在1234端口上,客户端同样使用nc命令向服务器端发送数据,查看服务器端有没有正常接收到数据。

示例:

客户端

nginx可以做到所有端口拦截吗 nginx支持端口检测_nginx可以做到所有端口拦截吗_03

服务端

nginx可以做到所有端口拦截吗 nginx支持端口检测_nginx可以做到所有端口拦截吗_04

注释:公网ip不方便透露呦。这样我们就已经接收到了来自客户端的数据信息,那么如何监听在udp相应端口呢?下面就来介绍下哈

nc命令默认情况下是检测/监听tcp协议的,如果我们需要处理udp协议的话,请按照以下操作:

服务器端:

nc -u -l port

客户端:

nc -u ip port

示例:

客户端

nginx可以做到所有端口拦截吗 nginx支持端口检测_操作系统_05

服务端

nginx可以做到所有端口拦截吗 nginx支持端口检测_网络_06

选项

-l:类似于长连接,一直监听在指定port不会断开,可以发送数据信息

-u:指定使用udp协议,nc命令默认情况下是使用tcp协议的

 

加量环节:

能够实现此功能的其他命令介绍

  当然能够实现上述功能的不光只有nc命令了,我们也可以使用tcpdump命令,下面介绍下tcpdump抓包命令的冰山一角。

服务器端:

tcpdump port 1234

客户端:

nc -u ip port 

示例:

客户端

nginx可以做到所有端口拦截吗 nginx支持端口检测_网络_07

服务端

nginx可以做到所有端口拦截吗 nginx支持端口检测_运维_08

不好意思呦,公司的公网ip也不方便透露呦,没错使用tcpdump抓包时会抓取到发送信息到服务器的公网ip地址呦,不过其实这个地址没有服务器的公网ip地址重要。

(3)、使用nc命令进行文件传输

  刚知道这个命令的时候我也吓一跳,没想到这个命令可以这么强大,真的是以后遇到文本文件剩的用scp命令了,接下来就来见识下吧。

客户端:

nc ip port > test.txt

服务端:

cat test.txt | nc ip port

注意哟,我们是要将本地文件上传至服务器呦。

nginx可以做到所有端口拦截吗 nginx支持端口检测_nginx可以做到所有端口拦截吗_09

我这里就在本地随便找几行数据了,上述所有操作都是先执行服务器端操作,然后执行客户端操作

服务器端

nginx可以做到所有端口拦截吗 nginx支持端口检测_客户端_10

要先创建空文件,在执行客户端操作

 

nginx可以做到所有端口拦截吗 nginx支持端口检测_客户端_11

 

 

这个命令有点妙,客户端执行完成后,服务端自动结束nc命令。快去看看服务器端的文件吧。

 

 

nginx可以做到所有端口拦截吗 nginx支持端口检测_网络_12

 

出现了,这就是我们想要的。而且有一个现象就是,执行此命令是当客户端断开或执行完成后,服务端也会立即退出,如果不需要退出的话,需要以下参数哦。

选项

-k:控制服务器端不会因为客户端的退出而退出

-n:指定使用ip地址