Hướng dẫn 3 cách check Port VPS mở (open) hay đóng (close)

Bạn đang cần kiểm tra các port VPS trên CentOS 7 để xem chúng có đang hoạt động bình thường? Hoặc bạn đang cần mở một Port Vps trên CentOS nó có đang hoạt động khi bạn thấy dấu hiệu bất thường? Cùng LANIT theo dõi các cách kiểm tra Port VPS và mở Port Vps trên CentOS 7 với các bước đơn giản sau đây nhé!

Bạn vừa cấu hình xong một dịch vụ web hay cài đặt một cơ sở dữ liệu trên VPS, nhưng khi truy cập vào thì trình duyệt lại báo lỗi “Connection Timed Out”? Rất có thể, “cánh cửa” (Port) kết nối của bạn vẫn đang bị đóng chặt.

Trong quản trị máy chủ, việc check Port VPS không chỉ là một kỹ năng cơ bản mà còn là bước “bắt bệnh” đầu tiên và quan trọng nhất khi gặp sự cố kết nối. Cho dù bạn đang sử dụng Linux hay Windows, việc biết cách kiểm tra xem một Port đang mở (Open) hay bị chặn (Filtered) bởi Firewall sẽ giúp bạn tiết kiệm hàng giờ đồng hồ loay hoay vô ích.

Tại sao cần phải Check Port trên VPS?

Việc check port (kiểm tra cổng) trên VPS là một bước kỹ thuật cực kỳ quan trọng, giống như việc bạn kiểm tra xem các cửa ra vào trong một ngôi nhà có đang khóa hay mở đúng ý mình hay không.

1. Đảm bảo dịch vụ đang hoạt động

Khi bạn cài đặt một dịch vụ trên VPS (ví dụ: Web Server, Database, Mail Server), mỗi dịch vụ đó sẽ “lắng nghe” trên một cổng cụ thể. Ví dụ: Web server thường chạy trên port 80 (HTTP) hoặc 443 (HTTPS). Nếu bạn không thể truy cập website, việc check port sẽ giúp xác định xem dịch vụ đó đã thực sự khởi động và đang mở cổng để đón nhận kết nối hay chưa.

2. Kiểm tra cấu hình Firewall (Tường lửa)

Đây là lý do phổ biến nhất. Đôi khi dịch vụ của bạn đã chạy bên trong VPS, nhưng bạn vẫn không thể truy cập từ bên ngoài. Nguyên nhân thường do tường lửa (UFW, FirewallD, hoặc Security Group của nhà cung cấp Cloud) đang chặn cổng đó. Check port giúp bạn biết cổng đang ở trạng thái Open (Mở), Closed (Đóng) hay Filtered (Bị chặn bởi tường lửa).

3. Tăng cường bảo mật (Security)

Việc check port giúp bạn phát hiện các “lỗ hổng” không đáng có.

  • Quản lý cổng thừa: Bạn có thể phát hiện ra các dịch vụ chạy ngầm hoặc các cổng mặc định chưa được đóng (như port 21 cho FTP, port 3306 cho MySQL). Những cổng này nếu không cần thiết mà vẫn mở sẽ là mục tiêu cho các cuộc tấn công Brute Force hoặc khai thác lỗ hổng.
  • Phát hiện Malware: Nếu bạn thấy một cổng lạ đang mở và có lưu lượng truy cập, đó có thể là dấu hiệu VPS đã bị nhiễm mã độc hoặc bị lợi dụng làm botnet.

4. Xử lý sự cố kết nối (Troubleshooting)

Khi thực hiện kết nối giữa các Server với nhau (ví dụ: kết nối từ Web Server tới một Database Server riêng biệt), việc check port giúp bạn khoanh vùng lỗi:

  • Lỗi do sai IP?
  • Lỗi do dịch vụ chưa chạy?
  • Hay lỗi do nhà mạng/ISP chặn cổng?

Hướng dẫn 3 cách chi tiết check Port VPS

Dưới đây là 3 cách chi tiết để check Port VPS vô cùng hiệu quả.

I. Check Port VPS bằng công cụ online (nhanh nhất)

Công cụ check Port online

