Cách Tắt/Mở Port Trên VPS (Linux, Windows) Bằng Lệnh [2026]

Tóm tắt nhanh: Mở port trên VPS là thao tác cấu hình tường lửa (Firewall) để cho phép luồng dữ liệu đi vào (Inbound) hoặc đi ra (Outbound) qua một cổng giao tiếp cụ thể — ví dụ port 80 cho Web, port 22 cho SSH. Công cụ dùng sẽ khác nhau tùy hệ điều hành: Linux dùng UFW, FirewallD hoặc IPTables; Windows dùng Defender Firewall. Sau khi mở port trên OS, nếu VPS chạy trên nền Cloud (AWS, Azure, GCP), bạn bắt buộc phải mở thêm ở lớp Security Group bên ngoài.

  • Xác định đúng hệ điều hành để chọn đúng công cụ Firewall (UFW, FirewallD, hay IPTables).
  • Dùng lệnh allow để mở, delete/remove để tắt — cú pháp khác nhau tùy tool.
  • Nếu VPS chạy trên Cloud (AWS, Azure, GCP), bắt buộc mở thêm port tại Security Group của nhà cung cấp.
  • Sau khi mở xong, dùng netstat hoặc tool online để xác minh port thực sự thông.

Bạn vừa cài xong web server, database, hoặc game server trên VPS — nhưng truy cập từ bên ngoài thì báo Connection Refused hoặc request cứ Time out mãi không phản hồi. Khởi động lại dịch vụ không ăn thua. Ping đến IP thì vẫn thông. Vấn đề nằm ở chỗ khác: tường lửa đang chặn port giao tiếp của ứng dụng đó.

Bài viết này cung cấp chính xác các lệnh và thao tác cần thiết để mở hoặc tắt port trên mọi hệ điều hành VPS phổ biến — Ubuntu, CentOS, và Windows Server. Không giải thích lại VPS là gì, không lý thuyết dài dòng. Mỗi lệnh đều có chú thích rõ ý nghĩa để bạn hiểu mình đang làm gì, không chỉ copy-paste mù quáng.

Bảng tra cứu nhanh các Port VPS phổ biến cần mở

Trước khi gõ lệnh, xác định đúng số port và giao thức của dịch vụ mình cần mở. Bảng dưới đây tổng hợp các port thường dùng nhất theo chuẩn IANA — cơ quan quốc tế quản lý việc phân bổ số port trên toàn cầu.

Dịch vụ Số Port Giao thức
HTTP (Web) 80 TCP
HTTPS (Web bảo mật) 443 TCP
SSH (Quản trị Linux) 22 TCP
RDP (Remote Desktop Windows) 3389 TCP
FTP (Truyền file) 21 TCP
MySQL / MariaDB 3306 TCP
PostgreSQL 5432 TCP
DNS 53 TCP/UDP
SMTP (Email gửi đi) 25 / 587 TCP
Game Server (Steam / Source) 27015 TCP/UDP
Lưu ý: database port như 3306 (MySQL) không nên mở ra public internet trừ khi bạn biết mình đang làm gì. Chỉ mở với IP cụ thể hoặc để kết nối nội bộ trong cùng mạng VPS.

Hướng dẫn mở và tắt port trên VPS Linux (Theo từng Firewall)

Linux không có một lệnh duy nhất để mở port áp dụng cho tất cả distro. Ubuntu và Debian mặc định dùng UFW (Uncomplicated Firewall) — một lớp bọc thân thiện hơn bên trên IPTables. CentOS 7 trở lên và RHEL dùng FirewallD. Các bản Linux cũ hoặc môi trường minimal image đôi khi chỉ có IPTables thuần. Xác định đúng tool đang chạy trước khi gõ lệnh — nếu không, lệnh sẽ báo command not found hoặc tệ hơn là không có tác dụng gì nhưng không báo lỗi.

Để kiểm tra tool nào đang active trên VPS của bạn: chạy ufw status — nếu trả về kết quả, đó là UFW; chạy firewall-cmd --state — nếu trả về running, đó là FirewallD.

Lệnh thao tác với UFW (Dành cho Ubuntu, Debian)

UFW được kích hoạt mặc định trên Ubuntu 18.04 trở lên. Cú pháp đơn giản, dễ đọc, và phù hợp cho cả người mới lẫn sysadmin có kinh nghiệm.

Mở một port cụ thể:

sudo ufw allow 80/tcp

Lệnh trên mở port 80 theo giao thức TCP — phù hợp cho web server HTTP. Thay 80 bằng số port bạn cần, thay tcp bằng udp nếu dịch vụ dùng UDP (ví dụ: game server, DNS).

Mở port mà không chỉ định giao thức (mở cả TCP lẫn UDP):

sudo ufw allow 27015

Tắt (xóa) một rule đã mở:

sudo ufw delete allow 80/tcp

Kiểm tra trạng thái tường lửa và các rule đang active:

sudo ufw status verbose

Sau khi thêm rule, UFW áp dụng ngay lập tức — không cần reload. Đây là điểm khác biệt so với FirewallD ở phần tiếp theo.

