Перенаправление трафика же является простой операций, направляющей пакеты данных в соответствии с определенным условием. Никакого выбора и расчета при этом не производится. Можно сказать, что перенаправление — это простейший (статический) метод маршрутизации. Мы рассмотрим его в параграфе, посвященном брандмауэрам.
19.2. Программы маршрутизации в Linux
19.2.1. Демон routed
Стандартной программой маршрутизации в Linux является демон routed. Этот демон, как правило, настраивается сам (динамически) и не требует конфигурирования. Обнаруженные маршруты он заносит в маршрутную таблицу ядра.
В своей работе демон routed использует протокол RIP. Чтобы воспользоваться преимуществами протоколов RIP-2 или OSFP, вы должны использовать другой демон — gated. Демон routed может работать либо в режиме сервера (-s), либо в режиме подавления сообщений. Во втором режиме он будет только получать от соседей маршрутную информацию, но сам ее отсылать не будет.
Для добавления статических маршрутов вручную служит команда route
. Рассмотрим пример такого маршрута. Пусть у нас есть две сетевые платы eth0 и eth1:
# ifconfig eth0 192.168.1.1 up
# ifconfig eth0 192.168.2.1 up
и нам нужно обеспечить маршрутизацию между подсетями 192.168.1.0 и 192.168.2.0. С этой целью объявляем, что машины, которые находятся в вашем локальном сегменте 192.168.1.*, «сидят» на первом интерфейсе и общаться с ними нужно напрямую:
# route add net 192.168.1.0 192.168.1.1 netmask 255.255.255.0 0
А с машинами с адресами 192.168.2.* будем разговаривать через eth1:
# route add net 192.168.2.0 192.168.2.1 netmask 255.255.255.0 0
Последний аргумент команды route
— это метрика. Ее можно понимать как «расстояние до шлюза назначения» или «сколько пересадок между шлюзами придется сделать пакету по пути туда и обратно». T.к. адреса 192.168.1.1 и 192.168.2.1 являются нашими собственными адресами, то это расстояние равно нулю.
Сетевые пакеты для IP-адресов, которые не лежат в нашей локальной сети, будем отправлять на машину 192.168.1.11, а она сама будет разбираться, что с ними делать:
# route add default 192.168.1.11 1
Таким образом мы объявили маршрут по умолчанию со значением метрики, равным 1.
Не забудьте только добавить вызовы команды route
в загрузочный сценарий, потому что при перезагрузке правила маршрутизации ядра теряются.
Забегая несколько вперед, замечу, что такой статический маршрут представляет собой обычное правило перенаправления трафика, поэтому его можно реализовать и средствами пакетного фильтра IPTables:
# iptables -P FORWARD DROP
# iptables -A FORWARD -S 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT
# iptables -A FORWARD -S 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT
А вот более сложный пример, приведенный в документации по IPTables. Пусть у нас имеется одно- единственное соединение с Интернетом и мы не хотим, чтобы кто-либо вошел в нашу сеть извне:
## Загрузим модули для отслеживания соединений
# (не нужно, если они встроены в ядро)
# insmod ip_conntrack
# insmod ip_conntrack_ftp
## Создадим цепь block, которая будет блокировать
# соединения извне.
# iptables -N block
# iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A block -j DROP
## Весь входящий и маршрутизированный трафик будет
# проходить через block
# iptables -A INPUT -j block
# iptables -A FORWARD -j block
19.2.2. Демон gated — правильный выбор
В последнее время демон gated используется чаще, чем стандартный routed. Объясняется это тем, что gated более гибок в конфигурировании и обладает большими возможностями, в частности, им поддерживаются протоколы RIP-2 и OSFP.
Программа gated была разработана группой американских университетов для работы сети NFSNET. Она позволяет организовать многофункциональный шлюз, обслуживающий как внутреннюю, так и внешнюю маршрутизацию. На данный момент gated поддерживает следующие протоколы маршрутизации:
♦ RIP версий 1 и 2
♦ HELLO
♦ OSPF версии 2
♦ EGP версии 2
♦ BGP версии 2, 3 и 4.
Таблица 19.1 поможет вам сравнить возможности демонов routed и gated.
Протоколы, поддерживаемые gated и routed Таблица 19.1
Демон | Протоколы внутренних маршрутизаторов | Протоколы внешних маршрутизаторов | |||
---|---|---|---|---|---|
RIP | HELLO | OSPF | BGP | EGP |