Làm cách nào để kiểm tra các cổng đã mở / đóng trên máy tính của tôi?


135

Làm cách nào để kiểm tra các cổng đã mở / đóng trên máy tính của tôi?

Tôi đã sử dụng netstat -atrên dòng lệnh.

  • Trạng thái cổng "LISTENING" có cho biết rằng cổng đang mở không?
  • Có cổng nào, không được hiển thị trong đầu ra, đóng không?


2
@Justgivemeaname: nmaplà một công cụ để kiểm tra các cổng mở trên một máy chủ khác . Nếu bạn có thể chạy netstattrên máy, việc sử dụng nó nhanh hơn và đáng tin cậy hơn nhiều.
David Foerster

@DavidFoerster: Không biết về nó netstat, vì vậy tôi đã học được điều đó. Nó nói trong liên kết rằng nó nên được sử dụng từ một máy chủ khác, mặc dù. Cảm ơn!
Justgivemeaname

Câu trả lời:


163

Có một vài tham số netstathữu ích cho việc này:

  • -lhoặc --listeningchỉ hiển thị các ổ cắm hiện đang lắng nghe kết nối đến.
  • -ahoặc --allhiển thị tất cả các ổ cắm hiện đang sử dụng.
  • -thoặc --tcphiển thị các ổ cắm tcp.
  • -uhoặc --udphiển thị các ổ cắm udp.
  • -nhoặc --numerichiển thị các máy chủ và cổng dưới dạng số, thay vì giải quyết trong dns và tìm trong / etc / services.

Bạn sử dụng kết hợp những thứ này để có được những gì bạn muốn. Để biết số cổng nào hiện đang được sử dụng, hãy sử dụng một trong các số sau:

netstat -atn           # For tcp
netstat -aun           # For udp
netstat -atun          # For both

Trong đầu ra, tất cả các cổng được đề cập đều được sử dụng hoặc lắng nghe kết nối đến hoặc được kết nối với một thiết bị ngang hàng ** tất cả các cổng khác đều bị đóng. Các cổng TCP và UDP rộng 16 bit (chúng đi từ 1-65535)

** Họ cũng có thể được kết nối / ngắt kết nối từ các đồng nghiệp.


71

Bạn có thể sử dụng lệnh này:

netstat -tulnp | grep <port no>

Nếu nó cho thấy một số quá trình sử dụng của nó. Nó đóng (không được sử dụng) nếu không có đầu ra.


20

Một dòng lệnh khác dễ sử dụng để tìm hiểu quá trình nào đang sử dụng một cổng:

lsof -n -i4TCP:$PORT | grep LISTEN

Tôi đã thêm chức năng tiếp theo trong .bash_profile của tôi,

function pslisten {
    echo `lsof -n -i4TCP:$1 | grep LISTEN`
}

và bây giờ chạy "pslisten 5060" để xem ai đang lấy cổng SIP của tôi.

Nó cũng hoạt động với Apple Mac OS X.


13

Là trạng thái cổng "LISTENING" chỉ ra rằng cổng được mở?

Đúng. Điều đó có nghĩa là một số dịch vụ đang lắng nghe cổng đó trên máy tính của bạn để kết nối đến, tức là cổng này được mở để thiết lập các kết nối mới.

Bất kỳ cổng nào không được hiển thị trong đầu ra chỉ ra rằng nó đã đóng?

Đúng. Ghi nhớ netstat -asẽ hiển thị tất cả các kết nối hoạt động ( nghe ) và thụ động ( không nghe ), tức là các cổng đóng vai trò là cả hai máy chủ (một số dịch vụ đang lắng nghe các cổng này để kết nối từ một máy / quy trình khác) và được thiết lập (các kết nối được thiết lập trên các kết nối này các cổng bất kể thực tế máy chủ / dịch vụ có thể là máy chủ hay máy khách)

Tất cả các cổng TCP và UDP thuộc về một loại được gọi là socket và có rất nhiều cổng. Để xem thông tin ổ cắm, bạn có thể kiểm tra man ss.


Cảm ơn. bạn đã viết -acó nghĩa là máy chủ và thành lập. "Máy chủ" có nghĩa là các cổng đang được một số dịch vụ lắng nghe? Có phải các cổng "được thiết lập" có nghĩa là các cổng có các kết nối hiện có bất kể đó là cổng của máy khách hay máy chủ không? Sau đó, những loại cổng -akhông hiển thị?
Tim