Lệnh thao tác với FirewallD (Dành cho CentOS 7+, RHEL, AlmaLinux)

FirewallD hoạt động theo cơ chế zone — mỗi interface mạng thuộc về một zone, và rule được gắn vào zone đó. Điều này linh hoạt hơn UFW, nhưng cũng có thêm một bước mà người mới hay quên: sau khi thêm rule, phải reload để áp dụng vào runtime.

Mở port vĩnh viễn (sau reboot vẫn giữ):

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

Cờ –permanent ghi rule vào file cấu hình đĩa. Nếu bỏ cờ này, rule chỉ tồn tại trong session hiện tại và biến mất khi khởi động lại VPS — lỗi phổ biến nhất với FirewallD.

Tắt một port:

sudo firewall-cmd --permanent --remove-port=80/tcp
sudo firewall-cmd --reload

Kiểm tra danh sách port đang mở trong zone hiện tại:

sudo firewall-cmd --list-ports

Lệnh thao tác với IPTables (Dòng lệnh truyền thống)

IPTables là công cụ gốc, tồn tại trên hầu hết mọi distro Linux — UFW và FirewallD thực chất đều dùng IPTables bên dưới. Tuy nhiên, cú pháp phức tạp hơn và có một rủi ro nghiêm trọng cần biết.

Mở port bằng IPTables:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

⚠️ Cảnh báo quan trọng: Rule IPTables sẽ mất hoàn toàn sau khi reboot VPS nếu bạn không cài thêm gói iptables-persistent (Debian/Ubuntu) hoặc iptables-services (CentOS/RHEL) để lưu lại cấu hình. Nếu bạn không quen với IPTables, hãy dùng UFW hoặc FirewallD thay thế — hai công cụ đó tự xử lý việc lưu rule tự động.

Cách mở và tắt port trên VPS Windows Server qua giao diện đồ họa

Windows Server quản lý port thông qua Windows Defender Firewall with Advanced Security — một giao diện GUI đầy đủ chức năng, không cần gõ lệnh. Thao tác gồm 6 bước, áp dụng cho Windows Server 2016, 2019, và 2022.

  1. Mở Windows Defender Firewall with Advanced Security. Tìm kiếm tên đó trong Start Menu, hoặc chạy lệnh wf.msc trong hộp thoại Run (Win + R).
  2. Chọn “Inbound Rules” ở panel bên trái, sau đó click “New Rule…” ở panel bên phải.
  3. Chọn loại rule là “Port” → Next. Đây là trường hợp phổ biến nhất — bạn muốn mở một cổng cụ thể, không phải theo tên chương trình hay dịch vụ.
  4. Chọn giao thức TCP hoặc UDP, sau đó nhập số port cần mở vào ô Specific local ports (ví dụ: 3306 cho MySQL, 443 cho HTTPS). Có thể nhập nhiều port cách nhau bằng dấu phẩy, hoặc một dải port bằng dấu gạch ngang (VD: 8080-8090).
  5. Chọn “Allow the connection” → Next. Tick cả 3 ô (Domain, Private, Public) tùy môi trường — nếu không chắc, tick cả 3.
  6. Đặt tên cho rule — nên đặt tên rõ ràng như MySQL 3306 Inbound để dễ quản lý sau này → Finish.

Rule có hiệu lực ngay lập tức, không cần khởi động lại. Để tắt rule, vào lại Inbound Rules, tìm rule vừa tạo, chuột phải → Disable Rule hoặc Delete.

Tại sao đã mở port VPS thành công nhưng vẫn không kết nối được?

Nguyên nhân chính là do bạn chưa mở port ở lớp tường lửa ngoại vi (Security Group) của nhà cung cấp Cloud, hoặc ứng dụng bên trong VPS chưa được bật để lắng nghe (listen) trên port đó.

Đây là “bẫy Double Firewall” mà hầu hết các hướng dẫn trên mạng không nhắc đến. Nếu VPS của bạn chạy trên nền hạ tầng Cloud — AWS EC2, Google Cloud Compute Engine, Azure Virtual Machine — thì tường lửa OS (UFW, FirewallD) chỉ là lớp trong. Còn một lớp tường lửa ngoài nữa do nhà cung cấp kiểm soát: Security Groups (AWS), Firewall Rules (Google Cloud), hoặc Network Security Groups (Azure).

Luồng kết nối thực tế như sau: Client → Security Group của Cloud → Tường lửa OS → Ứng dụng. Nếu Security Group chặn, gói tin không bao giờ đến được UFW hay FirewallD để xử lý. Lệnh mở port của bạn đúng, nhưng vô nghĩa vì bị chặn từ vòng ngoài.

Cách khắc phục: Đăng nhập vào web portal của nhà cung cấp Cloud, tìm mục Security Group (AWS) hoặc Firewall (GCP) tương ứng với VPS đó, thêm rule Inbound cho phép port cần thiết từ IP nguồn phù hợp (hoặc 0.0.0.0/0 nếu cần mở public).

