19.3.7. Управление правилами маршрутизации

19.3.7. Управление правилами маршрутизации

Для решения этой задачи предназначена команда ip rule. Маршрутизация производится в зависимости от:

? адреса получателя;

? адреса отправителя;

? IP-протокола;

? транспортного протокола.

По умолчанию используются три таблицы правил маршрутизации:

? Local — содержит таблицы для локальных и широковещательных адресов;

? Main — самая обыкновенная таблица маршрутизации;

? Default — пустая таблица по умолчанию.

Аргументы команды ip rule:

1. адрес отправителя;

2. адрес назначения;

3. имя интерфейса, с которого получен пакет;

4. метка пакета, которая устанавливается брандмауэром;

5. идентификатор таблицы маршрутизации: им может быть номер или строка из файла /etc/iproute2/rt_tables;

6. приоритет таблицы (число).

Вот несколько примеров. Требование пересылать пакеты с сети 192.168.0.0/24 согласно таблице Main:

# ip rule add from 192.203.80.0/24 table main prio 100

Теперь допустим, что у нас есть два канала в Интернет (два провайдера): ppp1 с адресом 193.168.99.99, который связан с 193.168.99.100, и ppp2 с адресом 193.168.100.99, связанный с 195.1.1.1. Пользователь ivanov хочет, чтобы мы его пакеты отправляли через ppp2 (второго провайдера):

# echo 200 ivanov >> /etc/iproute2/rt_tables

# ip rule add from 192.168.0.10 table ivanov

# ip rule ls

0: from all lookup local

32765: from 192.168.0.10 lookup ivanov

32766: from all lookup main

32767: from all lookup default

Теперь для этого пользователя назначим маршрут по умолчанию и очистим кэш-таблицы маршрутизации, чтобы наши изменения вступили в силу:

# ip route add default via 195.1.1.1 dev ppp2 table ivanov

# ip route flush cache

Рассмотрим еще один практический пример. Направим весь трафик на порт 21 через устройство eth1:

# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 21 -j MARK --set-mark 2

Теперь нужно создать правила для помеченных пакетов

# echo 202 21,tbl >> /etc/iproute2/rt_tables

# ip rule add fwmark 2 table 21.tbl

# ip route add default via 192.168.0.10 dev eth1 table 21.tbl

# ip route flush cache

Данный текст является ознакомительным фрагментом.