如何在Linux机器上找到可用但未占用的端口?

时间:2014-03-18 22:46:56

标签: linux unix port firewall

特别是RHEL 6.5

这是一个开发盒,我们有一些允许开发使用的端口范围。 ...不幸的是,让技术人员注意找出可用的端口就像拔牙一样。更喜欢这样做的脚本或别名,这样我们就不必一直询问。线索?这是一个iptables命令还是一个netstat命令或一些奇怪的组合? nmap在此计算机上不可用。

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

1 个答案:

答案 0 :(得分: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工具和程序一个简单的脚本做一些大致相当于{{ {1}}确实。

nmap

对于每个打开的TCP端口,您应该看到与此类似的行:

#!/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