Nguyên nhân thứ hai ít gặp hơn nhưng cũng xảy ra: ứng dụng trong VPS chưa thực sự bind vào port đó. Kiểm tra bằng lệnh sudo netstat -tupln | grep 3306 — nếu không thấy dòng nào, MySQL chưa chạy hoặc đang bind sai interface. Mở port tường lửa mà ứng dụng không listen thì cũng không có tác dụng gì.

InterData

Thuê VPS Giá Rẻ — Toàn Quyền Quản Trị, Hỗ Trợ Linux & Windows

VPS InterData dùng CPU thế hệ mới, SSD NVMe U.2 tốc độ cao — môi trường ổn định để bạn cấu hình port, firewall, và triển khai bất kỳ ứng dụng nào mà không bị giới hạn.

  • CPU AMD EPYC / Intel Xeon thế hệ mới, SSD NVMe U.2 — I/O cao, không share disk
  • Hỗ trợ cài Linux (Ubuntu, CentOS, Debian) và Windows Server — toàn quyền root/admin
  • Backup định kỳ, băng thông lớn, hỗ trợ kỹ thuật thực chiến tại Việt Nam

Dùng Thử VPS Miễn Phí 07 Ngày →

FAQs — Các câu hỏi thường gặp khi quản lý Port VPS

Làm sao để kiểm tra port VPS đã thông chưa?

Có hai cách kiểm tra độc lập nhau. Từ bên trong VPS: chạy lệnh sudo netstat -tupln để xem danh sách các port đang được ứng dụng lắng nghe (listen). Nếu thấy dòng có port bạn vừa mở, tức là ứng dụng đang hoạt động đúng. Từ bên ngoài internet: dùng tool YouGetSignal Open Port Checker — nhập IP của VPS và số port cần kiểm tra. Nếu báo “open”, kết nối đã thông toàn bộ cả hai lớp firewall. Nếu báo “closed” dù lệnh đã chạy thành công, gần như chắc chắn còn lớp Security Group chưa mở.

Có nên thay đổi port mặc định SSH (22) và RDP (3389) không?

Nên — đây là biện pháp bảo mật cơ bản nhưng hiệu quả. Port 22 và 3389 bị botnet quét liên tục 24/7 để thử Brute-force mật khẩu. Chuyển SSH sang port ngẫu nhiên như 2222, 47891, hay bất kỳ số nào từ 1024–65535 sẽ loại bỏ gần như toàn bộ traffic tấn công tự động này — không phải vì port đó an toàn hơn về mặt kỹ thuật, mà vì botnet thường không quét port tùy chỉnh. Nhớ mở port mới trên firewall trước khi đổi file cấu hình SSH, tránh bị khóa ra ngoài VPS.

Mở nhiều port có làm VPS chậm hơn không?

Không làm chậm hiệu suất xử lý. Firewall rule chỉ là danh sách điều hướng gói tin, chi phí CPU gần như không đáng kể. Vấn đề thực sự là bảo mật — mỗi port mở ra là một điểm có thể bị tấn công nếu dịch vụ đằng sau đó có lỗ hổng. Nguyên tắc thực hành đúng: chỉ mở đúng port nào đang cần, tắt tất cả port không dùng đến, và hạn chế IP nguồn cho các port nhạy cảm như database hay SSH.

Tôi đang dùng aaPanel / CyberPanel / DirectAdmin thì mở port bằng lệnh hay giao diện?

Ưu tiên thao tác trên giao diện GUI của Control Panel — tìm mục Security hoặc Firewall trong dashboard. Lý do: các Control Panel này thường tự quản lý IPTables/UFW theo cách riêng. Nếu bạn can thiệp bằng lệnh OS trực tiếp, có thể xảy ra xung đột — rule bạn thêm vào bị panel ghi đè, hoặc ngược lại rule của panel bị lệnh của bạn xóa mất. Với aaPanel, vào Security → Firewall → Add Rule; với DirectAdmin, vào Administrator → DirectAdmin Firewall. Chỉ dùng lệnh OS khi Control Panel không có tùy chọn quản lý firewall.

Kết luận

Port là cửa ngõ quyết định ứng dụng của bạn có kết nối được với thế giới hay không. Mở đúng port, đúng tool, đúng lớp — đó là ba điều kiện cần đủ. UFW cho Ubuntu, FirewallD cho CentOS, Defender Firewall cho Windows; và đừng quên kiểm tra Security Group nếu VPS đang nằm trên nền Cloud của AWS, Azure hay GCP.

Sau khi cấu hình xong, luôn xác minh lại bằng netstat hoặc YouGetSignal thay vì giả định rằng mọi thứ đã đúng. Một phút kiểm tra có thể tiết kiệm nhiều giờ debug sau đó.

Nếu bạn muốn hiểu sâu hơn về cơ chế hoạt động, cách thiết lập ban đầu và các thông số kỹ thuật của máy chủ ảo, hãy đọc bài tìm hiểu VPS là gì toàn tập — nền tảng để tự tin quản trị hạ tầng trước khi đi vào cấu hình nâng cao.