LINUX.ORG.RU
ФорумAdmin

проблема с policy routing


0

0

Проблема с policy routing (маршрутизация от источника).


Исходные данные:
Есть роутер RH7.2 2.4.17 (ROUTER) с двумя интерфейсами eth0 & eth1
eth0 - 10.0.50.1     --> net0=LAN0 10.0.50.0/24
eth1 - 192.168.200.8 --> net2=192.168.200.0/28 --> LAN2 192.168.0.0/16
eth1:0 - 10.0.1.1    --> net3=10.0.1.0/24 --> LAN3 10.0.1.0/24
                                          --> LAN4 192.168.1.0/24

Сеть LAN0 (10.0.50.0/24) через NAT выходит во внешние сети (которые за eth1)

За eth1 наблюдается следующее:
- большая сеть LAN2 c адресацией 192.168.0.0/16, router сразу выходит через 
  GW1 (192.168.200.1), для этой сети он виден под адресом 192.168.200.8 
- небольшая локальная сеть LAN3 10.0.1.0/24, находящаяся в том же сегменте 
  с роутером, для LAN3 роутер виден как 10.0.1.1
- сеть LAN4 с адресацией 192.168.1.0/24 (к сожалению ее адресное пространство
  пересекается с LAN2, но с LAN2 они не связаны и друг о друге не знают).
  В LAN4 роутер выходит через GW2 (10.0.1.10) и для LAN4 он (роутер) виден
  как 10.0.1.1.

  То есть сети LAN3 и LAN4 друг друга видят, но не видят LAN2
  Роутер видит LAN2 (за исключением 192.168.1.0/24), видит LAN3 и LAN4, ну и
  LAN0 естественно.
  Сеть LAN0 выходит в сеть LAN2 через NAT под адресом 192.168.200.8,
  а в сети LAN3 и LAN4 тоже через NAT под адресом 10.0.1.1

схема сети такая:


internal LAN0 ---> eth0  ROUTER-->
10.0.50.0/24    10.0.50.1         



   192.168.200.8  
                 192.168.200.1                                        
ROUTER eth1  <---> GW1 <--->  LAN2 
   NAT-->                     192.168.0.0/16  
      eth1:0<---> LAN310.0.1.0/24    
                  GW2  <---------> LAN4
     10.0.1.1    10.0.1.10        192.168.1.0/24
     




  Роутинг на router сейчас настроен так
  eth1 net 192.168.200.0/28 eth1
  eth1 net 192.168.0.0/16 gw1 metric 2
  eth1 net 10.0.1.0/24 eth1
  eth1 net 192.168.1.0/24 gw2 metric 1
  Таким образом вышенаписанное состояние видимости сетей реализуется.

  Но появилась надобность сделать следующее - из сети LAN0 видеть сеть LAN4,
  а с роутера видеть сеть LAN2 (полностью, включая 192.168.1.0/24)
  Это реализуется только роутингом от источника (роутинг на различные GW, 
  в зависимости от адреса отправителя)
  Или по другому (переформулирую) - роутер должен быть виден
   из сети LAN2 под адресом 192.168.200.8, а
   из сети LAN4 под адресом 10.0.1.1
   и сеть LAN0 должна видеть LAN4

  Соответственно нужно реализовать следующее:
  - если адрес отправителя 192.168.200.8, то использовать GW1
  - если адрес отправителя 10.0.1.1, то использовать GW2 (для LAN4)
  Роутить от источника позволяет пакет iproute2, а точнее рулезы настраиваются
  через ее утилиту ip
  
  Почитал Adv-Routing-HOWTO, пересобрал ядро (включив поддержку policy routing),
  скомпилирвал iproute2, и воспользовался полученной утилитой ip для создания
  правил:

  echo 200 lan2 >> /etc/iproute2/rt_tables
  ip rule add from 192.168.200.8 table lan2
  ip route add default via 10.0.1.10 (это gw2) dev eth1 table lan2

  echo 201 lan4 >> /etc/iproute2/rt_tables
  ip rule add from 10.0.1.1 table lan4
  ip rule add from 10.0.50.0/24 table lan4
  ip route add default via 10.0.1.10 (это gw2) dev eth1 table lan4

  Настроенный прежде роутинг не трогал.
  Таким образом правило правило для lan4 должно бы выполняться ранее остального
  роутинга (который в таблице main находится).

  Тем не менее ничего не происходит - в смысле работает это дело только
  наполовину - чего только не делал, все равно router виден либо из lan2, либо из lan4, но никак не вместе,   ну а сеть lan0 за NAT вообще никоим образом на ip rule не реагирует
  (похоже пакеты из сеть lan0 игнорируют правила ip rule).

  В общем тут явно где то ошибка закралась, вот только где..
  Или маршрутизацию в разные подсети (но с одной и той же адресацией) через
  разные гейты настроить невозможно? Не верю..


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.