如何获取Unix服务器中可用端口的列表


15

我需要知道Solaris机器中的哪些端口可以自由用于任何类型的网络通信。

我尝试了netstat -a命令。但是返回的信息并不能令人信服地说明我可以在正在编写的新应用程序中使用哪个端口。感谢在这方面提供的任何帮助。


在什么数值范围内?始终使用临时端口,并且这些端口会不断变化。
mdpc

的结果如何netstat -an不令人信服?netstat应该列出正在使用的所有内容。其他所有内容(通常是数千个端口!)都可用。
Celada 2014年

1
此外,它可能有助于了解您为什么需要此信息。当绑定一个套接字时,您总是可以选择让内核为您分配一个端口,因此,只要您获得一个端口,只要您不在乎获得哪个端口,就不需要手动查找一个端口。
Celada 2014年

Answers:


15

1:您不应使用匿名端口(即临时端口)来实现UDP或TCP服务。

默认情况下,这些端口的范围是32768-65535。

# ndd /dev/tcp tcp_smallest_anon_port
32768
# ndd /dev/tcp tcp_largest_anon_port 
65535

2:除非您的服务以root用户身份运行或具有所需的RBAC特权,否则您不应使用特权端口。默认情况下,从1到1024的所有端口都具有特权:

# ndd /dev/tcp tcp_smallest_nonpriv_port
1024

3:除非您知道自己在做什么,否则不应该使用众所周知的端口来运行与计划的端口不同的服务。列出了知名端口/etc/services。例如:

# tail /etc/services
dtspc           6112/tcp                        # CDE subprocess control
fs              7100/tcp                        # Font server
solaris-audit   16162/tcp                       # Secure remote audit logging
servicetag      6481/udp
servicetag      6481/tcp
wnn6            22273/tcp                       # Wnn6 jserver
wnn6            22273/udp                       # Wnn6 jserver
rdc             121/tcp                         # SNDR server daemon
snmpd           161/udp        snmp             # Net-SNMP snmp daemon
swat            901/tcp                         # Samba Web Adm.Tool

4:您不应使用现有服务已使用的端口。您可以通过运行获得这些:

# netstat -an | grep LISTEN | nawk '{$0=$1;gsub(".*\\.","");print}' | sort -un

5:最后,您不应使用当前已禁用的服务使用的端口,但将来可能会启用该端口。这是要遵守的最棘手的部分。


10

您可以在系统上使用1-65,535个端口,其中前1024个端口具有root特权。

因此,您可以使用以下命令获取已使用端口的列表,而不是查找可用端口:

netstat -tunlep | grep LISTEN | awk '{print $4}'

然后,您可以使用1-65535中的任何端口,但这些端口除外。


2
netstatSolaris netstat实施不支持您使用的某些选项。
jlliagre 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.