Tôi không nghĩ -atùy chọn này có nghĩa là ổ cắm "tất cả hoạt động"; nó chỉ có nghĩa là "tất cả". netstat hiển thị tất cả các ổ cắm hoạt động theo mặc định, nhưng bỏ qua các ổ cắm thụ động (mở, nghe). Bằng cách sử dụng -atùy chọn cả ổ cắm chủ động và thụ động được hiển thị.
Egon Olieux

@EgonOlieux Cảm ơn. Tôi đứng sửa; chỉnh sửa câu trả lời.
heemayl

@heemayl Phần thứ hai trong câu trả lời của bạn vẫn chưa đúng. Ổ cắm TCP ở trạng thái "nghe" không bao giờ có thể là kết nối; nó không được kết nối với bất cứ điều gì, nó chỉ lắng nghe. Nghe các socket TCP cũng được gọi là socket thụ động vì điều này. Nếu máy khách cố gắng kết nối với ổ cắm (nghe) trên máy chủ, một ổ cắm mới sẽ được tạo trên máy chủ để thiết lập kết nối với máy khách. Một ổ cắm là một phần của kết nối được thiết lập được gọi là ổ cắm hoạt động.
Egon Olieux

3

Một lựa chọn khác là ss . Nó dễ sử dụng hơn nhiều ....

Lệnh dưới đây sẽ chỉ xuất ra một danh sách các ổ cắm nghe hiện tại.

root@server:~# ss -l

    Netid  State      Recv-Q Send-Q                                     Local Address:Port                                                      Peer Address:Port   


u_dgr  UNCONN     0      0                                                      * 23353                                                                * 23352                
u_dgr  UNCONN     0      0                                                      * 568                                                                  * 362                  
u_dgr  UNCONN     0      0                                                      * 14836                                                                * 14837                
u_dgr  UNCONN     0      0                                                      * 20446                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 22877                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 504                                                                  * 347                  
u_dgr  UNCONN     0      0                                                      * 16298                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23343                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24125                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24617                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23352                                                                * 23353                
u_dgr  UNCONN     0      0                                                      * 23334                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 17113                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 16957                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 14793                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 23345                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 24070                                                                * 369                  
udp    UNCONN     0      0                                                      *:sunrpc                                                               *:*                    
udp    UNCONN     0      0                                                      *:981                                                                  *:*                    
udp    UNCONN     0      0                                                     :::sunrpc                                                              :::*                    
udp    UNCONN     0      0                                                     :::981                                                                 :::*                    
tcp    LISTEN     0      128                                            127.0.0.1:85                                                                   *:*                    
tcp    LISTEN     0      128                                                    *:ssh                                                                  *:*                    
tcp    LISTEN     0      128                                                    *:3128                                                                 *:*                    
tcp    LISTEN     0      100                                            127.0.0.1:smtp                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:8006                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:sunrpc                                                               *:*                    
tcp    LISTEN     0      128                                                   :::ssh                                                                 :::*                    
tcp    LISTEN     0      100                                                  ::1:smtp                                                                :::*                    
tcp    LISTEN     0      128                                                   :::sunrpc                                                              :::*                    

1
Tôi không biết về điều này, cảm ơn zee
nick fox

2

Hoặc điều này có thể giúp bằng cách sử dụng đồng hồ, sau đó chơi xung quanh với những gì bạn muốn xem.

sudo watch -d -n0 "netstat -atnp | grep ESTA"

sudo watch -d -n0 "netstat -tulnp | grep ESTA"

1
-a mâu thuẫn với -l, -a lấy tất cả cho dù ESTABLISHED hoặc NGHE, và -l chỉ lấy NGHE, vì vậy trong thực tế nó là tcp '-ltnp', '-lunp' udp hoặc '-ltunp' tcp + udp
ModerateJavaScriptDev

1

Trên thực tế có một cách tốt hơn để xem những gì bạn đã mở cổng. Vấn đề với netstathoặc lsoflà họ truy vấn ngăn xếp mạng và thực sự không kết nối với máy mà thay vào đó là cố gắng xem những gì đang chạy trên hệ thống. Cách tiếp cận tốt hơn là sử dụng nmapnhư vậy:

nmap -sT -O localhost

Để xem các cổng mở.


0
  1. Hãy thử điều này để có được danh sách các cổng đã mở trong phạm vi đó.

    for p in {1..1023}
    do
       (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
    done
    
  2. Và lệnh này sẽ hiển thị nó là gì!

    cat /etc/services | grep {PORTNumber}
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.