Welcome to Энциклопедия сетевых протоколов Санкт-Петербург
ул. Седова, д. 80
тел. (812) 4490770
факс (812) 4490771
Поиск

Модули
· Титульная страница
· Мир протоколов
· Моя страница
· Основные темы
· Архив публикаций
· Парад популярности
· Поиск
· Приватная почта
· Каталог ссылок
· Написать нам
· Сообщить новость
· Рекомендовать сайт
· Участники
· Документы и программы

Выбор языка
Язык интерфейса:


Статистика
19760211
запросов с 22 сентября 2005

Внешняя статистика
Rambler's Top100

Реклама от Google
Google


  
Операции iptables
Опубликовано 21 Окт 2005 (Птн) в 15:15:40
Тема: Вопросы безопасности

В каждом правиле цепочек iptables указывается действие (target), выполняемое по отношению к пакету при совпадении с условиями, заданными спецификацией правила. Если пакет не удовлетворяет спецификации, он передается следующему правилу, а для соответствующих спецификации пакетов используется операция, заданная параметром -j. В качестве действия может использоваться одна из описанных ниже стандартных операций iptables или пользовательская цепочка. Кроме встроенных операций можно использовать дополнительные операции, загрузив соответствующий код с сайта http://www.netfilter.org/patch-o-matic/ и собрав модули на своем компьютере из исходных кодов. Отметим, что некоторые расширения netfilter/iptables могут потребовать компиляции ядра.



Основные операции

Основные операции поддерживаются программой iptables независимо от загрузки модулей ядра и подключения модулей netfilter, если при компиляции ядра была включена опция глобальной поддержки Netfilter/iptables (Network packet filtering).

ACCEPT

Операция ACCEPT означает восприятие пакета, завершение его обработки в цепочках данной таблицы и передачу на дальнейшие этапы обработки. Для такого пакета последующие правила цепочек данной таблицы уже не используются, однако следует помнить, что пакет может попасть в другие цепочки на этапах дальнейшей обработки.

DROP

В результате операции DROP пакет отбрасывается без дальнейшей обработки и передачи отправителю пакета какого-либо уведомления.

Отметим, что в некоторых случаях отбрасывание пакетов без уведомления их отправителя может вызывать побочные эффекты (в частности, возникновение “мертвых” сокетов). В таких случаях разумно использовать описанную ниже операцию REJECT в результате которой пакет удаляется из обработки, но отправителю выдается сообщение об ошибке. В частности, использование операции REJECT позволяет предотвратить получение с помощью сканеров информации о закрытых в вашей системе номерах портов и т. п.

Важно понимать, что отброшенный с помощью операции DROP пакет просто исключается из какой-либо дальнейшей обработки и не передается никаким приложениям или протоколам вышележащих уровней – пакет просто “тихо умирает”.

QUEUE

Операция QUEUE ведет к передаче пакета в пользовательское пространство, если такая возможность поддерживается ядром. Для использования этой операции также требуется приложение1 пользовательского пространства, способное работать с очередями пакетов.

Стандартный обработчик очередей для iptables и протокола IPv4 реализуется в модуле ip_queue.

Ниже показан пример использования операции QUEUE в пакетном фильтре:

modprobe iptable_filter

modprobe ip_queue

iptables -A OUTPUT -p icmp -j QUEUE

В соответствии с этим правилом локально сгенерированные пакеты ICMP (скажем, ping) будут передаваться модулю ip_queue, который попытается доставить эти пакеты приложению пользовательского пространства. Если ожидающего пакетов приложения пользовательского пространства не будет обнаружено, пакеты будут отброшены.

Для создания приложений используется интерфейсная библиотека libipq (API), включенная в дистрибутив iptables. Примеры таких приложений можно найти среди тестовых программ из дистрибутива iptables (например, redirect.c).

Состояние очереди ip_queue можно посмотреть в файле:

/proc/net/ip_queue

Максимальный размер очереди (число пакетов, доставляемых в пользовательское пространство до вынесения решения об их судьбе) определяется переменной в файле:

/proc/sys/net/ipv4/ip_queue_maxlen

