Một trong những phần mềm mà linux sử dụng để cấu hỡnh bảng NAT của kernel là Ipchains. Bờn trong chương trỡnh Ipchains cú hai trỡnh kịch bản (script) chớnh cú thể được sử dụng để đơn giản hoỏ cụng tỏc quản trị Ipchains
Những Firewall cũ hơn của Linux khụng xử lý cỏc packet phõn mảnh, chỉ hỗ trợ cỏc giao thức TCP, UDP hoặc ICMP. Khụng thể chỉ định những nguyờn tắc ngược
Ipchains được dựng để cài đặt, duy trỡ và kiểm tra cỏc luật của IP Firewall trong Linux kernel. Những luật này cú thể chia làm nhúm chuỗi luật khỏc nhau là:
IP input chain (chuỗi luật input ỏp dụng cho cỏc gúi tin đi đến Firewall), IP output chain (ỏp dụng cho cỏc gúi tin được phỏt sinh cục bộ trờn Firewall và đi ra khỏi Firewall), IP Forwarding chain (ỏp dụng cho cỏc gúi tin được chuyển tiếp tới mỏy hoặc mạng khỏc thụng qua Firewall) và cỏc chuỗi luật do người dựng định nghĩa (user defined).
Ipchains sử dụng khỏi niệm chuỗi luật (chain) để xử lý cỏc gúi tin. Một chuỗi luật là một danh sỏch cỏc luật dựng để xử lý cỏc gúi tin cú cựng kiểu là gúi tin đến, gúi tin chuyển tiếp hay gúi tin đi ra. Những luật này chỉ rừ hành động nào được ỏp dụng cho gúi tin. Cỏc luật được lưu trữ trong bảng NAT là những cặp địa chỉ IP chứ khụng phải từng địa chỉ IP riờng lẻ.
Một luật Firewall chỉ ra cỏc tiờu chuẩn cho packet và đớch đến. Nếu packet khụng đỳng, luật kế tiếp sẽ được xem xột, nếu đỳng thỡ luật kế tiếp sẽ chỉ định rừ giỏ trị của đớch cú thể cỏc chain do người dựng định nghĩa hay cú thể là một trong cỏc giỏ trị cụ thể sau: ACCEPT, DENY, REJECT, MASQ, REDICRECT hay RETURN
* ACCEPT: Cho phộp packet đi qua
* DENY/DROP: Huỷ packet mà khụng cú trả lời thụng bỏo cho client biết điều này.
* REJECT: Tương tự như DROP nhưng sẽ cú trả lời cho client biết gúi tin đó bị huỷ bỏ
* MASQ: Chỉ hợp lệ đối với chain forward và chain do người dựng định nghĩa và được dựng khi kernel được biờn dịch với CONFIG_IP_MASQUERADE. Với chain này packet sẽ được masquerade như là nú được sinh ra từ mỏy cục bộ, hơn thế nữa cỏc packet ngược sẽ được nhận ra và chỳng sẽ được demasqueraded một cỏch tự động, bỏ qua forwarding chain.
* REDIRECT: Chỉ hợp lệ với chain input và chain do người dựng định nghĩa và chỉ được dựng khi Linux kernel được biờn dịch với tham số CONFIG_IP_TRANSPARENT_PROXY được định nghĩa. Với điều này packets sẽ được chuyển tới socket cục bộ, thậm chớ chỳng được gửi đến host ở xa.