我在两台机器 A 和 B 上都有 root 权限,我想知道哪些端口不能从 A 访问 B。有没有办法在 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
如果我只是从 AI 扫描端口 5900
nc -v -w 1 B -z 5900
nc: connect to B port 5900 (tcp) failed: Connection refused
从 BI 获取
nc -v -w 1 localhost -z 5900
Connection to localhost 5900 port [tcp/*] succeeded!
还可以从 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
答案1
当您使用 时nmap
,“过滤”端口和“关闭”端口之间存在差异。这应该将所有不可访问的端口显示为“过滤”,而那些没有人监听的端口应该列为“关闭”。
如果您中间有一个平均路由器,它会回答 TCP 请求而不是丢弃它们,您可以通过绑定到所有端口来找出答案(警告,这样做可能会耗尽系统资源!也许可以尝试一次使用 ~1000 个端口):
for i in {1..65535} ; do nc -l $i & done