最近,有部分使用Linux系统新手用户经常问到,服务器的某某端口是不是没开启,其实这是一个很常见的问题,对系统熟悉的朋友一般不会问,而是自己直接用命令查看某个端口是否开放,这不仅对 Linux 管理员而言,对于我们大家而言也非常有帮助。
假如这个端口没有被开启,则他们会直接找 Linux 管理员去开启它。如果这个端口已经开启了,则我们需要和应用团队来商量下一步要做的事。
在本篇文章中,我们将向你展示如何检查某个端口是否开启的 3 种方法。
这个目标可以使用下面的 Linux 命令来达成:
nc
nmap
telnet
如何使用 nc(netcat)命令来查看远程 Linux 系统中某个端口是否开启?
nc 即 netcat 。 netcat 是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。
它被设计成为一个可信赖的后端工具,可被直接使用或者简单地被其他程序或脚本调用。
与此同时,它也是一个富含功能的网络调试和探索工具,因为它可以创建你所需的几乎所有类型的连接,并且还拥有几个内置的有趣功能。
netcat 有三类功能模式,它们分别为连接模式、监听模式和隧道模式。
nc ( netcat )命令的一般语法:
1 | $ nc [-options] [HostName or IP] [PortNumber] |
在下面的例子中,我们将检查远程 Linux 系统中的 22 端口是否开启。
假如端口是开启的,你将获得类似下面的输出。
1 2 | # nc -zvw3 192.168.1.8 22 Connection to 192.168.1.8 22 port [tcp /ssh ] succeeded! |
命令详解:
nc
z
v
w3
192.168.1.8
22
当检测到端口没有开启,你将获得如下输出:
1 2 | # nc -zvw3 192.168.1.95 22 nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused |
如何使用 nmap 命令来查看远程 Linux 系统中某个端口是否开启?
nmap (“Network Mapper”)是一个用于网络探索和安全审计的开源工具,被设计用来快速地扫描大规模网络,尽管对于单个主机它也同样能够正常工作。
nmap 以一种新颖的方式,使用裸 IP 包来决定网络中的主机是否可达,这些主机正提供什么服务(应用名和版本号),它们运行的操作系统(系统的版本),它们正在使用的是什么包过滤软件或者防火墙,以及其他额外的特性。
尽管 nmap 通常被用于安全审计,许多系统和网络管理员发现在一些日常任务(例如罗列网络资产、管理服务升级的计划、监视主机或者服务是否正常运行)中,它也同样十分有用。
nmap 的一般语法:
1 | $ nmap [-options] [HostName or IP] [-p] [PortNumber] |
假如端口是开启的,你将获得如下的输出:
1 2 3 4 5 6 7 | # nmap 192.168.1.8 -p 22 Starting Nmap 7.70 ( https: //nmap .org ) at 2019-03-16 03:37 IST Nmap scan report for 192.168.1.8 Host is up (0.00031s latency). PORT STATE SERVICE 22 /tcp open ssh |
Nmap done: 1 IP address (1 host up) scanned in 13.06 seconds
假如端口没有开启,你将得到类似下面的结果:
1 2 3 4 5 6 7 8 9 | # nmap 192.168.1.8 -p 80 Starting Nmap 7.70 ( https: //nmap .org ) at 2019-03-16 04:30 IST Nmap scan report for 192.168.1.8 Host is up (0.00036s latency). PORT STATE SERVICE 80 /tcp closed http Nmap done : 1 IP address (1 host up) scanned in 13.07 seconds |
如何使用 telnet 命令来查看远程 Linux 系统中某个端口是否开启?
telnet 命令被用来交互地通过 TELNET 协议与另一台主机通信。
telnet 命令的一般语法:
1 | $ telnet [HostName or IP] [PortNumber] |
假如探测成功,你将看到类似下面的输出:
1 2 3 4 5 6 7 | $ telnet 192.168.1.9 22 Trying 192.168.1.9... Connected to 192.168.1.9. Escape character is '^]' . SSH-2.0-OpenSSH_5.3 ^] Connection closed by foreign host. |
假如探测失败,你将看到类似下面的输出:
1 2 3 | $ telnet 192.168.1.9 80 Trying 192.168.1.9... telnet: Unable to connect to remote host: Connection refused |
如何开启或关闭服务器指定端口
关闭端口
iptables -A INPUT -p tcp --dport 111 -j DROP
打开端口
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
开放不连续端口(包括单个):
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
其他都关闭:
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
开放连续端口:
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 8001:8140 -j ACCEPT
还可以直接修改/etc/sysconfig/iptables,如何写,参考已开端口,或者按照上面的命令填写即可,如下:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
重新启动iptables
service iptables restart