По умолчанию максимальный размер очереди составляет 1024 пакета. По достижении этого значения новые пакеты будут отбрасываться, пока размер очереди не уменьшится. “Деликатные” протоколы типа TCP интерпретируют отбрасывание пакетов как насыщение и будут снижать скорость передачи пакетов при заполнении очереди. Однако для определения оптимального значения порога переполнения очереди в вашем конкретном случае могут потребоваться эксперименты.

RETURN

Операция RETURN завершает обработку пакета в данной цепочке и возвращает управление в вызвавшую ее (предыдущую) цепочку. Если операция RETURN используется во встроенной цепочке или достигнут конец встроенной цепочки, для пакета используется операция, заданная политикой данной цепочки. Логически операция RETURN эквивалентна переходу в конец цепочки и во многих случаях позволяет значительно сократить время прохождения пакета через последовательность правил цепочки.

Дополнительные операции

Поддержка дополнительных операций обусловлена опциями компиляции ядра и загрузкой соответствующих модулей ядра. Однако, эти операции не требуют подключения дополнительных модулей iptables.

BALANCE

Эта операция позволяет транслировать адреса получателя (как это делает операция DNAT, но с перебором адресов из заданного опцией блока.

--to-destination <начало>-<конец блока>

задает блок адресов из которого данная операция будет по кругу выбирать адреса для трансляции DNAT.

Для использования операции BALANCE требуется ядро со включенной опцией IP: fast network address translation.

CLASSIFY

Операция CLASSIFY позволяет устанавливать для пакетов значение поля уровня приоритета skb->priority, которое может использоваться некоторыми дисциплинами для классификации пакетов в системах QoS. К такого типа дисциплинам относятся:

  • atm

  • cbq

  • dsmark

  • pfifo_fast

  • htb

  • prio

Операция может применяться только в цепочке POSTROUTING таблицы mangle и использует единственный параметр

--set-class MAJOR:MINOR

задающий значение для поля приоритета в сетевом буфере skb.

iptables -t mangle -A POSTROUTING .. -j CLASSIFY --set-class MAJOR:MINOR

Для использования операции CLASSIFY требуется ядро со включенной поддержкой опции CLASSIFY target support. Если для опции было выбрано значение M, использовать классификацию пакетов можно будет после загрузки модуля ipt_CLASSIFY.

CLUSTERIP

Операция CLUSTERIP позволяет создать простой кластер узлов, использующих общую пару адресов IP и MAC, без явной системы распределения (балансировки) трафика перед этим кластером. Соединения будут статически распределяться между узлами кластера.

Операция поддерживает несколько опций для создания и управления кластером.

--new

создает новый кластер ClusterIP. Эта операция всегда должна быть первой среди операций для данного ClusterIP.

--hashmode <режим>

задает режим хэширования2 и может принимать значения sourceip (распределение по адресу отправителя), sourceip-sourceport (адрес и порт отправителя), sourceip-sourceport-destport (адрес и порт отправителя, порт получателя).

--clustermac mac

задает MAC-адрес для кластера. По сути, этот адрес является multicast-адресом канального уровня.

--total-nodes <количество>

задает общее число узлов в кластере.

--local-node <номер>

определяет локальный номер узла в кластере.

--hash-init rnd

задает случайное значение, используемое при инициализации hash-функции.

Для использования операции CLUSTERIP требуется ядро со включенной опцией CLUSTERIP target support. Если для опции было выбрано значение M, потребуется также загрузка модуля ядра ipt_CLUSTERIP.

CONNMARK

Эта операция позволяет установить маркер netfilter для данного соединения. Маркеры могут использоваться другими правилами (см. описание проверки connmark) для фильтрации соединений или распределения трафика. Операция использует несколько опций для установки и управления маркерами соединений.

--set-mark <маркер>[/<маска>]

устанавливает маркер для соединения. Если опция содержит маску, устанавливаются только те биты маркера, которые соответствуют этой маске.

--save-mark [--mask <маска>]

копирует установленное для пакета значение маркера в качестве маркера соединения. Если опция содержит маску, копируются только соответствующие этой маске биты маркера.

--restore-mark [--mask <маска>]

копирует маркер соединения в поле маркера пакета. Если опция содержит маску, копируются только соответствующие этой маске биты маркера. Эту опцию можно использовать только в цепочках таблицы mangle.

Для маркировки соединений в ядре должна быть включена поддержка опции Connection mark tracking support и CONNMARK target support. Если при компиляции ядра для второй опции было выбрано значение M, потребуется также загрузить модуль ядра ipt_CONNMARK.

DNAT

Операция DNAT может использоваться в цепочках PREROUTING и OUTPUT таблицы nat, а также пользовательских цепочках, которые могут вызываться только из указанных цепочек и служит для трансляции адреса получателя в исходящих пакетах. При использовании этой операции в заголовке данного пакета и всех последующих пакетов данного потока (соединения) изменяется значение поля IP-адреса получателя. При маршрутизации пакетов они пересылаются в интерфейс, соответствующий измененному адресу получателя.

Опция

--to-destination <адрес>[-<адрес>][:<порт>-<порт>]

служит для указания адреса (диапазона адресов) и номера (диапазона номеров) порта, используемого в качестве адреса получателя после трансляции. Отметим, что задание портов допускается только в правилах, содержащих опцию -p tcp или -p udp. Если порт получателя не указан, сохраняется исходный номер порта. Допускается использование в одном правиле нескольких опций --to-destination, задающих различные адреса. Из всех указанных опциями значений адресов создается пул с последовательным круговым перебором адресов.

Эта операция очень полезна для тех случаев, когда к тому или иному серверу, находящемуся внутри вашей сети и не имеющему публичного адреса, требуется обеспечить доступ извне. Хорошим примером может служить ситуация размещения web-сервера в локальной сети и трансляция на адрес (частный) этого сервера всех пакетов, обращающихся к порту http по имеющемуся у вас3 публичному адресу. Операция может использоваться с диапазоном адресов, значения из которого будут выбираться последовательно (по кругу), что может быть весьма полезно для распределения нагрузки между множеством серверов, которые для внешнего пользователя имеют общий адрес, а реально работают на разных хостах с различными адресами.

Например, команда

iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10

обеспечит переадресацию всех запросов http, отправленных по адресу 15.45.23.67 на хосты с адресами из диапазона 192.168.1.1-192.168.1.10 без смены номера порта.

Вы можете также использовать круговую подстановку адреса получателя из заданного блока, выполняемую с помощью операции BALANCE.

Для использования операции DNAT требуется ядро со включенной опцией Full NAT4.

DSCP

Операция DSCP служит для изменения битов DSCP5 в полях TOS заголовков IPv4. Поскольку операция меняет содержимое пакетов, ее можно использовать только в цепочках таблицы mangle. Операция может использоваться с двумя опциями

--set-dscp value

устанавливает для поля DSCP значение value (его можно указать в десятичном или шестнадцатеричном формате)

--set-dscp-class class

устанавливает в поле DSCP значение класса DiffServ.

Для использования операции потребуется ядро со включенной опцией DSCP target support. Если при компиляции ядра для опции было выбрано значение M, следует загрузить модуль ipt_DSCP.

ECN

Эта операция может использоваться только в цепочках таблицы mangle служит для борьбы с “черными дырами ECN6”, возникающими при обмене пакетами с хостами и маршрутизаторами, которые не понимают или некорректно трактуют биты ECN. Поддерживаемая для этой операции опция

--ecn-tcp-remove

удаляет все биты ECN из заголовка TCP. Отметим, что использование такой возможности требует наличия в правиле параметра -p tcp.

Для работы с операцией ECN требуется включить опцию ECN target support при компиляции ядра. Если для опции было выбрано значение M, потребуется загрузка модуля ipt_ECN.

LOG

Операция LOG служит для записи в системный журнал информации о соответствующих пакетах. Для записи используются встроенные средства ядра Linux (syslog). Увидеть эти сообщения можно в файле /var/log/messages, а последние записи выводятся на экран по команде dmesg. Эта операция не прерывает прохождения пакета через цепочку (после передачи ядру информации о пакете данный пакет передается следующему правилу цепочки). Если вы хотите использовать эту операцию о записи сведений об отвергнутых или отброшенных пакетах, следует использовать два последовательных правила с одинаковым набором условий7. В первом правиле используется операция LOG, а во втором - DROP или REJECT.

Операция LOG поддерживает несколько опций:

--log-level <уровень протоколирования>

определяет уровень протоколирования для syslog. Уровень может быть задан числом или предопределенным именем8.

--log-prefix <префикс>

определяет префикс для записей в журнальном файле. Префикс может включать до 29 символов и весьма полезен при анализе и обработке журнальных файлов.

--log-tcp-sequence

говорит ядру о необходимости записи в системный журнал порядковых номеров TCP9.

--log-tcp-options

говорит ядру о необходимости записи в журнал значений некоторых опций из заголовков TCP.

--log-ip-options

говорит ядру о необходимости записи в журнал значений большинства опций из заголовков IP.

Для работы с операцией LOG требуется ядро со включенной при компиляции опцией LOG target support. Если для опции было задано значение M, операция LOG будет работать после загрузки модуля ipt_LOG.

MARK

Эта операция используется для маркировки пакетов и может применяться только в цепочках таблицы mangle. Установленные с помощью этой операции маркеры впоследствии могут использоваться для маршрутизации (например, с помощью iproute2), фильтрации, управления трафиком10. Операция использует 1 опцию

--set-mark mark

которая задает значение11 устанавливаемого маркера.

Для использования операции маркировки пакетов ядро должно иметь включенную опцию MARK target support. Если для опции было выбрано значение M, потребуется загрузка модуля ipt_MARK.

MASQUERADE

Эта операция служит для маскирования (Masquerading) адресов и может применяться только в цепочке POSTROUTING таблицы nat. Операцию следует применять для соединений с динамическими адресами IP, а при работе со статическими адресами разумнее использовать операцию SNAT.

Маскирование эквивалентно отображению пакетов на IP-адрес исходящего интерфейса с удалением информации об этом отображении при отключении (down) интерфейса. Такое поведение корректно для случаев, когда при следующем соединении вероятность получить такой же адрес мала и, следовательно, все организованные ранее соединения так или иначе будут потеряны. Операция MASQUERADE может использоваться с опцией

--to-ports port[-port]

задающей номер (или диапазон номеров) порта отправителя для маскируемых пакетов. Эта опция позволяет изменить используемое по умолчанию значение номера порта, выбранное эвристической машиной SNAT. Использование опции ограничивается правилами, содержащими в спецификации указание на протокол TCP или UDP12 (-p tcp или -p udp).

Для поддержки операции маскирования при компиляции ядра должна быть включена опция MASQUERADE target support. Если при компиляции было выбрано значение M, для маскирования адресов потребуется загрузка модуля ipt_MASQUERADE.

NETMAP

Операций NETMAP позволяет создавать статическое взаимно-однозначное (1:1) отображение сетевых адресов без смены адреса хоста. Операция NETMAP использует опцию

--to адрес[/маска]

для задания диапазона адреса или адресов, в который выполняется отображение.

Приведенная ниже команда позволяет изменить адреса получателей для входящих соединений с 1.2.3.0/24 на 5.6.7.0/24

iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24

Для использования операции NETMAP требуется ядро со включенной поддержкой опции NETMAP target support (стр. 104). Если для опции было выбрано значение M, операция станет доступной после загрузки модуля ipt_NETMAP.

NOTRACK

Эта операция может использоваться в цепочках таблицы raw, которая используется в netfilter самой первой (даже до системы отслеживания соединений conntrack) и включает две встроенных цепочки PREROUTING и OUTPUT.

Операция NOTRACK позволяет выбрать пакеты, которые не будут передаваться в подсистему conntrack/NAT для контроля соединений и трансляции адресов. Следует помнить, что при использовании операции NOTRACK для пакетов

  • не используется система контроля соединений conntrack (не отслеживаются сообщения ICMP об ошибках, helper-модули и т. п.);

  • не выполняется никаких действий по преобразованию сетевых адресов и номеров портов - NAT.

Пакеты, отмеченные с помощью операции NOTRACK, соответствуют предопределенному состоянию UNTRACKED, которое может использоваться в других правилах. Например, для сильно загруженного web-сервера можно использовать правила

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACK

iptables -t raw -A PREROUTING -s 1.2.3.4 -p tcp --sport 80 -j NOTRACK

а в цепочку фильтрации включить правило

iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT

в соответствии с которым все такие пакеты будут безоговорочно приниматься.

Для использования операции NOTRACK в ядре должна быть включена опция NOTRACK target support. Если при компиляции ядра для опции было выбрано значение M, для работы с NOTRACK потребуется загрузить модуль ipt_NOTRACK.

REDIRECT

Операция REDIRECT позволяет переправлять пакеты и потоки трафика на данный хост. Операция может использоваться в цепочках PREROUTING и OUTPUT таблицы nat, а также пользовательских цепочках, которые могут вызываться только из указанных цепочек. При использовании REDIRECT изменяется IP-адрес получателя и пакеты перенаправляются маршрутизатором на себя13. Опция

--to-ports port[-port]

позволяет задать порт или диапазон портов, куда будут перенаправляться пакеты. Эту опцию можно использовать только в правилах, задающих протокол -p tcp или -p udp.

Операция REDIRECT очень эффективна для создания прозрачных proxy, о которых пользователи вашей локальной сети просто не догадываются.

Для использования операции перенаправления трафика следует включить опцию REDIRECT target support при компиляции ядра. Если для опции было выбрано значение M, перенаправление пакетов станет возможным после загрузки модуля ipt_REDIRECT.

REJECT
Эта операция задает отбрасывание пакета с возвратом отправителю сообщения об ошибке (причине отказа). Как и в случае DROP дальнейшая обработка пакета прекращается. Эту операцию можно использовать только во встроенных цепочках INPUT, FORWARD или OUTPUT и пользовательских цепочках, которые вызываются только из трех перечисленных встроенных цепочек. Возвращаемая отправителю информация задается опцией

--reject-with <тип сообщения ICMP>

В качестве значения параметра тип сообщения ICMP можно использовать:

icmp-net-unreachable – сеть недоступна;

icmp-host-unreachable – хост недоступен;

icmp-port-unreachable – порт недоступен;

icmp-proto-unreachable – протокол недоступен;

icmp-net-prohibited – доступ в сеть закрыт;

icmp-host-prohibited – доступ к хосту закрыт;

icmp-admin-prohibited – доступ закрыт администратором14.

Отметим, что в соответствии с требованиями RFC 1122 сообщения ICMP не передаются в следующих случаях:

  • отброшенный пакет был сообщением ICMP об ошибке или пакетом ICMP неизвестного типа;

  • отброшенный пакет был не первым фрагментом;

  • за последнее время по этому адресу было передано слишком много сообщений ICMP об ошибках (см. описание переменной /proc/sys/net/ipv4/icmp_ratelimit на стр. 453).

В правилах для протокола TCP можно также использовать значение tcp-reset. В этом случае отправителю передается пакет TCP RST. Эта возможность полезна для блокировки запросов ident (113/tcp), которые часто используются при попытках отправить почту на неработающие (отказывающиеся принимать вашу почту) почтовые серверы.

Например команда

iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset

будет добавлять в цепочку FORWARD правило, отвергающее все пакеты TCP, адресованные в порт 22, с возвратом отправителю пакета TCP RST.

Для использования операции REJECT при компиляции ядра должна быть включена опция REJECT target support. Если вы выбрали для данной опции значение M для использования операции REJECT потребуется загрузить модуль ipt_REJECT.

ROUTE

Операция ROUTE служит для явной отмены решения о маршрутизации, принятого на уровне ядра и указания иного маршрута передачи пакета. Операция использует несколько опций, обеспечивающих управление маршрутизацией пакетов.

--oif <интерфейс>

задает отправку пакета через заданный именем интерфейс.

--iif <интерфейс>

меняет для пакета информацию о принявшем его интерфейсе (поле real_dev структуры skb, описанное на стр. 494).

--gw

указывает шлюз для маршрутизации пакета.

--continue

задает продолжение обработки пакета в цепочке правил. Эта опция не может использоваться совместно с –iif.

SAME

Операция SAME транслирует сетевые адреса подобно SNAT и предоставляет клиенту один и тот же адрес для каждого соединения. Операция использует опцию

--to -

для задания диапазона адресов, используемых операцией при подстановке, а опция

--nodst

говорит о том, что при выборе адреса отправителя для подстановки, адрес получателя не должен приниматься во внимание.

Приведенная ниже команда

iptables -t nat -A POSTROUTING -j SAME --to 1.2.3.4-1.2.3.7

будет менять в исходящих пакетах поле адреса отправителя на значение из диапазона 1.2.3.4-1.2.3.7.

Для использования операции SAME требуется ядро со включенной поддержкой опции SAME target support. Если для опции было выбрано значение M, операция станет доступной после загрузки модуля ipt_ SAME.

SNAT

Операция SNAT, использовать которую можно только в цепочке POSTROUTING таблицы nat, обеспечивает трансляцию (замену) адреса отправителя для исходящего пакета (и всех последующих пакетов в этом соединении). Команда используется с опцией

--to-source ipaddr[-ipaddr][:port-port]

которая позволяет задать новый адрес (диапазон адресов) IP и номер (диапазон номеров) порта15 в поле заголовка IP. Если номер порта для протокола TCP или UDP не указан, порты с номерами < 512 будут отображаться в порты с номерами ниже 512, порты из диапазона 512 – 1023 будут отображаться в порты с номерами <1024, а все остальные порты будут отображаться в порты с номерами 1024 и выше. В таких случаях преобразование номера порта происходит только при реальной необходимости. Допускается использование в одном правиле нескольких опций --to-source. Если задано использование множества адресов отправителя (диапазон или несколько опций –to-source), эти адреса будут перебираться последовательно (по кругу).

Опция SNAT полезна в тех случаях, когда в вашей сети используются адреса из частных блоков16 IP, поскольку она позволяет отобразить для всех исходящих соединений адреса отправителей на публичный адрес, предоставленный вам провайдером Internet.

При использовании операции SNAT на граничном маршрутизаторе не забудьте разрешить прием пакетов для указанного при трансляции адреса в цепочке FORWARD для этого маршрутизатора. Например, при использовании на маршрутизаторе команды

iptables -t nat -A POSTROUTING -s x.x.x.x -j SNAT –to-source z.z.z.z

нужно добавить также команду

iptables -A FORWARD -d z.z.z.z -j ACCEPT

или иную команду, которая обеспечит прием пакетов, поскольку без этого правила пакеты, направленные по адресу z.z.z.z могут отбрасываться другими правилами.

Для использования операции SNAT требуется ядро со включенной опцией Full NAT17.

TCPMSS

Эта операция изменяет значение MSS18 в заголовках пакетов TCP SYN, позволяя управлять максимальным размером сегмента для соединения. Операция может использоваться только для пакетов TCP и требует наличия в строке правила спецификации протокола -p tcp. Кроме того, для использования этой операции нужно включить опцию TCPMSS target support. Эта операция может служить для борьбы с “отмороженными” провайдерами и серверами, которые блокируют сообщения ICMP Fragmentation Needed19. Симптомы проблемы состоят в том, что с Linux-брандмауэра (маршрутизатора) обеспечивается беспрепятственный доступ, но стоящие за брандмауэром компьютеры не могут обмениваться большими пакетами с внешними хостами:

  • подключение к Web-серверам происходит беспрепятственно, но при загрузке содержимого процесс “умирает”;

  • мелкие почтовые сообщения приходят нормально, а большие не доходят совсем;

  • ssh работает хорошо, но scp зависает после стартовой инициализации.

Для решения проблемы можно использовать команду типа приведенной ниже:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Опция

--set-mss value

используется для явной установки значения MSS, а

--clamp-mss-to-pmtu

автоматически выбирает для MSS значение (path_MTU – 40). Опции исключают одна другую и не могут использоваться совместно.

Для работы с операцией TCPMSS в ядре должна быть включена опция TCPMSS target support. Если для опции было выбрано значение M, потребуется также загрузка модуля ipt_TCPMSS.

TOS

Эта операция используется для установки значения 8-битового поля Type of Service (TOS) в заголовках пакетов IP. Операция может использоваться только в цепочках таблицы mangle. Для использования этой операции нужно включить поддержку опции TOS target support при компиляции ядра. При выборе для опции значения M, использование операции TOS потребует предварительной загрузки модуля ipt_TOS.

Опция

--set-tos tos

определяет значение поля TOS, устанавливаемое для пакета. Для просмотра возможных значений используйте команду Linux

iptables -j TOS -h

Установленное значение TOS может использоваться локальными программами обработки сетевых пакетов (например, iproute2) или внешними маршрутизаторами20. Значительная часть современных маршрутизаторов поддерживает TOS, поэтому имеет смысл предпринять попытку запросить нужные условие доставки перед отправкой пакетов во внешние сети. Ничего страшного не произойдет, если маршрутизаторы на пути доставки не поддерживают TOS – в таких случаях это поле просто не принимается во внимание. При использовании же этого поля в пределах своей сети можно оказать существенное влияние на картину внутрисетевого трафика.

Приведенная ниже команда

iptables -t mangle -A PREROUTING -p TCP --dport 22 -j TOS --set-tos 0x10

запрашивает для пакетов TCP, передающих данные протокола SSH, минимальную задержку при доставке.

TRACE21

С помощью операции TRACE можно отслеживать прохождение пакета через цепочки правил. Если при прохождении цепочек таблицы rawдля пакета указана операция TRACE, при выполнении условий любого из следующих правил на пути прохождения пакета через цепочки в журнальный файл системы будет помещаться запись вида:

TRACE: <имя таблицы>/<имя цепочки>/<номер правила> <пакет>

Операция не использует каких-либо опций.

Для записи в журнал требуется также загрузка по крайней мере одного из модулей протоколирования (ipt_LOG или ipt_ULOG). Если вы загружены оба модуля, будет использоваться “встроенное” журналирование с помощью ipt_LOG, но вы можете отдать предпочтение пользовательскому модулю ipt_ULOG, если при его загрузке воспользуетесь параметром takeover

modprobe ipt_ULOG takeover=1

TTL

Операция TTL позволяет задать значение поля времени жизни в заголовках пакетов IP. Операцию можно применять только в цепочках таблицы mangle. Операция может использовать 3 параметра

--ttl-set <значение TTL>

позволяет явно задать значение времени жизни для пакета. Не следует устанавливать слишком большое значение TTL для пакетов, направленных в вашу внутреннюю сеть, это может вызвать проблемы.

--ttl-dec <шаг уменьшения TTL>

позволяет задать дополнительное снижение значения TTL. Не следует забывать, что каждый маршрутизатор при пересылке пакетов уменьшает это значение на 1. Например, при установке для параметра значения 3 реальное уменьшение TTL после маршрутизации составит 4.

--ttl-inc <шаг увеличения TTL>

позволяет увеличить значение времени жизни для пакетов. С помощью этого параметра можно попытаться “спрятать” ваш брандмауэр от программ трассировки.

На практике эта операция нужна пожалуй лишь для борьбы с провайдерами, которые не позволяют подключать по одному каналу более одной машины. В таких случаях мы просто устанавливаем одинаковое значение (скажем, стандартное для Linux значение 64) для всех исходящих пакетов. Может эта операция быть полезной также в тех случаях, когда желательно ограничить сферу досягаемости тех или иных служб22.

ULOG

Операция ULOG служит для записи информации о соответствующих заданным условиям пакетов с помощью средств ведения рабочих журналов на уровне пользовательского пространства. Эта операция не прерывает прохождения пакета через цепочку и служит лишь для записи сведений о пакете. При соответствии пакета заданным условиям ядро Linux будет передавать этот пакет с использованием групповой адресации (multicast) через сокет netlink. Включенные в соответствующую multicast-группу приложения пользовательского пространства будут получать такие пакеты. Команда ULOG поддерживает несколько опций:

--ulog-nlgroup nlgroup

позволяет задать номер группы netlink (1-32), которой будут адресоваться пакеты. По умолчанию используется группа 1.

--ulog-prefix prefix

задает префикс, который включается в начало записи журнального файла. Префикс может включать до 32 символов. Использование префиксов упрощает анализ и обработку журнальных файлов.

--ulog-cprange size

число байтов из пакета, копируемых в пользовательское пространство. При выборе значения 0 (используется по умолчанию) пакет копируется целиком, независимо от его размера.

--ulog-qthreshold size

определяет размер очереди пакетов в ядре. При установке отличного от 1 значения ядро будет аккумулировать заданное число пакетов и передавать его в пользовательское пространство как одно сообщение netlink (это сообщение может быть разбито на части). Для обратной совместимости по умолчанию используется значение 1.

Для работы с операцией ULOG требуется ядро со включенной при компиляции опцией ULOG target support. Если для опции было задано значение M, операция ULOG будет работать после загрузки модуля ipt_ULOG.

Операции расширения

Кроме основных и дополнительных операций программа iptables может работать с операциями расширения, которые существуют в виде отдельных модулей и не входят в стандартный комплект распространения программы. Такие модули доступны на сайте http://www.netfilter.org. Установка дополнительных модулей из пакета patch-o-matic в отдельной статье.

1Такие приложения могут использоваться для решения различных задач, включая учет трафика, дополнительную фильтрацию и т. д.

2Распределения соединений между узлами кластера.

3Возможно, единственному

4В ядрах до версии 2.6.9 включительно – опция IP: fast network address translation

5DSCP (differentiated services code point) – шестибитовое значение в поле TOS, позволяющее запросить при доставке пакетов желаемый уровень обслуживания (QoS).

6ECN (Explicit Congestion Notification) – явное уведомление о насыщении.


Примечание:

 
Вход
Регистрационное имя

Пароль

[Восстановить пароль]

Если у Вас еще нет учетной записи, Вы можете зарегистрироваться.


Связанные ссылки
· Поиск в разделе Вопросы безопасности
· Статьи пользователя Николай Малых


Самая популярная статья раздела Вопросы безопасности:
Соответствия для правил iptables (часть 3)


Оценка статьи
Средняя оценка: 4.5
голос.: 2


Оцените эту публикацию:

Отлично
Очень хорошо
Хорошо
Приемлемо
Плохо


Параметры

 Вариант для печати Вариант для печати


Связанные темы

Контроль сетевого трафикаНастройка параметров оборудованияНастройка сетевых параметров хостовДетектирование попыток вторжения в сетьВопросы маршрутизации

"Вход" | Вход/регистрация | 1 комментарий | Поиск в дискуссии
Комментарии выражают мнение их авторов. Администрация сайта не несет никакой ответственности за достоверность представленных в комментариях посетителей сведений, а также за содержание таких комментариев.

Для публикации своих комментариев Вам нужно зарегистрироваться..

Re: Операции iptables (Оценка: 1)
Автор: alexvedrov
17 Мар 2012 (Сбт) в 04:48:13
(Сведения об авторе | Отправить сообщение)
http://ubuntu-news.ru
--ulog-nlgroup nlgroupЭта опция уже неактуальна.


Copyright © BiLiM Systems
Все права на опубликованные на сайте материалы принадлежат компании BiLiM Systems, если в опубликованном на сайте документе явно не указано иное.
Не разрешается воспроизведение опубликованных на сайте документов без согласия BiLiM Systems.

Copyright © 2005 by Nikolai Malykh
Based on PHP-Nuke by Francisco Burzi. This is free software, and you may redistribute it under the GPL. Author comes with absolutely no warranty.
Время генерации страницы: 0.89 сек.