【发布时间】:2014-04-24 22:02:39
【问题描述】:
特别是 RHEL 6.5
这是一个开发盒,我们有一些允许用于开发的端口范围。 ...不幸的是,让技术人员注意找出可用的端口就像拔牙一样。更喜欢执行此操作的脚本或别名,这样我们就不必一直询问。线索?这是 iptables 命令还是 netstat 命令或一些奇怪的组合? nmap 在这台机器上不可用。
请不要说这是一个服务器故障问题。他们说这是一个编程问题。 :-|
【问题讨论】:
特别是 RHEL 6.5
这是一个开发盒,我们有一些允许用于开发的端口范围。 ...不幸的是,让技术人员注意找出可用的端口就像拔牙一样。更喜欢执行此操作的脚本或别名,这样我们就不必一直询问。线索?这是 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工具和program一个简单的脚本来做一些大致相当于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!
【讨论】: