Хотя функциональность между этими двумя инструментами частично совпадает, есть много вещей, которые вы можете сделать только с помощью одного из этих инструментов. iproute2
ничего не может сделать с правилами брандмауэра netfilter. iptables
не может делать такие вещи, как назначение IP-адресов.
Даже в тех местах, где кажется, что функциональность перекрывается, на самом деле она не перекрывается. Например, вы можете сделать перевод адреса с обоими iproute2
и iptables
. Но преобразование адресов, которое вы можете сделать с iproute, не учитывает никакого состояния и абсолютно не переписывает пакет. Существует несколько сетевых протоколов, таких как FTP, SIP, H.323 и т. Д., Где IP-адреса включены в пакет, а не только в заголовки. Если вы используете метод iproute для трансляции адресов, эти типы протоколов будут нарушены. Netfilter гораздо лучше справляется с трансляцией адресов.
В большинстве случаев, когда функциональность перекрывается, она обрабатывается различными способами. С модулем можно выполнять маршрутизацию iptables
, но в прошлый раз я проверял, что модуль не был в большинстве дистрибутивов, чтобы не иметь сетевого фильтра / iptables
патча с целью ROUTE . Если эта цель недоступна, вы не можете использовать netfilter для маршрутизации, если у вас нет желания компилировать ваши собственные ядра. Решение о том, какой инструмент использовать, будет принято просто потому, что эта функция недоступна в версии инструментов, которые вы используете. Даже если у вас есть цель ROUTE, насколько я понимаю, использование netfilter для принятия решений о маршрутизации не так эффективно, как использование стандартных таблиц маршрутизации с iproute2
манипуляциями.
Многое из этого также использует правильный инструмент для правильной работы. iproute2
в первую очередь предназначен для управления маршрутизацией и адресами на вашем компьютере. iptables
/ Netfilter построен для межсетевого экрана.
Я думаю, что в местах, где человек может использовать любой инструмент, он обычно использует инструмент, с которым он наиболее знаком. Я знаю, что использую цель MARK, iptables
чтобы пометить некоторые пакеты для одного или другого маршрута, даже если бы я мог написать то же правило с iproute2
.