2014-03-18 20 views
0

特别是RHEL 6.5如何在Linux机器上找到可用但未占用的端口?

这是一个开发框,我们有一定的端口范围,我们允许开发使用。 ......不幸的是,让技术人员注意找出可用的端口就像是拔牙一样。宁愿使用这样的脚本或别名,以便我们不必一直提问。线索?这是一个iptables命令还是它是一个netstat命令或一些奇怪的组合? nmap在本机上不可用。

请不要说这是一个服务器故障问题。他们说这是一个编程问题。 : - |

回答

1

肯定是SF的问题,但我们现在就去。从开发盒本身(命令行),您应该能够看到正在使用netstat工具。

要查看侦听端口UDP和TCP的名单,完成与程序名称:

# preferably as root 
netstat --listening --program --numeric-ports --protocol=ip -6 -4 

从另一台机器,可以使用nmap或类似的工具来查看哪些端口是开放/倾听扫描分配给开发盒的IP地址。在尝试之前,也许你应该征求许可。另外,你应该考虑到有问题的盒子可能有适当的防火墙规则,可以阻止你的扫描尝试。

要了解规则是什么防火墙发生在开发框尝试:

# as root 
iptables -nvxL -t filter 

# maybe there are NAT rules, redirects to other addresses, etc. 
iptables -nvxL -t nat 

要看看这些iptables选项,请尝试man iptables

举个例子,假设172.16.0.1是分配给开发中的IP地址,运行在可能的最简单的方法nmap

# preferably as root 
nmap -v 172.16.0.1 

在几分钟内,你应该看到的端口/服务收听列表在那个相关的盒子里。 尝试man nmap并阅读文档以获取更多详细信息。

如果你真的认为这是一个编程问题,您可以使用netcat工具和程序一个简单的脚本做一些大致相当于什么呢nmap

#!/bin/bash 
# 
# DISCLAIMER: NOT TESTED -- just an example 
# NOTE: This will take many DAYS to complete 

HOST=172.16.0.1 

for port in `seq 1 65535` 
do 
    echo "Trying ${port}..." 
    netcat -vvv ${HOST} $port -w 1 -z 
done 

对于每一个开放的TCP端口,你应该会看到类似这样的一行:

Connection to 172.16.0.1 23 port [tcp/telnet] succeeded! 
+0

这最后的技术似乎理想的,因为我可以用它来检查只是我想尝试和使用的端口。使用iptables,我找不到任何防火墙的证据。但这并不意味着这里和那里之间没有防火墙。 Nmap可能是一个禁忌,除了本地使用可能的例外。 Cupie娃娃是你的。 ;-) – user447607

+0

回想起来,这可能是一个超级用户问题,而不是SF或SO。 – user447607

+0

是的,你是对的。我忘记了超级用户。 – dschulz

相关问题