
142 Глава 5. Сетевой уровень
тификатора пользователя, адреса назначения, номера порта соединения, типа сер-
виса и других полей сетевых заголовков, так и непосредственного содержания
передаваемых в пакетах данных.
В большинстве случаев настройка системы маршрутизации не представля-
ет особых сложностей, поскольку большинство операций выполняется ядром и
специализированными программными пакетами автоматически. ОС Linux силь-
на как раз своим сетевым инструментарием, поэтому данную систему можно ис-
пользовать в качестве связующего звена даже в тех локальных и глобальных се-
тях, основную часть которых составляют компьютеры, работающие под управле-
нием Windows, MacOS и др.
5.4.1.1. Iproute2
Ранее подсистема маршрутизации в Linux, как и большинство операционных
систем UNIX, использовала утилиты arp, ifconfig и route. Но, начиная с ядра 2.2,
сетевая подсистема была полностью переписана. Новый сетевой код дал увели-
чение производительности и более высокие эксплуатационные характеристики.
Современная реализация маршрутизации в ядре Linux основана на подсисте-
ме iproute2. Управление на прикладном уровне представлено пакетом IProute2,
входящим в большинство дистрибутивов Linux
1
.
Фактически iproute2 состоит из нескольких утилит управления трафиком:
–– ip — управление маршрутизацией;
–– tc — управление очередями маршрутизации;
–– ss — просмотр текущих соединений и открытых портов.
Утилита «ip» заменяет собой команды route, arp, ifconfig и предназначена для
управления таблицами маршрутизации, в частности, правилами, определёнными
в них, и помогает реализовывать возможности многотабличной маршрутизации,
туннелирования, а также многоадресную маршрутизацию.
Кроме того, Linux имеет гибкую систему управления трафиком, называемую
Traffic Control. Эта система поддерживает множество методов для классифика-
ции, приоритезации, разделения и ограничения как входящего трафика, так и ис-
ходящего. Управление этими функциями осуществляет вторая утилита пакета —
«tc». Эта утилита также позволяет реализовать QoS в нужном для системы объё-
ме:
–– разделение разных типов трафика по классам (не только по битам ToS в IP-
пакете, но и по другим данным из заголовка IP-пакета);
–– назначение различных дисциплин обработки очередей трафика с разным
приоритетом, механизмами прохождения очереди, ограничениями по ско-
рости и т.п.
Обе утилиты интерпретируют выполнение команд, а все функции выполняет
ядро.
Принципиальной особенностью iproute2 является использование нескольких
таблиц маршрутизации. Когда ядру необходимо выбрать маршрут, оно определя-
ет, в соответствии с какой таблицей это нужно делать. Простейшим примером
использования нескольких таблиц маршрутизации является подключение сети
через двух (или более) провайдеров (рис. 5.31). Такое подключение может тре-
боваться для обеспечения отказоустойчивости или балансировки нагрузки.
1
При этом старые команды (ifconfig, route) используют новую подсистему с некоторыми пара-
метрами по-умолчанию.