Cách lấy danh sách các cổng miễn phí trong máy chủ Unix


15

Tôi có một yêu cầu để biết tất cả các cổng trong máy Solaris của tôi được sử dụng miễn phí cho bất kỳ loại giao tiếp mạng nào.

Tôi đã thử netstat -alệnh. Nhưng thông tin trả về đã không đưa ra một kết quả thuyết phục trong đó tất cả các cổng tôi có thể sử dụng cho một ứng dụng mới mà tôi đang viết. Đánh giá cao bất kỳ hỗ trợ được cung cấp về vấn đề này.


Trong phạm vi số nào? Luôn có các cổng phù du được sử dụng và chúng luôn thay đổi.
mdpc

Điều gì về kết quả của netstat -anđã không thuyết phục bạn? netstatnên liệt kê tất cả mọi thứ đang được sử dụng. Mọi thứ khác (thông thường là hàng ngàn cổng!) Có sẵn.
Celada

1
Ngoài ra, nó có thể giúp biết lý do tại sao bạn cần thông tin này. Khi liên kết một ổ cắm, bạn luôn có thể chọn để cho kernel gán một cổng cho bạn, vì vậy nếu bạn không quan tâm cổng nào bạn nhận được miễn là bạn có một cổng, thì bạn không cần phải tìm một cổng thủ công.
Celada

Câu trả lời:


15

1: Bạn không nên sử dụng các cổng ẩn danh (còn gọi là cổng phù du) để triển khai dịch vụ UDP hoặc TCP.

Theo mặc định, các cổng này nằm trong phạm vi 32768 - 65535.

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

2: Trừ khi dịch vụ của bạn đang chạy dưới quyền root hoặc có đặc quyền RBAC cần thiết, bạn không nên sử dụng cổng đặc quyền. Theo mặc định, tất cả các cổng từ 1 đến 1024 được đặc quyền:

# ndd /dev/tcp tcp_smallest_nonpriv_port
1024

3: Trừ khi bạn biết bạn đang làm gì, bạn không nên sử dụng một cổng nổi tiếng dự kiến ​​sẽ chạy một dịch vụ khác với dịch vụ bạn dự định. Các cổng nổi tiếng được liệt kê trong /etc/services. ví dụ:

# 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: Bạn không nên sử dụng một cổng đã được sử dụng bởi một dịch vụ hiện có. Bạn có thể có được những thứ này khi chạy:

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

5: Cuối cùng, bạn không nên sử dụng một cổng được sử dụng bởi một dịch vụ hiện đang bị vô hiệu hóa nhưng điều đó có thể được kích hoạt trong tương lai. Đây là phần khó nhất để tuân thủ ...


10

Bạn có thể sử dụng 1-65.535 cổng trên hệ thống của mình, trong đó 1024 đầu tiên là đặc quyền gốc.

Vì vậy, thay vì tìm cổng miễn phí, bạn có thể lấy danh sách các cổng được sử dụng bằng lệnh bên dưới

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

Sau đó, bạn có thể sử dụng bất kỳ cổng nào từ 1-65535 ngoại trừ các cổng đó.


2
Một số netstattùy chọn bạn sử dụng không được hỗ trợ bởi netstattriển khai Solaris .
jlliagre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.