如何查找哪些端口被阻止?

Anu*_*ush 7 linux port nmap

我在两台机器 A 和 B 上有 root,我想知道 B 上不能从 A 访问哪些端口。有没有办法在 B 上运行一个命令行应用程序,它侦听所有端口,然后nmap从 A运行? 端口可能被路由器阻止,因此仅检查iptables是不够的。

一个简单的 nmap 给出

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 09:32 BST
Nmap scan report for B (xxx.xxx.xxx.xxx)
Host is up (0.00038s latency).
rDNS record for xxx.xxx.xxx.xxx: B
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
Run Code Online (Sandbox Code Playgroud)

如果我只是从 AI 扫描端口 5900

nc -v -w 1 B -z 5900
nc: connect to B port 5900 (tcp) failed: Connection refused
Run Code Online (Sandbox Code Playgroud)

并从 BI 得到

nc -v -w 1 localhost -z 5900
Connection to localhost 5900 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)

还从 BI get 运行 nmap

nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 09:57 BST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00024s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
631/tcp  open  ipp
5900/tcp open  vnc
Run Code Online (Sandbox Code Playgroud)

Ste*_*del 3

当您使用 时nmap,“已过滤”端口和“已关闭”端口之间存在差异。这应该将所有不可访问的端口显示为“已过滤”,而那些没有人在侦听的端口应列为“已关闭”。

如果你有一个普通的路由器在其中应答 TCP 请求而不是丢弃它们,你可以通过绑定到所有端口来找出答案(警告,这样做可能会耗尽系统资源!也许尝试一次使用约 1000 个端口):

for i in {1..65535} ; do nc -l $i & done
Run Code Online (Sandbox Code Playgroud)