Mặc dù có một số sự chồng chéo về chức năng giữa hai công cụ, có rất nhiều điều bạn chỉ có thể làm từ chỉ một trong số các công cụ. iproute2
không thể làm bất cứ điều gì với các quy tắc tường lửa netfilter. iptables
không thể làm những việc như gán địa chỉ IP.
Ngay cả ở những nơi mà chức năng dường như trùng lặp, nó không thực sự trùng lặp. Ví dụ, bạn có thể dịch địa chỉ với cả hai iproute2
và iptables
. Nhưng bản dịch địa chỉ mà bạn có thể thực hiện với iproute không xem xét bất kỳ trạng thái nào và hoàn toàn không viết lại gói tin. Có một số giao thức mạng như FTP, SIP, H.323, v.v ... trong đó các địa chỉ IP được bao gồm trong gói và không chỉ trong các tiêu đề. Nếu bạn sử dụng phương pháp iproute để dịch địa chỉ, các loại giao thức sẽ bị hỏng. Netfilter thực hiện công việc dịch thuật địa chỉ tốt hơn nhiều.
Trong hầu hết các trường hợp chức năng không chồng lấp, nó được xử lý theo các cách khác nhau. Có thể với một mô-đun để thực hiện định tuyến iptables
, nhưng lần trước tôi đã kiểm tra mô-đun đó không có trên hầu hết các bản phân phối để không có bộ lọc mạng / iptables
vá với mục tiêu ROUTE . Nếu mục tiêu đó không khả dụng, bạn không thể sử dụng bộ lọc mạng để định tuyến trừ khi bạn có tâm trạng biên dịch các hạt nhân của riêng mình. Quyết định của bạn về việc sử dụng công cụ nào sẽ được đưa ra đơn giản vì tính năng này không có sẵn trong phiên bản của các công cụ bạn đang chạy. Ngay cả khi bạn có mục tiêu ROUTE, theo những gì tôi hiểu, việc sử dụng bộ lọc mạng cho các quyết định định tuyến cũng không hiệu quả bằng việc định tuyến với các bảng định tuyến chuẩn có iproute2
thao tác.
Rất nhiều trong số đó cũng đang sử dụng đúng công cụ cho đúng công việc. iproute2
được thiết kế chủ yếu để quản lý định tuyến và địa chỉ trên máy tính của bạn. iptables
/ Netfilter được xây dựng để tường lửa.
Tôi nghĩ rằng ở những nơi mà một người có thể sử dụng một trong hai công cụ, họ thường sẽ sử dụng công cụ mà họ quen thuộc nhất. Tôi biết tôi sử dụng mục tiêu MARK của iptables
để gắn cờ một số gói cho một tuyến này hoặc tuyến kia mặc dù tôi có thể viết cùng một quy tắc iproute2
.