Câu hỏi Nhận danh sách các Cổng mở trong Linux


Tôi cần một lệnh Linux để liệt kê tất cả các cổng mở miễn phí để sử dụng trong một ứng dụng

lsof -i TCP| fgrep LISTEN

Không nhìn thấy được giúp đỡ như các cổng nó liệt kê không nhất thiết phải miễn phí để sử dụng. Làm cách nào để liệt kê các cổng mở miễn phí không sử dụng?


152
2018-01-08 07:34


gốc


//, Nếu netstat không có sẵn trên máy chủ thì sao? - Nathan Basanese


Các câu trả lời:


netstat -lntu

như được trả lời bởi @askmish sẽ cung cấp cho bạn danh sách các dịch vụ đang chạy trên hệ thống của bạn trên các cổng tcp và udp, nơi

  • -l = chỉ các dịch vụ đang nghe trên một số cổng
  • -n = hiển thị số cổng, không cố gắng giải quyết tên dịch vụ
  • -t = cổng tcp
  • -u = cổng udp
  • -p = tên chương trình

Bạn không cần tham số 'p' vì bạn chỉ quan tâm đến việc nhận các cổng nào miễn phí và không có chương trình nào đang chạy trên đó.

Điều này chỉ cho thấy các cổng trên hệ thống của bạn được sử dụng hết. Điều này không cho bạn biết trạng thái mạng của bạn, ví dụ: nếu bạn đang đứng sau NAT và bạn muốn một số dịch vụ có thể truy cập từ bên ngoài. Hoặc nếu tường lửa chặn cổng cho khách truy cập bên ngoài. Trong trường hợp đó, nmap đến để giải cứu. CẢNH BÁO: Chỉ sử dụng nmap trên các mạng thuộc quyền kiểm soát của bạn. Ngoài ra, có những quy tắc tường lửa có thể chặn ping nmap, bạn sẽ phải fiddle xung quanh với các tùy chọn để có được kết quả chính xác.


218
2018-01-08 11:51



Lưu ý rằng netstat không được chấp nhận trên nhiều hệ thống và ss nên được sử dụng thay thế. - Johu


net-tools không được chấp nhận, bạn có thể dùng ss chỉ huy thay vì netstat nếu netstat không có trên máy của bạn:

ss -lntu

nên làm việc tương tự như

netstat -lntu

theo sự giúp đỡ được xây dựng trong:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets

53
2018-06-08 20:19





Lệnh này sẽ liệt kê các cổng mạng mở và các quá trình sở hữu chúng:

netstat -lnptu

sau đó bạn có thể lọc kết quả theo thông số kỹ thuật chính xác của mình.

Bạn cũng có thể sử dụng nmap để có kết quả chi tiết hơn về cổng.


19
2018-01-08 07:45



Cờ -p yêu cầu quyền root cho một số tiến trình, vì vậy nó sẽ là sudo netstat -lnptu - klaus se


Tất cả các cổng đã mở bao gồm lưu lượng truy cập phản hồi:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l

4
2017-11-03 04:33



Một danh sách về chỉ số cổng duy nhất và chỉ IPv4: netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq - Aaron C. de Bruyn
1 để hiển thị cách lọc và trích xuất các số từ kết quả. Đã chỉnh sửa để loại bỏ đầu ra stderr khỏi netstat (thêm tiêu đề vào kết quả trong Ubuntu). - datashaman
Hmm, suy nghĩ thứ hai. -1 vì không trả lời câu hỏi. - datashaman


Lệnh sau sẽ làm việc trên bất kỳ Unix nào xuất ra cùng định dạng với Ubuntu / Debian - nơi địa chỉ cục bộ nằm trong cột 4 và đầu ra bao gồm một tiêu đề 2 dòng ở trên cùng. Nếu một trong những con số đó khác nhau, hãy chỉnh sửa lệnh awk bên dưới.

Nếu bạn muốn chỉ IPv4:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Nếu bạn muốn chỉ IPv6:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Nếu bạn muốn cả hai cùng nhau:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

Lệnh này xuất ra một danh sách các số cổng đang lắng nghe trên tất cả các giao diện. Nếu bạn muốn liệt kê tất cả các cổng đang lắng nghe trên giao diện localhost, hãy sử dụng một cái gì đó như thế này:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq

0
2018-04-04 06:29