Linux Advanced Routing & Traffic Control HOWTO

Bert Hubert

bert.hubert [at] netherlabs.nl

Thomas Graf

tgraf%suug.ch

Gregory Maxwell

Remco van Mook

remco [at] virtu.nl

Martijn van Oosterhout

kleptog [at] cupid.suninternet.com

Paul B Schroeder

paulsch [at] us.ibm.com

Jasper Spaans

jasper [at] spaans.ds9a.nl

Pedro Larroy

piotr%member.fsf.org

Оригинальную версию документа вы найдете по адресу http://lartc.org/.

Практическое руководство по применению iproute2 (и в меньшей степени netfilter) для управления трафиком.


Содержание
1. Посвящение.
2. Введение.
2.1. Ограничения и лицензионное соглашение
2.2. Предварительные сведения
2.3. Что может предложить вам Linux
2.4. Дополнительные замечания
2.5. Доступ к CVS и передача обновлений
2.6. Список рассылки
2.7. Структура документа.
3. Введение в iproute2
3.1. Почему iproute2?
3.2. Краткий обзор iproute2
3.3. Необходимые условия
3.4. Текущая конфигурация
3.4.1. Просмотр списка сетевых интерфейсов с помощью утилиты ip
3.4.2. Просмотр списка IP-адресов с помощью утилиты ip
3.4.3. Просмотр списка маршрутов с помощью утилиты ip
3.5. ARP
4. Правила - база политик маршрутизации
4.1. Простая маршрутизация по источнику.
4.2. Маршрутизация через несколько каналов/провайдеров.
4.2.1. Раздельный доступ
4.2.2. Распределение нагрузки.
5. GRE и другие тоннели.
5.1. Несколько общих замечаний о тоннелях:
5.2. Тоннелирование IP в IP.
5.3. GRE тоннели.
5.3.1. Тоннелирование IPv4.
5.3.2. Тоннелирование IPv6.
5.4. Тоннели неядерного уровня.
6. Тоннелирование IPv6 при помощьи Cisco и/или 6bone.
6.1. Тоннелирование IPv6.
7. IPSEC: безопасная передача данных протоколами IP через Интернет
7.1. Пример ручного конфигурирования безопасного соединения между двумя хостами.
7.2. Пример автоматического конфигурирования безопасного соединения между двумя хостами.
7.2.1. Теория.
7.2.2. Пример.
7.2.3. Автоматизация с использованием сертификатов X.509
7.2.4. Как сохранить настройки туннеля в безопасности.
7.3. Туннели IPSEC
7.4. Другое программное обеспечение для работы с IPSEC
7.5. Взаимодействие с другими операционными системами через IPSEC.
7.5.1. Windows.
7.5.2. Check Point VPN-1 NG
8. Маршрутизация групповых сообщений.
9. Дисциплины обработки очередей для управления пропускной способностью
9.1. Понятие очереди и дисциплины обработки
9.2. Простые бесклассовые дисцплины обработки очереди.
9.2.1. pfifo_fast
9.2.2. Token Bucket Filter
9.2.3. Stochastic Fairness Queueing.
9.3. Какие типы дисциплин нужно использовать.
9.4. Терминология
9.5. Классовые дисциплины обработки очередей.
9.5.1. Порядок движения пакетов внутри полноклассовых дисциплин и классов.
9.5.2. Элементы дисциплины: корень, дескриптор, родительские элементы и элементы одного уровня.
9.5.3. Дисциплина PRIO.
9.5.4. Дисциплина CBQ.
9.5.5. Hierarchical Token Bucket
9.6. Классификация пакетов с помощью фильтров.
9.6.1. Ряд простых примеров фильтрации.
9.6.2. Наиболее употребимые способы фильтрации.
9.7. Intermediate queueing device.
9.7.1. Пример конфигурирования.
10. Распределение нагрузки по нескольким интерфейсам.
10.1. Предостережение.
10.2. Другие возможности.
11. Netfilter и iproute -- маркировка пакетов.
12. Расширенная фильтрация.
12.1. Классификатор u32.
12.1.1. Селектор U32.
12.1.2. Селекторы общего назначения.
12.1.3. Селекторы специального назначения.
12.2. Классификатор route.
12.3. Фильтры-ограничители трафика.
12.3.1. Способы ограничения.
12.3.2. Действия в случае превышения ограничения.
12.3.3. Примеры.
12.4. Хеш-фильтры.
12.5. Фильтрация трафика IPv6.
12.5.1. Почему не работают tc-фильтры в IPv6?
12.5.2. Маркировка пакетов IPv6 средствами ip6tables.
12.5.3. Использование селектора u32 для пакетов IPv6.
13. Параметры настройки сети в ядре.
13.1. Reverse Path Filtering.
13.2. Малоизвестные настройки.
13.2.1. Параметры настройки IPv4.
13.2.2. Параметры настройки устройств.
13.2.3. Параметры сетевых политик.
13.2.4. Параметры маршрутизации.
14. Специализированные дисциплины управления очередями.
14.1. bfifo/pfifo
14.1.1. Параметры и порядок использования.
14.2. Алгоритм Кларка-Шенкера-Чанга.
14.3. DSMARK.
14.3.1. Введение.
14.3.2. Что такое Dsmark и с чем его "едят"?
14.3.3. Основные принципы.
14.3.4. Как работать с Dsmark.
14.3.5. Как работает SCH_DSMARK.
14.3.6. Фильтр TC_INDEX.
14.4. Ingress qdisc.
14.4.1. Параметры и порядок использования.
14.5. Random Early Detection (RED)
14.6. Generic Random Early Detection.
14.7. Эмуляция VC/ATM.
14.8. Weighted Round Robin (WRR).
15. Решебник.
15.1. Запуск нескольких сайтов с различными SLA.
15.2. Защита от SYN flood.
15.3. Ограничение пропускной способности для ICMP-пакетов, с целью предотвращения dDoS атак.
15.4. Управление приоритетами для трафика различных типов.
15.5. Прозрачное проксирование с помощью netfilter, iproute2, ipchains и squid.
15.5.1. Схема движения пакетов после настройки.
15.6. Решение проблемы с Path MTU Discovery путем настройки MTU.
15.6.1. Решение
15.7. Решение проблемы с Path MTU Discovery путем настройки MSS.
15.8. Формирователь трафика: Низкая задержка, максимальная производительность.
15.8.1. Почему все так сложно?
15.8.2. Формирователь трафика на базе CBQ.
15.8.3. Формирователь трафика на базе HTB.
15.9. Ограничение скорости для отдельного хоста или подсети.
15.10. Пример подключения локальной сети к Интернет через NAT, с организацией QoS.
15.10.1. Начнем с оптимизации пропускной способности.
15.10.2. Классификация пакетов.
15.10.3. Дополнительная оптимизация
15.10.4. Выполнение настроек во время загрузки системы.
16. Построение мостов и псевдо-мостов с Proxy ARP.
16.1. Бриджинг и iptables.
16.2. Бриджинг и шейпинг.
16.3. Псевдо-мосты с проксированием ARP.
16.3.1. ARP и проксирование ARP
16.3.2. Реализация
17. Динамическая маршрутизация -- OSPF и BGP.
17.1. Настройка OSPF в Zebra
17.1.1. Предварительные условия.
17.1.2. Конфигурирование.
17.1.3. Запуск Zebra
17.2. Настройка BGP4 с помощью Zebra.
17.2.1. Конфигурация сети (пример).
17.2.2. Конфигурирование (пример).
17.2.3. Проверка конфигурации.
18. Прочие возможности.
19. Рекомендуемая литература.
20. Благодарности.