Để kiểm tra port đang mở trên Windows, mở Command Prompt và gõ netstat -ano | findstr LISTENING. Mỗi dòng kết quả là một port đang có phần mềm lắng nghe, cột cuối cùng là mã tiến trình (PID) của phần mềm đó. Trên Linux, lệnh tương ứng là sudo ss -tulpn. Cả hai lệnh chỉ cho biết port mở trên máy. Muốn biết người ở ngoài internet có vào được hay không, bạn nhập IP public và số port vào công cụ kiểm tra port online.
| Muốn biết gì | Lệnh hoặc công cụ |
|---|---|
| Port nào đang mở trên Windows | netstat -ano | findstr LISTENING |
| Phần mềm nào đang chiếm port | Tra PID trong Task Manager, tab Details, hoặc Get-Process -Id PID |
| Port nào đang mở trên Linux, Ubuntu | sudo ss -tulpn |
| Máy khác trong mạng LAN có vào được không | Test-NetConnection IP -Port số_port |
| Từ internet có vào được không | Công cụ kiểm tra port của CheckIP, dùng IP public |
Kiểm tra port trên máy và kiểm tra port từ internet khác nhau thế nào?
Kiểm tra trên máy cho biết phần mềm nào đang lắng nghe port nào, dùng netstat, PowerShell hoặc ss. Kiểm tra từ internet cho biết người ở ngoài mạng nhà bạn có kết nối tới được port đó hay không. Một port hiện LISTENING trên máy vẫn có thể bị tường lửa, modem hoặc nhà mạng chặn trước khi tới nơi.
| Tiêu chí | Kiểm tra trên máy | Kiểm tra từ internet |
|---|---|---|
| Trả lời câu hỏi | Phần mềm đã nghe port chưa | Người ngoài có vào được không |
| Địa chỉ dùng | 127.0.0.1 hoặc IP LAN (192.168.x.x) | IP public của đường mạng |
| Công cụ | netstat, Get-NetTCPConnection, ss, Test-NetConnection | Công cụ kiểm tra port online |
| Khi nào dùng | Lỗi port bị chiếm, trước khi mở port trên modem | Sau khi đã NAT port trên modem |
Ví dụ hay gặp: đầu ghi camera nghe port 8000. Từ laptop trong nhà, lệnh Test-NetConnection tới đầu ghi báo thành công. Điện thoại dùng 4G thì không xem được. Lỗi nằm ở modem chưa NAT port hoặc đường mạng dùng CGNAT. Ngược lại, công cụ online báo đóng có khi chỉ vì phần mềm chưa chạy. Nếu chưa rõ khái niệm, xem trước bài port là gì để phân biệt port TCP và UDP.
Cách kiểm tra port đang mở trên Windows bằng CMD (netstat)
Kiểm tra port bằng cmd chỉ cần một lệnh netstat có sẵn trên Windows 10, Windows 11 và Windows Server, không cài thêm gì. Theo tài liệu netstat của Microsoft, tham số -a hiện các port TCP và UDP máy đang lắng nghe, -n hiện địa chỉ dạng số, -o thêm cột PID.
- Bấm Win + R, gõ
cmd, Enter. Muốn xem cả tên phần mềm thì chạy Command Prompt bằng quyền quản trị (Run as administrator). - Gõ lệnh
netstat -ano | findstr LISTENING. - Đọc kết quả theo từng cột.
- Lọc riêng một port nếu cần (xem mục bên dưới).
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1032
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1180
TCP 127.0.0.1:9100 0.0.0.0:0 LISTENING 7344
Proto là giao thức. Local Address là IP và port trên máy bạn. Foreign Address là đầu bên kia, với port đang nghe thì để trống dạng 0.0.0.0:0. State là trạng thái: tài liệu Microsoft ghi LISTEN, còn màn hình Windows in ra LISTENING. Số PID ở trên chỉ là ví dụ, mỗi máy một khác.
Kiểm tra port 80 hoặc một port cụ thể đang được dùng
Thêm số port vào sau dấu hai chấm để lọc:
netstat -ano | findstr :80
Dấu hai chấm loại bớt kết quả lạc như 1180, nhưng :80 vẫn khớp :8080 và :8000, nên đọc lại cột Local Address.
Xem tên phần mềm đang giữ port
Lệnh netstat -abno in tên file chương trình dưới mỗi dòng. Microsoft ghi rõ tham số -b sẽ lỗi nếu không đủ quyền, nên phải mở CMD bằng quyền quản trị. Cách nhẹ hơn là mở Task Manager, tab Details, sắp xếp theo cột PID rồi tìm số PID vừa thấy.
Kiểm tra port đang mở bằng PowerShell
PowerShell có lệnh Get-NetTCPConnection trả về bảng có thể lọc và sắp xếp, tiện hơn netstat khi máy mở hàng chục port. Mở PowerShell bằng cách bấm chuột phải vào nút Start. Lệnh dưới đây liệt kê port TCP đang nghe theo thứ tự tăng dần:
Get-NetTCPConnection -State Listen | Sort-Object LocalPort
Muốn có thêm cột tên tiến trình, ghép với Get-Process:
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{Name='Process';Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object LocalPort
Kiểm tra port udp thì dùng Get-NetUDPEndpoint. UDP không có trạng thái Listen như TCP, nên lệnh TCP ở trên không liệt kê được port UDP. Thêm | Export-Csv ports.csv vào cuối lệnh để lưu danh sách ra file.
Xem port đang mở không cần gõ lệnh: Resource Monitor và TCPView
Resource Monitor có sẵn trong Windows: bấm Win + R, gõ resmon, mở tab Network, phần Listening Ports liệt kê từng phần mềm (cột Image), PID, địa chỉ, port, giao thức và trạng thái tường lửa. Mỗi dòng ứng với một port đang có phần mềm lắng nghe.
TCPView là công cụ miễn phí của Microsoft Sysinternals, hiện cả port đang nghe lẫn kết nối đang mở theo thời gian thực. Chỉ tải bản gốc từ trang Sysinternals, không tải bản chia sẻ lại trên diễn đàn.
Tìm và tắt phần mềm đang chiếm port
Khi phần mềm báo port đã bị chiếm, bạn kiểm tra port đang sử dụng theo 3 bước: tìm PID đang giữ port, đổi PID thành tên phần mềm, rồi dừng phần mềm hoặc dịch vụ đó, hoặc đổi port trong cài đặt của một trong hai bên. Không cần bật lại máy.
- Tìm PID:
netstat -ano | findstr :80hoặcGet-NetTCPConnection -LocalPort 80. - Ra tên phần mềm: Task Manager, tab Details, hoặc
Get-Process -Id 7344. - Xử lý: tắt phần mềm, dừng dịch vụ trong Services (
services.msc), hoặc đổi port.
XAMPP báo port 80 hoặc 443 đã được dùng
Apache trong XAMPP cần port 80 và 443. Nếu PID 4 (tiến trình System) đang giữ port 80, port đó thường thuộc một thành phần web của Windows như IIS (dịch vụ World Wide Web Publishing Service). Dừng dịch vụ đó trong Services, đừng tìm cách tắt PID 4. Hoặc đổi port Apache: trong XAMPP Control Panel bấm Config cạnh Apache, mở httpd.conf, sửa Listen 80 thành Listen 8080 rồi chạy lại Apache. Port 443 nằm trong httpd-ssl.conf.
SQL Server không nhận kết nối port 1433
Theo tài liệu cấu hình port của SQL Server, instance mặc định nghe TCP 1433, còn instance có tên dùng port động, tức chọn port trống mỗi lần dịch vụ chạy. Gõ netstat -ano | findstr :1433. Không thấy dòng nào thì mở SQL Server Configuration Manager, mục SQL Server Network Configuration, Protocols for tên instance, bật TCP/IP, đặt TCP Port ở tab IP Addresses rồi chạy lại dịch vụ SQL Server. Kết nối bằng tên instance cần thêm dịch vụ SQL Server Browser.
Remote Desktop port 3389
Sau khi bật Remote Desktop, lệnh netstat -ano | findstr :3389 phải có dòng LISTENING. Không có thì Remote Desktop chưa bật hoặc đã đổi port. Đừng mở thẳng 3389 ra internet trên modem; trang kiểm tra port đã giải thích lý do.
Gặp port lạ, bấm chuột phải vào tiến trình trong Task Manager, chọn Open file location để xem đường dẫn file. File mang tên quen nhưng nằm ở thư mục lạ là dấu hiệu đáng ngờ. Quét bằng phần mềm diệt virus thay vì tự xóa file hệ thống.
Kiểm tra port đang mở trên Linux, Ubuntu
Kiểm tra port đang mở linux bằng lệnh sudo ss -tulpn: lệnh in mọi port TCP và UDP đang có chương trình lắng nghe, kèm tên chương trình và PID. Theo trang hướng dẫn ss(8), -t là TCP, -u là UDP, -l chỉ lấy socket đang nghe, -p hiện tiến trình, -n giữ dạng số.
sudo ss -tulpn
sudo ss -tlpn | grep :80
sudo lsof -i :80
Đọc cột Local Address:Port để biết port, cột Process để biết chương trình, ví dụ users:(("nginx",pid=912,fd=6)). Lệnh cũ netstat -tulpn chỉ chạy khi đã cài gói net-tools (sudo apt install net-tools). Ubuntu có sẵn ss, nên kiểm tra port ubuntu bằng ss là gọn nhất.
Gõ sudo ufw status verbose để xem ufw cho phép port nào. Với VPS, nhà cung cấp thường có thêm tường lửa riêng trên trang quản trị, port phải được cho phép ở cả hai nơi.
Cột địa chỉ cho biết ai được phép kết nối, trên cả Windows lẫn Linux:
| Địa chỉ hiện ra | Ai kết nối được |
|---|---|
| 0.0.0.0:port hoặc [::]:port | Mọi card mạng, máy khác vào được nếu tường lửa cho phép |
| 127.0.0.1:port hoặc [::1]:port | Chỉ phần mềm trên chính máy đó |
| 192.168.1.20:port | Chỉ qua card mạng có IP đó |
Phần mềm chỉ nghe trên localhost 127.0.0.1 thì máy khác trong nhà không mở được, dù tường lửa đã cho qua.
Kiểm tra port trong mạng LAN và kiểm tra thông port
Cách làm: đứng ở một máy khác cùng mạng và thử kết nối tới IP LAN cùng số port của máy cần kiểm tra. Trên Windows dùng Test-NetConnection, trên Linux và macOS dùng nc -vz. Kết quả thông nghĩa là phần mềm đang nghe và tường lửa của máy đích đã cho qua.
Test-NetConnection 192.168.1.64 -Port 8000
Với PowerShell, đọc dòng TcpTestSucceeded : True (thông) hoặc False (không thông), theo tài liệu Test-NetConnection. Dùng được cho camera, máy chủ SQL hay máy chạy Pi Node.
Lệnh telnet kiểm tra port vẫn dùng được, nhưng Windows không bật sẵn Telnet Client. Bật bằng Windows Features (mục Telnet Client) hoặc chạy CMD quyền quản trị với lệnh dism /online /Enable-Feature /FeatureName:TelnetClient. Sau đó gõ telnet 192.168.1.64 8000: màn hình chuyển đen trống là thông, báo "Could not open connection" là không thông. Test-NetConnection có sẵn nên tiện hơn. Trên Linux hoặc macOS:
nc -vz 192.168.1.64 8000
Đọc kết quả theo hai trường hợp. Thông trong LAN mà từ internet không thông: lỗi ở modem, NAT hoặc nhà mạng. Không thông ngay trong LAN: tường lửa của máy đích đang chặn, hoặc phần mềm chỉ nghe 127.0.0.1. Chỉ kiểm tra thiết bị trong mạng của bạn hoặc mạng bạn được giao quản lý.
Mở port trên tường lửa Windows và Ubuntu
Trên Windows, tạo luật Inbound cho đúng port và giao thức trong Windows Defender Firewall with Advanced Security (gõ wf.msc), mục Inbound Rules, New Rule, chọn Port. Hoặc chạy PowerShell quyền quản trị:
New-NetFirewallRule -DisplayName "Camera 8000" -Direction Inbound -Protocol TCP -LocalPort 8000 -Action Allow
Trên Ubuntu dùng sudo ufw allow 8000/tcp. Chỉ mở đúng port cần dùng, không tắt hẳn tường lửa.
Kiểm tra port từ internet sau khi đã mở trên modem
Sau khi máy đã nghe port và thông trong LAN, bước cuối là kiểm tra từ internet. Lấy IP public ở trang chủ CheckIP, nhập IP đó cùng số port vào công cụ kiểm tra port. Kết quả Mở là người ngoài đã vào được. Máy chạy Pi Node cần kiểm tra cả dải port riêng, các bước có ở bài check port Pi Node.
Nếu chưa tạo luật NAT, xem hướng dẫn mở port modem Viettel, VNPT, FPT. Kết quả Đóng hoặc Bị lọc, cùng các nguyên nhân như modem 2 lớp hay CGNAT, đã có trên trang kiểm tra port nên không nhắc lại ở đây.
Câu hỏi thường gặp
Máy tính mở nhiều port như 135, 445 có nguy hiểm không?
Thường là không. Port 135 là dịch vụ RPC và 445 là chia sẻ file SMB của Windows, máy nào cũng có. Nguy hiểm chỉ đến khi các port này lộ ra internet. Modem gia đình mặc định không chuyển kết nối từ ngoài vào máy tính nếu bạn chưa mở port hoặc chưa có phần mềm tự mở bằng UPnP.
Cách đóng port đang mở trên Windows?
Dừng phần mềm hoặc dịch vụ đang nghe port đó, và tắt chế độ tự chạy trong Services nếu không còn dùng. Windows không có công tắc đóng port riêng khi phần mềm vẫn chạy. Nếu vẫn cần phần mềm nhưng muốn chặn máy khác, tạo luật Inbound kiểu Block trong Windows Defender Firewall thay vì tắt tường lửa.
Kiểm tra port trên macOS thế nào?
Mở Terminal và gõ sudo lsof -nP -iTCP -sTCP:LISTEN. Cột COMMAND là tên chương trình, PID là mã tiến trình, cột NAME có dạng *:5000 nghĩa là đang nghe port 5000 trên mọi card mạng. Lọc một port bằng sudo lsof -nP -iTCP:5000 -sTCP:LISTEN.
Vì sao netstat có LISTENING mà kiểm tra online vẫn báo đóng?
LISTENING chỉ chứng minh phần mềm đã nghe port trên máy. Kết nối từ internet còn phải qua tường lửa của máy, luật NAT trên modem và đường mạng của nhà mạng. Đường mạng dùng CGNAT thì nhiều thuê bao chung một IP public, kết nối từ ngoài không tới được modem nhà bạn dù đã NAT đúng.
Kiểm tra port có cần cài phần mềm không?
Không. Netstat, PowerShell và Resource Monitor có sẵn trên Windows 10, Windows 11 và Windows Server, còn ss có sẵn trên Ubuntu. TCPView chỉ là lựa chọn thêm cho ai muốn xem kết nối theo thời gian thực. Kiểm tra từ internet thì cần một máy ở ngoài mạng nhà bạn, việc công cụ online làm thay.








