![如何在 Unix 中测试远程主机端口是否可访问](https://linux22.com/image/518817/%E5%A6%82%E4%BD%95%E5%9C%A8%20Unix%20%E4%B8%AD%E6%B5%8B%E8%AF%95%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6%E5%8F%AF%E8%AE%BF%E9%97%AE.png)
在 Windows 中,我进入命令行并使用“telnet”来检查端口。如何在 Unix 中执行相同操作?
似乎有些人使用“tcpdump port”命令。这是在监控实时流量吗?谢谢。
答案1
nmap
是一个用于此类事情以及其他许多事情的出色的通用工具。
nmap host.domain.tld
(或者nmap host
对于本地机器,或者nmap <ipaddr>
通过地址而不是名称检查机器)将列出打开的常用端口。
nmap 192.168.23.1-254 -p 22,80,443
将通过地址扫描一系列主机,以查看通常与 SSH、HTTP 和 HTTPS 关联的 TCP 端口是否打开。
查看man nmap
更多选项 - 它是网络检查工具的厨房水槽。
您可能目前没有安装 nmap,但它几乎存在于所有发行版的标准存储库中。对于 debian 或 ubuntu 变体,aptitude install nmap
请安装它,或者在您选择的 GUI 包管理器中找到它。如果它在您的系统上不容易找到,请从获取它并获取更多信息http://nmap.org/
您也可以使用telnet
您已经熟悉的客户端技术,因为该技术也可用,并且通常安装在默认软件包中,但它nmap
是一种值得了解的工具,因为它有助于诊断网络问题,检查一切是否正常等等。如果您希望远离命令行与它交互,它还有一些不错的图形前端。
答案2
如果您使用的是 bash,那么手册页会指出您可以写入 /dev/tcp/HostNameOrIP/port。我使用过几次,如果远程端口已打开,则不会有任何响应。如果系统无法连接到远程端口,则会说明原因
[kevin@box ~]$ echo -n > /dev/tcp/www.yahoo.com/80
[kevin@box ~]$ nslookup www.no-such-domain.com
Server: 127.0.0.1
Address: 127.0.0.1#53
** server can't find www.no-such-domain.com: NXDOMAIN
[kevin@box ~]$ echo -n > /dev/tcp/www.no-such-domain.com/80
-bash: www.no-such-domain.com: Name or service not known
-bash: /dev/tcp/www.no-such-domain.com/80: Invalid argument
[kevin@box ~]$ echo -n > /dev/tcp/192.168.3.3/80 #no such server on my network
-bash: connect: No route to host
-bash: /dev/tcp/192.168.3.3/80: No route to host
[kevin@box ~]$ echo -n > /dev/tcp/192.168.3.1/88 #nothing listening on port 88
-bash: connect: Connection refused
-bash: /dev/tcp/192.168.3.1/88: Connection refused
[kevin@box ~]$
答案3
telnet
您也可以在 *nix 机器上使用。
答案4
要测试端口在 Bash 中是否可访问,可以使用以下单行命令:
$ </dev/tcp/example.com/80 && echo Port is open || echo Port is closed
Port is open
要手动检查,请使用telnet
命令(与 Windows 类似)。