유닉스 서버에서 사용 가능한 포트 목록을 얻는 방법


15

Solaris 시스템의 모든 포트가 모든 종류의 네트워크 통신에 자유롭게 사용 가능한지 알아야합니다.

나는 netstat -a명령을 시도했다 . 그러나 반환 된 정보는 내가 작성중인 새로운 응용 프로그램에 사용할 수있는 모든 포트의 확실한 결과를 제공하지 않았습니다. 이와 관련하여 제공된 모든 지원에 감사하십시오.


어떤 수치 범위 내에서? 항상 사용중인 임시 포트가 있으며이 포트는 지속적으로 변경됩니다.
mdpc 2007

당신에게 netstat -an설득력이 없었던 결과는 어떻습니까? netstat사용중인 모든 것을 나열해야합니다. 다른 모든 것 (일반적으로 수천 개의 포트!)을 사용할 수 있습니다.
Celada

1
또한이 정보가 필요한 이유를 아는 것이 도움이 될 수 있습니다. 소켓을 바인딩 할 때 항상 커널이 포트를 할당하도록 선택할 수 있으므로 포트를 얻는 한 포트를 신경 쓰지 않으면 수동으로 찾을 필요가 없습니다.
Celada

답변:


15

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

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

처음 1024가 루트 권한이있는 시스템에서 1-65,535 개의 포트를 사용할 수 있습니다.

따라서 사용 가능한 포트를 찾는 대신 아래 명령을 사용하여 사용 된 포트 목록을 얻을 수 있습니다

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

그런 다음 해당 포트를 제외하고 1-65535의 모든 포트를 사용할 수 있습니다.


2
사용하는 일부 netstat옵션은 Solaris netstat구현에서 지원되지 않습니다 .
jlliagre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.