Thứ Hai, 17/08/2026, 17:00 (GMT+0)

iptables là gì? Cách hoạt động và các lệnh iptables cơ bản

Quay lại Trang chủ Blog
Trên trang này

iptables là gì? Đây là công cụ dòng lệnh trên Linux được sử dụng để thiết lập, quản lý và kiểm tra các quy tắc xử lý lưu lượng mạng. Thông qua iptables, quản trị viên có thể cho phép hoặc chặn kết nối, kiểm soát port, giới hạn truy cập theo địa chỉ IP cũng như thực hiện NAT trên Linux Server.

iptables là gì?

iptables là công cụ quản trị các bảng quy tắc dùng cho việc lọc packet và Network Address Translation (NAT) trong Linux. Công cụ cho phép người quản trị xây dựng các rule xác định lưu lượng nào được phép đi qua, lưu lượng nào cần loại bỏ và packet phải được xử lý như thế nào.

iptables.jpg

iptables dùng để làm gì?

Chức năng của iptables không chỉ giới hạn ở việc "đóng hoặc mở port". Công cụ có thể tham gia vào nhiều hoạt động xử lý lưu lượng mạng khác nhau.

Lọc lưu lượng mạng

Đây là chức năng phổ biến nhất của iptables.

Quản trị viên có thể xây dựng rule dựa trên các thông tin như:

  • Địa chỉ IP nguồn.
  • Địa chỉ IP đích.
  • Giao thức TCP, UDP, ICMP...
  • Source port và destination port.
  • Network interface.
  • Trạng thái kết nối.

Ví dụ, server có thể cho phép TCP traffic đi vào port 443 nhưng từ chối traffic tới một port quản trị không được sử dụng công khai.

Kiểm soát truy cập vào Linux Server

iptables có thể giới hạn những hệ thống được phép kết nối tới một dịch vụ.

Chẳng hạn, thay vì cho phép toàn bộ Internet truy cập SSH port 22, quản trị viên có thể chỉ cho phép kết nối từ mạng nội bộ hoặc một địa chỉ IP quản trị cụ thể.

Điều này giúp giảm bề mặt tấn công của server.

Thực hiện NAT

iptables cũng hỗ trợ Network Address Translation, bao gồm những trường hợp như:

  • SNAT.
  • DNAT.
  • MASQUERADE.
  • Port forwarding.

NAT thường được sử dụng khi một Linux Server đóng vai trò router hoặc gateway giữa các mạng khác nhau.

Kiểm soát traffic được forward

Nếu packet không có đích là chính máy chủ mà cần đi qua máy chủ để tới một hệ thống khác, iptables có thể kiểm tra traffic bằng chain FORWARD.

Chức năng này đặc biệt quan trọng khi Linux được sử dụng làm gateway, router hoặc host chạy các kiến trúc mạng phức tạp.

iptables.jpg

Iptables hoạt động như thế nào?

Các bộ lọc trong iptables được tổ chức thành nhiều table. Bên trong mỗi table là các chain, còn mỗi chain chứa một danh sách các rule.

Khi một gói tin đi qua hệ thống, iptables sẽ kiểm tra gói tin dựa trên các rule tương ứng. Các rule được xử lý theo thứ tự trong chain. Khi một rule phù hợp với gói tin, hệ thống sẽ thực hiện target được xác định trong rule đó.

Cấu trúc có thể hiểu đơn giản như sau:

Table → Chain → Rule → Target

Trong đó, table xác định nhóm chức năng xử lý, chain xác định vị trí hoặc giai đoạn của gói tin, còn rule quy định điều kiện và hành động cần thực hiện.

Các Table chính trong iptables

Một table là tập hợp các chain phục vụ một chức năng cụ thể.

Ba table chính trong iptables gồm:

  • Filter Table
  • NAT Table
  • Mangle Table

Mỗi table có các chain riêng để xử lý lưu lượng trong những tình huống khác nhau.

TableChain
FilterINPUT, FORWARD, OUTPUT
NATINPUT, OUTPUT, PREROUTING, POSTROUTING
MangleINPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING

Filter Table

Filter Table được sử dụng để kiểm soát luồng gói tin đi vào và đi ra khỏi hệ thống.

Đây cũng là table chịu trách nhiệm chủ yếu cho việc cho phép hoặc chặn kết nối và là table lọc mặc định được sử dụng trong iptables.

NAT Table

NAT Table được sử dụng để chuyển hướng các kết nối sang những network interface khác.

Table này bao gồm các chain như INPUT, OUTPUT, PREROUTING và POSTROUTING.

Mangle Table

Mangle Table được sử dụng để thay đổi header của gói tin.

