iproute2: Отличия в настройке Debian 6 и CentOS 5

В этой заметке кратко опишу настройку iproute2 для ситуации, когда необходимо отправлять ip пакеты с того же интерфейса на которой они пришли.


Схема подключения к серверу выглядит следующим образом:

     +---------+
     | router1 |-------+
     +---------+       | eth0
                    +---------+
                    | server  |
                    +---------+
     +---------+       | eth1
     | router2 |-------+
     +---------+

Сервер имеет два сетевых интерфейса eth0 и eth1, задача состоит в том, чтобы при обращении к конкретному интерфейсу, ответные пакеты уходили на роутер подключенный к этому интерфейсу, а не через маршрут по-умолчанию.
Для решения задачи будем использовать iproute2.

Адресация в схеме:

eth0 - 192.168.0.2/24
eth1 - 192.168.1.2/24
router1 - 192.168.0.1/24
router2 - 192.168.1.1/24

Предварительно создадим таблицы маршрутизации для iproute2

echo 1 router_1 >> /etc/iproute2/rt_tables
echo 2 router_2 >> /etc/iproute2/rt_tables

Затем приступаем к настройке непосредственно маршрутизации.

В Debian 6 есть возможность автоматически запускать скрипты при поднятии интерфейса, для этого в каталоге /etc/network/if-up.d создаем скрипт iproute2.sh со следующим содержанием:

#!/bin/bash
 
/sbin/ip route add default via 192.168.0.1 dev eth0 table router_1
/sbin/ip route add default via 192.168.1.1 dev eth1 table router_2
 
/sbin/ip rule add from 192.168.0.2 table router_1
/sbin/ip rule add from 192.168.1.2 table router_2

Не забываем сделать скрипт запускаемым

chmod +x iproute2.sh

Теперь про загрузке Debian и поднятии сетевых интерфейсов у нас будут создавать нужные нам правила маршрутизации.

В CentOS 5 маршрутизация настраивается следующим образом: в каталоге /etc/sysconfig/network-scripts есть скрипт ifup-routes, который при поднятии интерфейса считывает содержимое файлов route-eth<n> и rule-eth<n>.
Следовательно, создаем нужные нам файлы:

route-eth0

default via 192.168.0.1 table router_1

route-eth1

default via 192.168.1.1 table router_2

rule-eth0

from 192.168.0.2 table router_1

rule-eth1

from 192.168.1.2 table router_2

Комментарии запрещены.