Cara mendapatkan daftar port yang gratis di server Unix

15

Saya memiliki persyaratan untuk mengetahui semua port di mesin Solaris saya bebas digunakan untuk segala jenis komunikasi jaringan.

Saya mencoba netstat -aperintah itu. Tetapi informasi yang dikembalikan tidak memberikan hasil yang meyakinkan bahwa semua port dapat saya gunakan untuk aplikasi baru yang saya tulis. Hargai setiap bantuan yang diberikan dalam hal ini.

PSAM
sumber
Dalam rentang numerik apa? Selalu ada port fana yang digunakan dan ini terus berubah.
mdpc
Bagaimana dengan hasil netstat -anyang tidak meyakinkan Anda? netstatharus mendaftar semua yang sedang digunakan. Segala sesuatu yang lain (biasanya ribuan port!) Tersedia.
Celada
1
Juga, mungkin membantu untuk mengetahui mengapa Anda memerlukan informasi ini. Saat mengikat sebuah soket, Anda selalu dapat memilih untuk membiarkan kernel menetapkan port untuk Anda, jadi jika Anda tidak peduli port mana yang Anda dapatkan selama Anda mendapatkannya, maka Anda tidak perlu menemukannya secara manual.
Celada

Jawaban:

15

1: Anda seharusnya tidak menggunakan port anonim (alias port sementara) untuk mengimplementasikan layanan UDP atau TCP.

Secara default, port ini berada dalam kisaran 32768 - 65535.

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

2: Kecuali jika layanan Anda berjalan sebagai root atau memiliki hak istimewa RBAC yang diperlukan, Anda tidak boleh menggunakan port yang diistimewakan. Secara default, semua port dari 1 hingga 1024 memiliki hak istimewa:

# ndd /dev/tcp tcp_smallest_nonpriv_port
1024

3: Kecuali Anda tahu apa yang Anda lakukan, Anda seharusnya tidak menggunakan port terkenal yang diharapkan untuk menjalankan layanan yang berbeda dari yang Anda rencanakan. Port yang terkenal terdaftar di /etc/services. misalnya:

# 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: Anda seharusnya tidak menggunakan port yang sudah digunakan oleh layanan yang ada. Anda bisa mendapatkannya dengan menjalankan:

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

5: Akhirnya, Anda tidak boleh menggunakan port yang digunakan oleh layanan yang saat ini dinonaktifkan tetapi itu mungkin diaktifkan di masa depan. Ini adalah bagian tersulit untuk dipatuhi ...

Jlliagre
sumber
10

Anda dapat menggunakan 1-65.535 port pada sistem Anda di mana 1024 pertama adalah root privilege.

Jadi Daripada menemukan port gratis, Anda bisa mendapatkan daftar port yang digunakan menggunakan perintah di bawah ini

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

Kemudian Anda dapat menggunakan port apa saja dari 1-65535 kecuali port tersebut.

Vaibhav Panmand
sumber
2
Beberapa netstatopsi yang Anda gunakan tidak didukung oleh Solarisnetstat implementasi .
jlliagre