Sử dụng các công cụ online để check port là cách nhanh nhất để xác minh xem các thiết lập tường lửa (firewall) hoặc cấu hình dịch vụ trên VPS của bạn đã thực sự “thông” ra Internet hay chưa. Dưới đây là các công cụ check port online phổ biến, tất cả đều miễn phí và không cần cài đặt:

  • YouGetSignal (Port Forwarding Tester): Giao diện cực kỳ đơn giản, tự động nhận diện IP máy tính của bạn (bạn chỉ cần thay bằng IP của VPS).
  • Ping.eu (Port Check): Công cụ đa năng, tốc độ phản hồi rất nhanh.
  • CanYouSeeMe.org: Một trong những trang web đời đầu và vẫn cực kỳ ổn định để kiểm tra các cổng phổ biến.
  • PortChecker.co: Cho phép kiểm tra cùng lúc nhiều cổng hoặc kiểm tra các cổng đặc biệt.
  • IPVOID (TCP Port Scanner): Hữu ích nếu bạn muốn quét nhanh một danh sách các cổng quan trọng (Common Ports) thay vì nhập từng cái.

Quy trình check port chung trên các trang web này thường gồm 3 bước:

  1. Remote Address: Nhập địa chỉ IP Public của VPS.
  2. Port Number: Nhập số cổng bạn muốn kiểm tra (Ví dụ: 80, 443, 22, 3306).
  3. Check/Go: Nhấn nút để hệ thống bắt đầu gửi gói tin kiểm tra.

Cách đọc kết quả như sau:

  • Open (Mở – Màu xanh): Cổng đã thông. Dịch vụ đang chạy và tường lửa đã cho phép truy cập từ bên ngoài.
  • Closed (Đóng – Màu đỏ): Cổng không mở. Có thể do dịch vụ chưa chạy hoặc bạn chưa cấu hình mở cổng trên VPS.
  • Filtered/Timed Out (Bị chặn): Thường do tường lửa (Firewall) của nhà cung cấp Cloud (như AWS Security Group, Google Cloud Firewall) đang chặn gói tin ngay từ vòng ngoài, khiến công cụ không thể xác định được trạng thái bên trong.

II. Check Port VPS trên Linux (CentOS, Ubuntu, Debian)

Để kiểm tra port (cổng) trực tiếp trên dòng lệnh (Terminal) của Linux, bạn có thể thực hiện theo hai hướng: kiểm tra xem dịch vụ có đang chạy không (Internal) và kiểm tra xem tường lửa có đang chặn không (External/Firewall). Dưới đây là các lệnh phổ biến và hiệu quả nhất cho CentOS, Ubuntu và Debian.

1. Kiểm tra các Port đang “Lắng nghe” (Listening)

Lệnh này giúp bạn biết dịch vụ (như Nginx, MySQL, SSH) đã khởi động và chiếm giữ port thành công hay chưa.

Sử dụng lệnh ss (Khuyên dùng – Nhanh và hiện đại hơn): Hầu hết các bản phân phối Linux mới hiện nay đều ưu tiên ss thay vì netstat.

ss -tulpn
  • -t: Hiển thị các cổng TCP.
  • -u: Hiển thị các cổng UDP.
  • -l: Chỉ hiển thị các cổng đang ở trạng thái LISTENING.
  • -p: Hiển thị tên tiến trình (process) đang sử dụng cổng đó.
  • -n: Hiển thị số cổng (ví dụ: 80) thay vì tên dịch vụ (ví dụ: http).

Sử dụng lệnh netstat (Truyền thống): Nếu VPS của bạn chưa có, bạn cần cài đặt gói net-tools.

netstat -tupln

Sử dụng lsof (Kiểm tra cụ thể 1 port): Nếu bạn chỉ muốn xem port 80 đang do thằng nào nắm giữ:

lsof -i :80

2. Kiểm tra cấu hình Tường lửa (Firewall)

Dịch vụ có thể đang chạy (LISTEN) nhưng nếu tường lửa chưa mở, bạn vẫn không thể truy cập từ bên ngoài.

Trên Ubuntu/Debian (Sử dụng UFW):

sudo ufw status

Nếu bạn thấy Status: active và port của bạn không có trong danh sách, hãy dùng lệnh: sudo ufw allow [port/tcp]

Trên CentOS / RHEL (Sử dụng FirewallD):

sudo firewall-cmd --list-all

Để mở port trên CentOS: sudo firewall-cmd --permanent --add-port=80/tcp sau đó sudo firewall-cmd --reload.

3. Kiểm tra kết nối từ xa (Connectivity Test)

Nếu bạn đang ở trên một Server A và muốn check xem Port của Server B có thông hay không:

Sử dụng nc (Netcat) – Cực kỳ mạnh mẽ:

