правила iproute2 и iptables NAT… какая разница?

8

У нас есть 2 разных интернет-соединения. Наш предыдущий «ИТ-парень» настроил наш брандмауэр так:

Когда /etc/rc.localбыл выполнено при запуске, он сделал кучу ip rule addи ip route addкоманд для того , чтобы маршрутизировать некоторые внутренние хосты использовать определенные соединения ISP.

Затем в конце /etc/rc.localон выполнил наши iptablesправила брандмауэра, которые были сгенерированы Firewall Builder. Эти iptablesправила имеют настроенные правила политики и NAT.

Что я не понимаю, почему он использовал iproute2для определения правил и маршрутов, а также для определения правил NAT iptables? Почему он просто не сделал все это в одном или другом вместо того, чтобы использовать их обоих? Мог ли он избавиться от iproute2правил и маршрутов и просто поместить все те же правила в iptablesнастройки NAT?

Джейк Уилсон
источник

Ответы:

13

Хотя функциональность между этими двумя инструментами частично совпадает, есть много вещей, которые вы можете сделать только с помощью одного из этих инструментов. 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.

Zoredache
источник