3 Cách Kiểm Tra Port Đang Mở Trên Ubuntu (Check Open Port) Nhanh Nhất
Ở bài viết trước, mình đã hướng dẫn các bạn cách mở Port trên Ubuntu. Tiếp nối chuỗi bài viết về quản trị hệ thống, hôm nay VPSRE sẽ hướng dẫn các bạn cách kiểm tra những Port nào đang thực sự mở (Check Open Port).
Việc nắm rõ chính xác Port nào đang ở trạng thái “lắng nghe” (listening) và dịch vụ nào đang chiếm dụng chúng là cực kỳ quan trọng. Điều này không chỉ giúp bạn kiểm soát bảo mật (ngăn chặn các kết nối trái phép) mà còn là bước thiết yếu để khắc phục sự cố kết nối mạng hoặc cấu hình tường lửa (Firewall) chính xác.
Hãy cùng VPSRE đi sâu vào 3 phương pháp kiểm tra Port đang mở trên Ubuntu hiệu quả nhất hiện nay nhé!

1. Sử dụng lệnh ss (Socket Statistics) – Khuyên dùng
Đây là công cụ hiện đại, tốc độ cao và được mặc định cài sẵn trên các bản phân phối Linux mới. Để kiểm tra toàn bộ các cổng đang mở, bạn sử dụng lệnh sau:
ss -tuln
Giải thích tham số:
-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 socket đang ở trạng thái Listening (đang mở).-n: Hiển thị địa chỉ và số cổng dưới dạng số (giúp lệnh chạy nhanh hơn do không cần phân giải tên miền).
Nếu bạn muốn lọc tìm một cổng cụ thể (ví dụ cổng 22 của SSH), hãy kết hợp với lệnh grep:
ss -tuln | grep :22
2. Sử dụng lệnh netstat (Network Statistics)
Netstat là công cụ truyền thống, “huyền thoại” đối với các quản trị viên Linux lâu năm. Mặc dù ss được khuyến nghị thay thế trên các hệ thống hiện đại, nhưng netstat vẫn rất phổ biến nhờ tính dễ hiểu.
Lưu ý: Nếu máy bạn chưa có, hãy cài đặt bằng lệnh: sudo apt install net-tools
Lệnh kiểm tra cơ bản:
sudo netstat -tuln
Nếu bạn muốn biết chính xác PID (Process ID) và Tên chương trình nào đang chiếm dụng cổng đó, hãy thêm tham số -p (Yêu cầu quyền sudo):
sudo netstat -tulnp
3. Sử dụng lệnh lsof (List Open Files)
Trong Linux, “mọi thứ đều là file”, và Socket mạng cũng không ngoại lệ. Lệnh lsof cực kỳ mạnh mẽ để truy vết tiến trình đang mở file/port.
Lệnh hiển thị các kết nối TCP/UDP đang lắng nghe:
sudo lsof -i -P -n | grep LISTEN
Giải thích:
-i: Liệt kê các file liên quan đến mạng.-P: Giữ nguyên số cổng, không chuyển sang tên dịch vụ.-n: Giữ nguyên IP, không chuyển sang Hostname.| grep LISTEN: Chỉ lọc lấy các dòng có trạng thái là LISTEN.
Để kiểm tra nhanh một cổng cụ thể (Ví dụ cổng 80 – HTTP):
sudo lsof -i :80
4. Các phương pháp kiểm tra khác (Online & Tool tự viết)
Ngoài các lệnh CMD trên Server, bạn có thể kiểm tra từ góc độ “người dùng bên ngoài” (External Check) để xem Firewall có đang chặn hay không.
A. Sử dụng công cụ Online
- YouGetSignal’s Port Forwarding Tester: Công cụ này tự động nhận diện IP Public của bạn và kiểm tra xem cổng (ví dụ: 80, 443, 22) đang Open hay Closed.
- CanYouSeeMe.org: Một giải pháp thay thế đơn giản và hiệu quả tương tự.
B. Sử dụng Python Script (Dành cho Dev)
Nếu bạn muốn tự tay “code” một công cụ quét cổng đơn giản, VPSRE chia sẻ đến bạn đoạn mã Python sau. Lưu file tên là port_scanner.py và chạy bằng lệnh python3 port_scanner.py:
import socket import sys import time
--- Cấu hình ---
Đổi địa chỉ IP này thành IP/Hostname bạn muốn kiểm tra (ví dụ: '127.0.0.1' cho máy chủ cục bộ)
TARGET_IP = '127.0.0.1'
Dải cổng muốn kiểm tra
START_PORT = 1 END_PORT = 1000
Timeout (Thời gian chờ kết nối)
TIMEOUT = 0.5
----------------
def scan_port(ip, port): """ Kiểm tra một cổng TCP cụ thể. """ try: # 1. Tạo một socket TCP s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(TIMEOUT)
# 2. Thử kết nối
result = s.connect_ex((ip, port))
# 3. Kiểm tra kết quả
if result == 0:
# Lấy tên dịch vụ nếu có thể
try:
service = socket.getservbyport(port, 'tcp')
except OSError:
service = "Unknown"
print(f"[+] Port {port} (TCP) is OPEN. Service: {service}")
return True
else:
# Cổng đóng hoặc bị lọc
# print(f"[-] Port {port} is Closed/Filtered.")
return False
except socket.gaierror:
print(f"Lỗi: Không thể phân giải Hostname/IP '{ip}'.")
sys.exit()
except socket.error as e:
print(f"Lỗi Socket: {e}")
sys.exit()
finally:
s.close()
def main_scanner(ip, start, end): """ Hàm chính để quét dải cổng. """ print(f"--- Bắt đầu quét cổng TCP trên Host: {ip} từ {start} đến {end} ---") start_time = time.time()
open_ports_count = 0
for port in range(start, end + 1):
# Bạn có thể thêm một thanh tiến trình nhỏ ở đây nếu muốn
if scan_port(ip, port):
open_ports_count += 1
end_time = time.time()
total_time = end_time - start_time
print("\n--- Hoàn thành quét ---")
print(f"Tổng số cổng mở tìm thấy: {open_ports_count}")
print(f"Thời gian thực hiện: {total_time:.2f} giây")
if name == "main": # Thay đổi các tham số nếu cần main_scanner(TARGET_IP, START_PORT, END_PORT)
Chúc các bạn thực hiện thành công! Đừng quên theo dõi VPSRE để cập nhật thêm nhiều kiến thức quản trị VPS hữu ích.
Kết nối ngay với chúng tôi:
Website: https://vpsre.net/
Hotline: 329 463 530
Facebook: Cộng đồng VPSRE
