Linux Advanced Routing & Traffic Control HOWTO (Hubert, Graf) - страница 9

В этом листинге приведены приоритеты всех правил. Мы видим, что правила применяются ко всем пакетам (from all). Мы уже видели таблицу 'main', она выводится командой ip route ls , но таблицы 'local' и 'default' для нас новые.

Если мы хотим сделать что-то интересное, то нужно задать правила, использующие разные таблицы маршрутизации. Это позволит нам переопределить общесистемную таблицу маршрутизации.

За точной семантикой происходящего в ядре, когда есть несколько подходящих правил, обратитесь к документации ip-cref Алексея Кузнецова.

4.1. Простая маршрутизация по источнику.

Давайте опять рассмотрим реальный пример. У меня есть 2 (вообще-то 3, пора бы вернуть их) кабельных модема, подключенных к маршрутизатору Linux с NAT ('masquerading'). Люди с которыми я живу в одном доме, платят мне за использование Internet. Допустим одни из моих соседей ходит только на hotmail и хочет платить меньше. Мне это подходит, но при этом будет использоваться медленный канал.

Быстрое соединение имеет с моей стороны адрес 212.64.94.251, а с другой — 212.64.94.1. Медленное соединение получает динамический адрес, в данном примере это 212.64.78.148, адрес провайдера — 195.96.98.253.

Таблица local:

>[ahu@home ahu]$ ip route list table local

>broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1

>local 10.0.0.1 dev eth0 proto kernel scope host src 10.0.0.1

>broadcast 10.0.0.0 dev eth0 proto kernel scope link src 10.0.0.1

>local 212.64.94.251 dev ppp0 proto kernel scope host src 212.64.94.251

>broadcast 10.255.255.255 dev eth0 proto kernel scope link src 10.0.0.1

>broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1

>local 212.64.78.148 dev ppp2 proto kernel scope host src 212.64.78.148

>local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1

>local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1

Много очевидных вещей, но они должны быть где-то указаны. Вот здесь они и заданы. Таблица default — пустая.

Посмотрим теперь на таблицу main:

>[ahu@home ahu]$ ip route list table main

>195.96.98.253 dev ppp2 proto kernel scope link src

>212.64.78.148 212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251

>10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1

>127.0.0.0/8 dev lo scope link default via 212.64.94.1 dev ppp0

Создадим новое правило для нашего гипотетического соседа, которое будет называться 'John'. Хотя мы можем работать просто с числами, намного проще и понятней если мы определим названия наших таблиц в файле /etc/iproute2/rt_tables.

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