nc -zv [Địa-chỉ-IP] [Port]

*Ví dụ: nc -zv 1.2.3.4 443

  • Kết quả thành công: Connection to [IP] port [port] [tcp/https] succeeded!
  • Kết quả thất bại: Connection refused hoặc Timed out.

Sử dụng telnet (Đơn giản):

telnet [Địa-chỉ-IP] [Port]

Nếu màn hình chuyển sang màu đen hoặc báo “Connected”, tức là port đã mở.

Tóm tắt nhanh: Khi nào dùng lệnh nào?

Mục tiêuLệnh nên dùng
Xem tất cả port đang chạy trên máyss -tulpn
Xem port 80 đang chạy bởi app nàolsof -i :80
Kiểm tra xem firewall Ubuntu có mở port khôngufw status
Kiểm tra từ máy này sang máy kianc -zv IP Port

*Mẹo nhỏ: Nếu bạn check bên trong thấy Port đang chạy (ss báo LISTEN) nhưng check bên ngoài (nc hoặc Online Tools) báo Closed, thì 99% lỗi nằm ở Tường lửa (Firewall của hệ điều hành hoặc Security Group của nhà cung cấp VPS như AWS, Google Cloud, DigitalOcean).

III. Check Port VPS trên Windows Server

Khác với Linux, Windows Server cung cấp cho bạn cả giao diện đồ họa (GUI) lẫn dòng lệnh (PowerShell/CMD) rất mạnh mẽ để kiểm tra cổng. Dưới đây là các cách thực hiện từ cơ bản đến nâng cao:

1. Kiểm tra Port đang mở bằng Command Line

Đây là cách nhanh nhất để xem dịch vụ nào đang chiếm dụng cổng nào bên trong VPS.

Sử dụng CMD (Truyền thống)

Bạn mở CMD (Run as Administrator) và nhập:

netstat -ano | findstr LISTENING
  • -a: Hiển thị tất cả kết nối và cổng đang lắng nghe.
  • -n: Hiển thị địa chỉ và số cổng dưới dạng số.
  • -o: Hiển thị PID (Process ID) của phần mềm đang dùng cổng đó.

*Mẹo: Để xem một port cụ thể (ví dụ 80), dùng: netstat -ano | findstr :80

Sử dụng PowerShell (Hiện đại)

PowerShell cung cấp thông tin chi tiết và dễ đọc hơn:

Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess

2. Sử dụng giao diện đồ họa (GUI)

Nếu bạn không muốn gõ lệnh, Windows có sẵn công cụ cực hay là Resource Monitor.

  • Nhấn chuột phải vào thanh Taskbar, chọn Task Manager.
  • Chuyển sang tab Performance, sau đó nhấn vào dòng Open Resource Monitor ở phía dưới.
  • Trong cửa sổ mới, chọn tab Network.
  • Mở phần Listening Ports. Tại đây bạn sẽ thấy danh sách tất cả các ứng dụng, Port chúng đang dùng và trạng thái Firewall (có bị chặn hay không).

3. Kiểm tra cấu hình Windows Firewall

Dù dịch vụ đang ở trạng thái “Listening”, nhưng nếu chưa có luật (Rule) cho phép trong Firewall thì bên ngoài vẫn không thể truy cập.

  • Mở Start, tìm kiếm Windows Defender Firewall with Advanced Security.
  • Chọn Inbound Rules (Quy tắc chiều vào).
  • Tìm xem có Port nào bạn cần (ví dụ: Port 80, 443, 3389) đang được phép (Allow) hay không.
  • Nếu chưa có, bạn phải chọn New Rule… để mở cổng thủ công.

4. Kiểm tra kết nối từ xa (Lệnh thay thế Telnet)

Trên Windows Server hiện đại, lệnh telnet thường bị tắt mặc định. Thay vào đó, bạn nên dùng Test-NetConnection (TNC) trong PowerShell. Đây là công cụ “vạn năng” để check port.

Test-NetConnection -ComputerName [IP_Hoặc_Domain] -Port [Số_Port]

Kết quả trả về:

  • TcpTestSucceeded : True: Cổng đã thông, kết nối ngon lành.
  • TcpTestSucceeded : False: Cổng bị đóng hoặc bị chặn.

Các lỗi thường gặp khi Port bị đóng

