![Unix 서버에서 사용 가능한 포트 목록을 얻는 방법](https://linux55.com/image/59810/Unix%20%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%20%EA%B0%80%EB%8A%A5%ED%95%9C%20%ED%8F%AC%ED%8A%B8%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
모든 유형의 네트워크 통신에 사용 가능한 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:서비스가 루트로 실행 중이거나 필수 RBAC 권한이 없는 경우 권한 있는 포트를 사용해서는 안 됩니다. 기본적으로 1부터 1024까지의 모든 포트에 권한이 부여됩니다.
# ndd /dev/tcp tcp_smallest_nonpriv_port
1024
삼:수행 중인 작업을 알지 못하는 한, 실행하려는 서비스와 다른 서비스를 실행하도록 의도된 잘 알려진 포트를 사용해서는 안 됩니다. 잘 알려진 포트는 에 나열되어 있습니다 /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
처음 1024개 포트에 대한 루트 권한으로 시스템에서 포트 1-65,535를 사용할 수 있습니다.
따라서 사용 가능한 포트를 찾는 대신 다음 명령을 사용하여 사용된 포트 목록을 가져올 수 있습니다.
netstat -tunlep | grep LISTEN | awk '{print $4}'
그런 다음 이러한 포트 외에도 1-65535 사이의 모든 포트를 사용할 수 있습니다.