5 Cách Kiểm Tra Port VPS Trên CentOS 7 & Cách Mở Port
Hướng dẫn 5 cách kiểm tra port (cổng) đang mở hay đóng trên VPS CentOS 7 bằng ss, netstat, lsof, nmap, telnet/nc — kèm cách mở port qua firewalld và iptables chi tiết.
Port (cổng) trên VPS là gì?
Port là "cổng" để các dịch vụ giao tiếp qua mạng. Mỗi dịch vụ dùng một port riêng: web HTTP 80, HTTPS 443, SSH 22, MySQL 3306, FTP 21, RDP 3389... Muốn dịch vụ truy cập được từ bên ngoài, port phải vừa có ứng dụng đang LẮNG NGHE (listening), vừa được firewall CHO PHÉP.
Bài viết chia 2 phần: (1) 5 cách kiểm tra port trên CentOS 7, (2) cách mở port. Tất cả lệnh chạy với quyền root (hoặc thêm sudo).
Phần 1 — 5 cách kiểm tra port trên CentOS 7
Cách 1: Lệnh ss (nhanh, khuyên dùng)
Liệt kê mọi port đang lắng nghe: ss -tulnp
Trong đó: t = TCP, u = UDP, l = listening, n = hiện số port, p = hiện tiến trình. Kiểm tra một port cụ thể, ví dụ port 80: ss -tulnp | grep :80
Cách 2: Lệnh netstat
CentOS 7 tối giản chưa có sẵn, cài trước: yum install -y net-tools
Sau đó xem port đang mở: netstat -tulnp
Lọc một port, ví dụ MySQL 3306: netstat -tulnp | grep :3306
Cách 3: Lệnh lsof
Xem tiến trình nào đang giữ port 80: lsof -i :80
Liệt kê tất cả port đang LISTEN: lsof -i -P -n | grep LISTEN
Cách 4: Lệnh nmap (quét port)
Cài nmap: yum install -y nmap
Quét vài port ngay trên VPS: nmap -p 80,443,22 localhost
Quét từ máy khác để biết port có mở ra ngoài không: nmap -p 80 IP_CUA_VPS
Cách 5: telnet hoặc nc (kiểm tra port có thông không)
Kiểm tra từ máy bất kỳ xem có kết nối tới port được không.
- Dùng telnet: telnet IP_CUA_VPS 80
- Dùng nc (netcat): nc -zv IP_CUA_VPS 443
Nếu hiện "Connected" hoặc "succeeded" là port đã mở và thông. Nếu treo lâu rồi "timed out" / "refused" là port đang bị đóng hoặc dịch vụ chưa chạy.
Phần 2 — Cách mở port trên CentOS 7
CentOS 7 mặc định dùng firewalld để quản lý tường lửa.
Kiểm tra firewall có đang chạy không
systemctl status firewalld
Nếu đang "active (running)" thì dùng firewalld bên dưới. Nếu hệ thống dùng iptables thì xem mục iptables.
Mở port bằng firewalld (khuyên dùng)
- Mở một port cụ thể, ví dụ 8080/TCP: firewall-cmd --permanent --add-port=8080/tcp
- Hoặc mở theo tên dịch vụ: firewall-cmd --permanent --add-service=http
- Nạp lại để áp dụng: firewall-cmd --reload
- Kiểm tra port/dịch vụ đang mở: firewall-cmd --list-all
Tham số --permanent giúp giữ cấu hình sau khi reboot. Nếu bỏ --permanent thì chỉ mở tạm tới khi khởi động lại.
Mở port bằng iptables (nếu không dùng firewalld)
- Cho phép port 8080/TCP: iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
- Lưu lại cấu hình: service iptables save
- Khởi động lại iptables: systemctl restart iptables
Đóng (gỡ) một port
firewall-cmd --permanent --remove-port=8080/tcp rồi chạy firewall-cmd --reload
Phần 3 — Mở rồi mà vẫn không truy cập được?
Kiểm tra lần lượt các nguyên nhân hay gặp:
- Dịch vụ đã chạy và đang lắng nghe chưa: ss -tulnp xem có dòng cho port đó không.
- Ứng dụng bind nhầm địa chỉ: nếu bind 127.0.0.1 thì chỉ truy cập nội bộ, phải bind 0.0.0.0 để ra ngoài.
- SELinux chặn: chạy getenforce; nếu là Enforcing, mở context cho port, ví dụ: semanage port -a -t http_port_t -p tcp 8080
- Tường lửa tầng nhà cung cấp / cloud: nhiều VPS cloud (AWS, GCP, Azure, một số nhà VN) còn có Security Group / firewall ngoài, phải mở port ở đó nữa.
- Nhập đúng IP và port chưa, có gõ nhầm cổng không.
Kết luận
Để kiểm tra port trên CentOS 7, nhanh nhất là ss -tulnp (xem nội bộ) và nmap / nc từ máy khác (xem ra ngoài). Để mở port, dùng firewalld: add-port rồi reload. Nếu mở rồi vẫn không vào được, kiểm tra dịch vụ có listening, SELinux và firewall tầng nhà cung cấp.
Nếu bạn đang thuê VPS tại Tdhost và cần hỗ trợ mở port, cấu hình firewall hay kiểm tra dịch vụ, đội ngũ kỹ thuật hỗ trợ 24/7 — liên hệ ngay để được xử lý nhanh.
