特别是RHEL 6.5如何在Linux机器上找到可用但未占用的端口?
这是一个开发框,我们有一定的端口范围,我们允许开发使用。 ......不幸的是,让技术人员注意找出可用的端口就像是拔牙一样。宁愿使用这样的脚本或别名,以便我们不必一直提问。线索?这是一个iptables命令还是它是一个netstat命令或一些奇怪的组合? nmap在本机上不可用。
请不要说这是一个服务器故障问题。他们说这是一个编程问题。 : - |
特别是RHEL 6.5如何在Linux机器上找到可用但未占用的端口?
这是一个开发框,我们有一定的端口范围,我们允许开发使用。 ......不幸的是,让技术人员注意找出可用的端口就像是拔牙一样。宁愿使用这样的脚本或别名,以便我们不必一直提问。线索?这是一个iptables命令还是它是一个netstat命令或一些奇怪的组合? nmap在本机上不可用。
请不要说这是一个服务器故障问题。他们说这是一个编程问题。 : - |
肯定是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!
这最后的技术似乎理想的,因为我可以用它来检查只是我想尝试和使用的端口。使用iptables,我找不到任何防火墙的证据。但这并不意味着这里和那里之间没有防火墙。 Nmap可能是一个禁忌,除了本地使用可能的例外。 Cupie娃娃是你的。 ;-) – user447607
回想起来,这可能是一个超级用户问题,而不是SF或SO。 – user447607
是的,你是对的。我忘记了超级用户。 – dschulz