Table này có các chain INPUT, FORWARD, OUTPUT, PREROUTING và POSTROUTING.

Các Chain chính trong iptables

Chain là một danh sách các rule được xử lý theo thứ tự.

Iptables có 5 chain chính:

  • INPUT
  • OUTPUT
  • FORWARD
  • PREROUTING
  • POSTROUTING

INPUT

INPUT được sử dụng để quản lý các gói tin hoặc kết nối đi vào một dịch vụ hoặc giao thức trên hệ thống.

Ví dụ, khi một kết nối được gửi tới web server đang chạy trên máy, rule trong INPUT chain có thể được sử dụng để xác định kết nối đó được phép hay bị chặn.

OUTPUT

OUTPUT xử lý các gói tin đi ra sau khi chúng đã được tạo hoặc xử lý trên hệ thống.

FORWARD

FORWARD được sử dụng để chuyển tiếp các gói tin đi vào từ nguồn đến đích trong quá trình routing.

PREROUTING

PREROUTING xử lý gói tin sau khi gói tin đi vào network interface.

POSTROUTING

POSTROUTING xử lý gói tin trước khi nó rời network interface, sau khi quyết định định tuyến đã được thực hiện.

Các Target trong iptables

Khi một gói tin đi vào hệ thống, nó được phân tích tại từng chain và kiểm tra với tập hợp các rule.

Nếu gói tin phù hợp với một rule, iptables sẽ thực hiện target tương ứng.

Các target được đề cập trong iptables gồm:

TargetChức năng
ACCEPTDừng xử lý và cho phép gói tin đi qua
REJECTLoại bỏ gói tin và gửi phản hồi
DROPDừng xử lý tại chain hiện tại và loại bỏ gói tin
LOGGhi thông tin vào /var/log/messages

 

ACCEPT

ACCEPT cho phép gói tin tiếp tục đi qua và dừng quá trình kiểm tra hiện tại.

REJECT

REJECT loại bỏ gói tin nhưng có phản hồi lại về việc kết nối bị từ chối.

DROP

DROP dừng quá trình xử lý tại chain hiện tại và loại bỏ gói tin.

LOG

LOG được sử dụng để ghi thông tin vào /var/log/messages.

Ví dụ, nếu muốn chặn tất cả kết nối đi vào web server qua port 80, có thể thêm một rule vào incoming chain trong Filter Table và đặt target là REJECT.

Nếu gói tin đi tới cuối chain mà không khớp với bất kỳ rule nào, default rule sẽ được sử dụng. Theo nội dung nguồn, nếu không có default rule thì gói tin được chấp nhận.

Các lệnh iptables cơ bản

Để làm việc với iptables, quản trị viên nên nắm một số tùy chọn phổ biến sau:

Tham số

Chức năng

-AAppend – thêm rule vào cuối chain
-IInsert – chèn rule vào vị trí chỉ định
-DDelete – xóa rule
-LLiệt kê rule
-SHiển thị rules theo dạng rule specification
-FXóa toàn bộ rule trong chain/table
-PThiết lập policy mặc định
-NTạo user-defined chain
-XXóa user-defined chain
-pChỉ định protocol
-sChỉ định source
-dChỉ định destination
-jChỉ định target

Một số ví dụ cấu hình iptables

Các ví dụ dưới đây giúp hình dung cách iptables được sử dụng trong thực tế.

Cho phép SSH

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Rule cho phép TCP traffic đi tới port 22.

Nếu SSH Server sử dụng port khác, cần thay 22 bằng port tương ứng.

Cho phép HTTP

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

Cho phép HTTPS

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Chặn một địa chỉ IP

iptables -A INPUT -s 203.0.113.10 -j DROP

Packet có source IP 203.0.113.10 sẽ bị loại bỏ nếu đi tới rule này.

Chỉ cho phép một IP truy cập SSH

Ví dụ:

iptables -A INPUT -p tcp -s 203.0.113.20 --dport 22 -j ACCEPT

Rule cho phép địa chỉ 203.0.113.20 truy cập SSH.

Tuy nhiên, chỉ thêm rule ACCEPT chưa có nghĩa các IP khác tự động bị chặn. Kết quả cuối cùng còn phụ thuộc vào các rule tiếp theo và policy của chain.

iptables và nftables khác nhau như thế nào?

iptables vẫn xuất hiện trên nhiều Linux Server, nhưng nftables hiện là hướng phát triển kế nhiệm trong hệ sinh thái Netfilter.

nftables được thiết kế nhằm cung cấp cơ chế quản lý ruleset linh hoạt và khả năng mở rộng tốt hơn. Netfilter Project xác định nftables là successor của iptables và đây cũng là nơi các tính năng firewall mới được phát triển.

