Tôi không tự nhận là một chuyên gia về các iptables
quy tắc nhưng lệnh đầu tiên là sử dụng tiện ích mở rộng theo dõi kết nối ( conntrack
) trong khi thứ hai là sử dụng state
tiện ích mở rộng.
Điểm dữ liệu số 1
Theo tài liệu này , conntrack
phần mở rộng thay thế state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Điểm dữ liệu số 2
Mặc dù vậy tôi đã tìm thấy câu hỏi và trả lời SF này có tiêu đề: Câu hỏi tường lửa về trạng thái và chính sách? nơi OP tuyên bố đã hỏi câu hỏi này trên IRC trong # iptables @ freenode. Sau khi thảo luận về nó, ông đã đi đến kết luận rằng:
Về mặt kỹ thuật, trận đấu conntrack thay thế - và do đó, lỗi thời - trận đấu trạng thái. Nhưng thực tế, trận đấu nhà nước không bị lỗi thời theo bất kỳ cách nào.
Điểm dữ liệu số 3
Cuối cùng tôi đã tìm thấy SF Q & A này có tiêu đề: Iptables, sự khác biệt giữa trạng thái -m và -m conntrack là gì? . Câu trả lời từ câu hỏi này có lẽ là bằng chứng và lời khuyên tốt nhất về cách xem cách sử dụng conntrack
và state
.
đoạn trích
Cả hai đều sử dụng cùng một phần bên trong kernel (hệ thống con theo dõi kết nối).
Tiêu đề của xt_conntrack.c:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Vì vậy, tôi sẽ nói - mô-đun trạng thái đơn giản hơn (và có thể ít bị lỗi hơn). Nó cũng dài hơn trong kernel. Conntrack ở phía bên kia có nhiều tùy chọn và tính năng hơn [1] .
Cuộc gọi của tôi là sử dụng conntrack nếu bạn cần các tính năng của nó, nếu không thì gắn bó với mô-đun trạng thái.
[1] Khá hữu ích như "-m conntrack --ctstate DNAT -j MASQUERADE"
định tuyến / sửa lỗi DNAT ;-)
Điểm dữ liệu số 4
Tôi tìm thấy thread này từ netfilte netfilter@vger.kernel.org / iptables thảo luận, với tựa đề: trận đấu nhà nước là lỗi thời 1.4.17 , mà khá nhiều nói rằng state
chỉ là một bí danh để conntrack
vì vậy nó không thực sự quan trọng mà bạn sử dụng, trong cả hai trường hợp bạn đang sử dụng conntrack
.
đoạn trích
Thật ra, tôi phải đồng ý. Tại sao chúng ta không giữ "trạng thái" như một bí danh và chấp nhận cú pháp cũ trong "conntrack"?
trạng thái hiện được đặt bí danh và được dịch thành conntrack trong iptables nếu kernel có nó. Không có kịch bản bị hỏng.
Nếu việc khử răng cưa được thực hiện trong không gian người dùng, phần kernel có thể bị xóa - một ngày nào đó có thể.
Việc đặt bí danh đã được thực hiện trong không gian người dùng. Một loại trong "trạng thái" và nó được chuyển đổi thành "conntrack" và sau đó được gửi đến kernel. (Theo như tôi thấy nếu các bí danh mô-đun ipt_state, v.v. đã được thêm vào mô-đun conntrack, thậm chí có thể loại bỏ mô-đun hạt nhân trạng thái.)
Người giới thiệu