Назад | Перейти на главную страницу

Маршрутизация на основе политик на интерфейсе моста

В настоящее время я настраиваю Ubuntu 12.04 с двумя сетевыми интерфейсами. eth0 находится на LAN_USERS (192.168.5.0/24), предназначенном для пользователя, а eth1 находится на LAN_INFRA (10.0.4.0), предназначенном для управления. Кроме того, я установил мост на eth1.

cat /etc/network/interfaces:

auto eth0
iface eth0 inet static
  address 192.168.5.180
  netmask 255.255.255.0
  network 192.168.5.0
  broadcast 192.168.5.255
  gateway 192.168.5.1

auto eth1
iface eth1 inet manual

auto br1
iface br1 inet static
  address 10.0.4.5
  netmask 255.255.255.0
  network 10.0.4.0
  broadcast 10.0.4.255
  gateway 10.0.4.1
  bridge_ports eth1
  bridge_stp on
  bridge_fd 0
  bridge_waitport 0
  1. Начиная с Ubuntu 12.04, фильтрация обратного пути включена (rp_filter = 1)
  2. Выход # route -n является:
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.5.1     0.0.0.0         UG    100    0        0 eth0
    10.0.4.0        0.0.0.0         255.255.255.0   U     0      0        0 br1   
    192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    

Из-за фильтрации обратного пути br1 не отображается в сетях, отличных от 10.0.4.0. Я мог бы отключить фильтрацию обратного пути, но решил настроить маршрутизацию на основе политик.

Маршрутизация на основе политик

  1. echo "250 infra >> /etc/iproute2/rt_tables
  2. ip rule add iif br1 table infra
  3. ip route add to default dev br1 table infra
  4. Параметры конфигурации ядра: CONFIG_IP_ADVANCED_ROUTER = y и CONFIG_IP_MULTIPLE_TABLES = y
  5. net.ipv4.ip_forward = 0
  6. net.ipv4.conf.eth1.rp_filter = 1
  7. net.ipv4.conf.br1.rp_filter = 1
  8. net.ipv4.conf.all.log_martians = 1

И не работает ....

Как я могу отладить свои правила PBR? Есть ли очевидные ошибки в моей настройке?

Ура

ОБНОВЛЕНИЕ: мне нужно маршрутизировать ответы на пакеты, приходящие от br1, обратно через br1, а не через eth0. Мой самый простой вариант использования: эхо-запросы от 192.168.5.10 до 10.0.4.5 не возвращают причину маршрута по умолчанию и rp_filter = 1. Они сбрасываются как марсианские пакеты.

В вашей конфигурации сказано: «Если пакет прибыл на br1, отправьте его через br1». Это явно не имеет смысла. Подобные правила предназначены для маршрутизаторов, но вы даже не упоминаете маршрутизацию.

Вы имеете в виду: «Отправляйте пакеты, которые являются ответом на пакеты, пришедшие на br1 через br1». Это можно сделать с помощью меток пакетов Netfilter и ip rule вариант fwmark. Но здесь это не имело бы смысла. Поскольку вы используете rp_filter, вы можете просто маршрутизировать по целевому адресу. Вам даже не нужна расширенная маршрутизация (ip rule). Для этого. Обычная обычная маршрутизация должна выполнить свою работу: «Отправить 10.0.4.0/24 через br1, остальное через eth0».

Вы объяснили, что вы сделали, но не упомянули ни одной задачи, требующей сложной настройки. Если вы ничего особенного не делаете, что тогда пойдет не так?