Чтение онлайн

на главную - закладки

Жанры

Linux Advanced Routing & Traffic Control HOWTO

Larroy Pedro

Шрифт:

# echo 201 mail.out >> /etc/iproute2/rt_tables

# ip rule add fwmark 1 table mail.out

# ip rule ls

0: from all lookup local

32764: from all fwmark 1 lookup mail.out

32766: from all lookup main

32767: from all lookup default

и зададим пусть и медленный, зато недорогой маршрут в таблице mail.out:

# /sbin/ip route add default via 195.96.98.253 dev ppp0 table mail.out

Это

собственно все, что нам пришлось сделать! Если нужно сделать исключения для отдельных хостов, то можно несколько модифицировать набор правил для netfilter, пропуская пакеты с отдельных хостов без метки, или можно добавить правило с более низким приоритетом, которое отправляет отдельные хосты через таблицу main.

Можно так же использовать поле TOS, в заголовке пакета, задавая различный тип обслуживания для трафика различного рода, и создавая правила, которые реагируют на это поле.

Само собой разумеется, все это прекрасно работает и на хостах, под NAT ('masquerading').

Warning

Некоторые наши читатели отмечают, что как минимум MASQ и SNAT конфликтуют с механизмом маркировки пакетов. Расти Рассел (Rusty Russell) описал эту проблему . Просто, отключите фильтр проверки обратного адреса (см. главу Параметры настройки сети в ядре) и все должно заработать. 

Note

Чтобы иметь возможность маркировать пакеты, вы должны собрать ядро с рядом включенных опций: I

IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]

IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [Y/n/?]

IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [Y/n/?]

См. так же раздел Прозрачное проксирование с помощью netfilter, iproute2, ipchains и squid.

Глава 12. Расширенная фильтрация.

Как уже говорилось в разделе Классовые дисциплины обработки очередей, для того, чтобы определить в какую из подочередей направить пакет, используются фильтры-классификаторы.

Ниже приводится неполный список доступных классификаторов:

fw

Решение принимается на основе маркера пакета, установленного брандмауэром (например — iptables). Наиболее простой классификатор, который можно рекомендовать в том случае, если вам не хочется изучать синтаксис tc. За дополнительной информацией обращайтесь к главе 9.

u32

Решение принимается на основе значений полей в заголовке пакета (например, исходящий IP-адрес и т.п.).

route

Решение принимается на основе маршрута, по которому движется пакет.

rsvp, rsvp6

Маршрутизация пакетов производится на базе RSVP. Применимо только в том случае, если управление сетью полностью находится в ваших руках. В Интернет RSVP не поддерживается.

tcindex

Используется в DSMARK qdisc, см. соответствующий раздел.

Вообще есть множество способов классификации пакетов, но практически все они находятся в прямой зависимости

от предпочитаемой вами системы.

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

protocol

Протокол, принимаемый классификатором. Как правило вы будете принимать только IP-трафик.

parent

Существующий класс, к которому должен быть присоединен данный классификатор.

prio

Приоритет классификатора. Чем меньше число — тем выше приоритет.

handle

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

Во всех следующих разделах мы будем исходить из условия, что формируется трафик, идущий к хосту HostA, что корневой класс сконфигурирован как 1:, а класс, которому посылается выбранный трафик – как 1:1.

12.1. Классификатор u32.

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

В простейшем виде, фильтр U32 — это набор записей, каждая из которых состоит из двух полей: селектора и действия. Селекторы, описанные ниже, проверяют обрабатываемый IP-пакет до тех пор, пока не будет встречено первое совпадение, после чего выполняется соответствующее селектору действие. Самый простой тип действия — перенаправление пакета в определенный класс.

Для конфигурирования фильтра используется команда tc filter, состоящая из трех частей: определение фильтра, селектор и действие. Определение фильтра может быть записано как:

tc filter add dev IF [ protocol PROTO ]

[ (preference|priority) PRIO ]

[ parent CBQ ]

Поле protocol описывает обслуживаемый протокол. Здесь мы будем обсуждать исключительно протокол IP. Поле preference (в качестве синонима можно использовать priority) описывает приоритет определяемого фильтра, что позволяет задавать несколько фильтров (списков правил) с различными приоритетами. Вообще, правила обслуживаются в порядке добавления в список, в случае с приоритетами — первыми обслуживаются правила, имеющие наивысший приоритет (чем меньше число, тем выше приоритет). Поле parent определяет вершину дерева CBQ (например 10:1), к которой должен быть присоединен данный фильтр.

Описаные выше опции применимы ко всем фильтрам, а не только к U32.

12.1.1. Селектор u32.

Селектор U32 содержит определение шаблона, который будет сопоставляться с обрабатываемым пакетом. Если быть более точным, он определяет — какие биты в заголовке пакета будут проверяться и не более того, но, не смотря на свою простоту, это очень мощный и гибкий метод. Рассмотрим примеры, взятые из реально работающего и достаточно сложного фильтра:

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9