我需要知道 Solaris 计算机中的哪些端口可以自由用于任何类型的网络通信。
我尝试了netstat -a
命令。但返回的信息并没有给出令人信服的结果,表明我可以将所有端口用于我正在编写的新应用程序。感谢在这方面提供的任何帮助。
答案1
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:最后,您不应该使用当前已禁用但将来可能会启用的服务所使用的端口。这是最棘手的部分......
答案2
您可以在系统上使用 1-65,535 个端口,其中前 1024 个端口具有 root 权限。
因此,您可以使用以下命令获取已使用端口的列表,而不是查找空闲端口
netstat -tunlep | grep LISTEN | awk '{print $4}'
然后您可以使用除这些端口之外的 1-65535 之间的任何端口。