Khi một port trên VPS bị đóng (do chưa mở firewall hoặc dịch vụ chưa chạy), hệ thống sẽ không trả về một thông báo duy nhất mà tùy thuộc vào công cụ bạn dùng, nó sẽ hiển thị các mã lỗi khác nhau. Dưới đây là các “triệu chứng” điển hình giúp bạn bắt bệnh nhanh:

1. Lỗi “Connection Refused” (Từ chối kết nối)

Đây là lỗi phổ biến nhất khi bạn dùng các công cụ dòng lệnh như telnet, curl hoặc nc.

  • Ý nghĩa: VPS của bạn vẫn hoạt động, gói tin đã đến được server, nhưng server “lắc đầu” vì không có ứng dụng nào đang lắng nghe (Listen) ở cổng đó hoặc Firewall chặn theo kiểu từ chối thẳng thừng.
  • Thông báo thường gặp:
    • ssh: connect to host [IP] port 22: Connection refused
    • telnet: Unable to connect to remote host: Connection refused

2. Lỗi “Connection Timed Out” (Hết thời gian chờ)

Lỗi này cực kỳ gây ức chế vì bạn phải đợi một lúc lâu mới thấy thông báo.

  • Ý nghĩa: Gói tin bạn gửi đi giống như bị “rơi vào hố đen”. Nó không bao giờ tới được đích hoặc bị Firewall (thường là Firewall ngoài của nhà cung cấp Cloud như AWS Security Group) âm thầm tiêu hủy (Drop) mà không phản hồi lại.
  • Thông báo thường gặp:
    • ssh: connect to host [IP] port 22: Connection timed out
    • Operation timed out

3. Lỗi trên trình duyệt Web (Port 80/443)

Khi bạn cố gắng truy cập website nhưng port web bị đóng, trình duyệt sẽ hiển thị các mã lỗi kinh điển:

  • ERR_CONNECTION_REFUSED: Website không phản hồi (thường do Web Server như Nginx/Apache bị tắt).
  • ERR_CONNECTION_TIMED_OUT: Trình duyệt đợi quá lâu mà không nhận được dữ liệu (thường do Firewall chặn).
  • This site can’t be reached: Một thông báo chung chung của Chrome khi không thể thiết lập kết nối.

4. Lỗi kết nối Remote Desktop (Windows – Port 3389)

Nếu bạn dùng Windows Server và port 3389 bị đóng, bạn sẽ thấy hộp thoại thông báo:

“Remote Desktop can’t connect to the remote computer for one of these reasons…”

Điều này có nghĩa là hoặc VPS chưa bật Remote Desktop, hoặc Firewall của Windows/Nhà cung cấp chưa cho phép cổng này.

5. Lỗi kết nối Cơ sở dữ liệu (Database)

Nếu bạn kết nối từ máy cá nhân đến MySQL (3306) hoặc PostgreSQL (5432) trên VPS:

  • MySQL: Can't connect to MySQL server on 'IP' (111) hoặc 10061 (Unknown error).
  • PostgreSQL: could not connect to server: Connection refused. Is the server running on host... and accepting TCP/IP connections on port 5432?

*Mẹo “bắt bệnh”:

  • Bệnh ở dịch vụ: Dùng lệnh ss -tulpn trên VPS. Nếu không thấy port đó xuất hiện trong danh sách LISTEN, hãy khởi động lại ứng dụng.
  • Bệnh ở Firewall: Nếu ss báo có port đang chạy nhưng check Online vẫn báo đóng, hãy kiểm tra lại bảng luật của Firewall.

Việc kiểm tra và quản lý Port là một phần không thể thiếu trong quy trình vận hành VPS ổn định. Hy vọng qua những hướng dẫn trên, bạn đã có thể tự mình check Port VPS một cách thuần thục, từ đó nhanh chóng khắc phục các sự cố về đường truyền hay cấu hình dịch vụ.

Đánh giá bài viết

Nguyễn Đức Hòa

Xin chào, mình là Nguyễn Đức Hoà, hiện đang đảm nhận vị trí Trưởng phòng kỹ thuật tại LANIT. Với 8 năm kinh nghiệm trong mảng System, Network, Security, mình luôn hướng đến việc tìm kiếm và áp dụng các giải pháp kỹ thuật tiên tiến nhất cho mọi dự án. Công việc của mình không chỉ dừng lại ở việc quản lý mà còn mang đến cho khách hàng những giải pháp lưu trữ dữ liệu tốt nhất hiện nay. Rất hy vọng những kinh nghiệm và chia sẻ của mình sẽ mang lại nhiều giá trị hữu ích cho các bạn.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!