Як отримати список безкоштовних портів на сервері Unix


15

У мене є вимога знати, які всі порти в моїй машині Solaris вільно використовувати для будь-якого мережевого зв'язку.

Я спробував netstat -aкоманду. Але повернута інформація не дала переконливого результату, який усі порти я можу використовувати для нової програми, яку я пишу. Вдячні за будь-яку допомогу, надану з цього приводу.


В межах якого числового діапазону? Завжди є ефемерні порти у використанні, і вони постійно змінюються.
mdpc

Що з результатом netstat -anне було для вас переконливим? netstatслід перелічити все, що використовується. Все інше (як правило, багато тисяч портів!) Доступне.
Целада

1
Також це може допомогти дізнатися, навіщо вам потрібна ця інформація. Прив’язуючи сокет, ви завжди можете дозволити ядру призначити порт для вас, тому, якщо вам не байдуже, який порт ви отримаєте, поки ви отримаєте його, то вам не потрібно його знайти вручну.
Целада

Відповіді:


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
Деякі netstatваріанти, які ви використовуєте, не підтримуються netstatреалізацією Solaris .
jlliagre
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.