Tiêu chí

iptables

nftables

Thế hệCũ hơnMới hơn
CLI chínhiptablesnft
Cách tổ chức ruleTables, chains, rulesTables, chains, rules với mô hình linh hoạt hơn
IPv4/IPv6Thường dùng iptables/ip6tables riêngCó thể quản lý thống nhất hơn
Hướng phát triểnDuy trì tương thíchFramework kế nhiệm
Phù hợpHệ thống cũ, ruleset hiện hữuHệ thống Linux mới

Một số lưu ý khi cấu hình iptables trên Linux Server

Không thay đổi firewall từ xa một cách thiếu kiểm soát

Sai một rule INPUT có thể khiến SSH bị chặn và quản trị viên mất kết nối với server.

Trước khi áp dụng policy DROP, cần chắc chắn traffic quản trị cần thiết đã được cho phép.

Chú ý thứ tự rule

iptables xử lý các rule trong chain theo thứ tự. Vì vậy, một rule DROP đặt phía trên có thể khiến rule ACCEPT phía dưới không bao giờ được áp dụng cho traffic tương ứng.

Chỉ mở port thực sự cần thiết

Nếu server chỉ chạy website, không nên mở hàng loạt port không sử dụng.

Nguyên tắc giảm bề mặt tấn công vẫn nên được áp dụng khi xây dựng firewall rule.

Kiểm tra IPv6

Một ruleset IPv4 chặt chẽ không đồng nghĩa IPv6 cũng đã được bảo vệ tương tự.

Trong mô hình iptables truyền thống, iptables quản lý IPv4 còn ip6tables được sử dụng cho IPv6.

Đảm bảo rule tồn tại sau reboot

Rule được cấu hình trực tiếp bằng command không phải lúc nào cũng tự động được khôi phục sau khi máy chủ khởi động lại.

Cơ chế lưu và phục hồi ruleset phụ thuộc vào Linux distribution, công cụ quản lý firewall và phương thức cấu hình đang sử dụng.

Do đó, sau khi hoàn thiện ruleset, cần kiểm tra cách hệ điều hành lưu cấu hình firewall lâu dài.

Câu hỏi thường gặp về iptables

iptables có phải Firewall không?

iptables thường được gọi ngắn gọn là Linux firewall, nhưng về kỹ thuật cần phân biệt giữa iptables và Netfilter.

Netfilter cung cấp framework xử lý packet bên trong Linux kernel, trong khi iptables cung cấp công cụ để cấu hình và quản lý các rule liên quan.

Netfilter và iptables khác nhau như thế nào?

Netfilter hoạt động trong Linux kernel và cung cấp các hook cho quá trình xử lý packet.

iptables là công cụ ở userspace giúp quản trị viên thiết lập các tables, chains và rules để làm việc với cơ chế xử lý packet đó.

iptables có còn được sử dụng không?

Có. iptables vẫn xuất hiện trên nhiều hệ thống Linux và trong nhiều ruleset hiện hữu.

Tuy nhiên, nftables hiện là framework kế nhiệm và đã trở thành lựa chọn mặc định trên một số Linux distribution. Ngoài ra còn tồn tại iptables-nft, cho phép tiếp tục sử dụng cú pháp iptables trên backend nftables.

ACCEPT và DROP trong iptables khác nhau thế nào?

ACCEPT cho phép packet đi qua.

DROP loại bỏ packet mà không tiếp tục xử lý theo luồng bình thường và không phản hồi cho phía gửi theo cách REJECT thường làm.

Kết luận

Hiểu iptables là gì giúp quản trị viên nắm được cách Linux kiểm soát traffic ở cấp độ packet. Thay vì chỉ ghi nhớ câu lệnh, cần hiểu rõ mối quan hệ giữa Table, Chain, Rule và Target, cũng như xác định packet đang đi qua INPUT, OUTPUT hay FORWARD.

Với các hệ thống mới, nftables ngày càng đóng vai trò quan trọng, nhưng kiến thức về iptables vẫn hữu ích khi quản trị Linux Server, xử lý hệ thống cũ hoặc làm việc với môi trường sử dụng lớp tương thích iptables-nft.

Đối với doanh nghiệp triển khai ứng dụng trên hạ tầng đám mây, VNPT Cloud Server cung cấp tài nguyên máy chủ linh hoạt, giúp doanh nghiệp chủ động xây dựng môi trường Linux, triển khai ứng dụng và kết hợp các lớp kiểm soát bảo mật phù hợp với từng hệ thống.

#DevOps
#DevOps
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc