The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Баг или фича iproute2 и что тогда делать?, !*! besarg, 15-Фев-07, 10:50  [смотреть все]
Привет. Буду краток, суть будет ясна:
схема
<192.168.0.0/24> - <eth1-192.168.0.1 шлюз eth0-10.0.0.2>-<10.0.0.1 пров>
естественно default gw 10.0.0.1

пров добавляет gw 10.10.10.1 для обслуживания сети 192.168.1.0/24
делаем подобную схему:
<192.168.1.0/24> - <eth2-192.168.1.1 шлюз eth0:1-10.10.10.2>-<10.10.10.1 пров>
пишем правила для iproute2 в итоге имея:
0:      from all lookup 255
32763:  from 10.10.10.0/30 lookup T2
32764:  from 192.168.14.0/24 lookup T2
32766:  from all lookup main
32767:  from all lookup default
$ ip route list table T2
10.10.10.0/30 via 10.10.10.2 dev eth0
192.168.1.0/24 via 192.168.1.1 dev eth2
default via 10.10.10.1 dev eth0

обратите внимание на название интерфейса eth0, должен быть eth0:1 забиваемый правилом:
ip route add default via 10.10.10.1 dev eth0:1 table T2
(об этом ниже)

в данной схеме все запросы из сети 192.168.1.0/24 всё равно продолжают идти по default gw  10.0.0.1, хотя правила чётко говорят что нужно идти по 10.10.10.1

Подключаем ещё один физический интерфейс eth3, и на него сажаем 10.10.10.2 поменяв в таблице роутинга на default via 10.10.10.1 dev eth3. Тут всё приходит в норму, все запросы идут туда, куда им сказано.

iproute2 не умеет оперировать с разными таблицами, если они указывают на единый _физический_ интерфейс? Это баг или фича?

Что мне тогда делать в этой ситуации, если связь с провом только через 1 канал и один физический интерфейс?

  • Баг или фича iproute2 и что тогда делать?, !*! besarg, 10:51 , 15-Фев-07 (1)
    да опять опечатка! :(
    >32764:  from 192.168.14.0/24 lookup T2
    тут конечно
    32764:  from 192.168.1.0/24 lookup T2
  • Баг или фича iproute2 и что тогда делать?, !*! pavel_simple, 11:07 , 15-Фев-07 (2)
    • Баг или фича iproute2 и что тогда делать?, !*! besarg, 11:51 , 15-Фев-07 (3)
      >Это баг или фича? -- тут подсказать не смогу -- так ли
      >оно вообще или нет.
      >А как насчёт создать виртуальный интерфейс другого рода (dummy, tap , vlan)
      >и посадить их через бридж на eth0

      не получается с бриджем. вкратце вот так:
      $ ip route add 0/0 via 10.10.10.1 dev br0 table T2
      RTNETLINK answers: Network is unreachable
      где br0 бридж из eth2 и eth0:1
      мне кажется требует наличие точной связки ip - interface.

  • Баг или фича iproute2 и что тогда делать?, !*! s_dog, 12:19 , 15-Фев-07 (4)
    • Баг или фича iproute2 и что тогда делать?, !*! besarg, 12:27 , 15-Фев-07 (5)
      >В качестве эксперимента добавил на интерфейс алиас (eth0:1)
      >в /sbin/ip route list table all eth0:1  не появился, просто добавились
      >записи
      >~ /sbin/ip route list table all | grep 192.168
      >192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1
      >
      >local 192.168.1.1 dev eth0  table local  proto kernel  scope
      >host  src 192.168.1.1
      >broadcast 192.168.1.0 dev eth0  table local  proto kernel  scope
      >link  src 192.168.1.1
      >broadcast 192.168.1.255 dev eth0  table local  proto kernel  scope
      >link  src 192.168.1.1
      >
      >Получается надо указывать физический интерфейс.


      то есть средствами iproute2 запланированное мероприятие сделать невозможно?
      прелестно.. а какие ещё пути задания маршрутов в linux есть?

      • Баг или фича iproute2 и что тогда делать?, !*! besarg, 12:53 , 15-Фев-07 (6)
        >>В качестве эксперимента добавил на интерфейс алиас (eth0:1)
        >>в /sbin/ip route list table all eth0:1  не появился, просто добавились
        >>записи
        >>~ /sbin/ip route list table all | grep 192.168
        >>192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1
        >>
        >>local 192.168.1.1 dev eth0  table local  proto kernel  scope
        >>host  src 192.168.1.1
        >>broadcast 192.168.1.0 dev eth0  table local  proto kernel  scope
        >>link  src 192.168.1.1
        >>broadcast 192.168.1.255 dev eth0  table local  proto kernel  scope
        >>link  src 192.168.1.1
        >>
        >>Получается надо указывать физический интерфейс.
        >
        >
        >то есть средствами iproute2 запланированное мероприятие сделать невозможно?
        >прелестно.. а какие ещё пути задания маршрутов в linux есть?

        пока не спорол горячку с установкой другой ОС, поинтересуюсь, возможно ли исполнить вышеуказанную схему с одним физическим интерфейсом на 2-а и более маршрутов например в freebsd? в принципе с бсд я знаком, но в нюансах, как например вышеописанный, опасаюсь аналогичной ситуации.

        p.s. покупать нормальный роутер циско нет денег

      • Баг или фича iproute2 и что тогда делать?, !*! s_dog, 12:56 , 15-Фев-07 (7)
  • Баг или фича iproute2 и что тогда делать?, !*! s_dog, 13:02 , 15-Фев-07 (8)
    • Баг или фича iproute2 и что тогда делать?, !*! besarg, 13:16 , 15-Фев-07 (9)
      >ip route default table T2 via 10.10.10.1
      >Не поможет?

      $ ip route add default table T2 via 10.10.10.1
      RTNETLINK answers: File exists
      не поможет.

      читаю доку по вашей ссылке, пока ничего путного додумать немогу :(

      • Баг или фича iproute2 и что тогда делать?, !*! s_dog, 13:54 , 15-Фев-07 (10)
        • Баг или фича iproute2 и что тогда делать?, !*! besarg, 14:24 , 15-Фев-07 (11)
          >>>ip route default table T2 via 10.10.10.1
          >>>Не поможет?
          >>
          >>$ ip route add default table T2 via 10.10.10.1
          >>RTNETLINK answers: File exists
          >>не поможет.
          >>
          >>читаю доку по вашей ссылке, пока ничего путного додумать немогу :(
          >
          >
          >ip route del default table T2
          >ip route add default table T2 via 10.10.10.1

          да я к тому что такая запись уже присутствует, нет смысла удалять, чтобы потом вставить.
          default via 10.10.10.1 dev eth0

          >http://www.lartc.org/lartc.pdf
          >http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html

          но вот хоть убей не понимаю, что не работает. задачу уже просто сминимизировал:
          необходимо чтобы со шлюза, где default gw 10.0.0.1, пакеты с адреса 10.10.10.2 шли через 10.10.10.1:

          ip addr add 10.10.10.2/30 dev eth0 brd +
          ip rule add from 10.10.10.2 table T2
          ip route add 10.10.10.0/30 via 10.10.10.2 table T2
          ip route add default table T2 via 10.10.10.1
          #или сути не меняет такая запись ip route add 0/0 via 10.10.10.1 table T2
          ip route flush cache

          ну вот всё ведь верно

          ip route list table T2
          10.10.10.0/30 via 10.10.10.2 dev eth0
          default via 10.10.10.1 dev eth0

          ip rule ls            
          0:      from all lookup 255
          32765:  from 10.10.10.2 lookup T2
          32766:  from all lookup main
          32767:  from all lookup default

          однако:
          $ traceroute -n ya.ru -s 10.10.10.2
          traceroute to ya.ru (213.180.204.8) from 10.10.10.2, 30 hops max, 40 byte packets
          1  10.0.0.1  2.057 ms  0.867 ms  1.653 ms

          аааа, я щас лопну :(

          • Баг или фича iproute2 и что тогда делать?, !*! s_dog, 14:56 , 15-Фев-07 (12)
          • Баг или фича iproute2 и что тогда делать?, !*! perece, 17:05 , 15-Фев-07 (13)
            • Баг или фича iproute2 и что тогда делать?, !*! besarg, 05:34 , 16-Фев-07 (14)
              >>но вот хоть убей не понимаю, что не работает. задачу уже просто
              >>сминимизировал:
              >>необходимо чтобы со шлюза, где default gw 10.0.0.1, пакеты с адреса 10.10.10.2
              >>шли через 10.10.10.1:
              >>
              >>ip addr add 10.10.10.2/30 dev eth0 brd +
              >>ip rule add from 10.10.10.2 table T2
              >>ip route add 10.10.10.0/30 via 10.10.10.2 table T2
              >>ip route add default table T2 via 10.10.10.1
              >>#или сути не меняет такая запись ip route add 0/0 via 10.10.10.1
              >>table T2
              >>ip route flush cache
              >а можно ли это так сокращать? я всегда пишу 'flush table cache'

              в документации так и пишут, возьму ваш совет на вооружение

              >
              >и без этого не заработает.
              >>
              >>ну вот всё ведь верно
              >>
              >>ip route list table T2
              >>10.10.10.0/30 via 10.10.10.2 dev eth0
              >>default via 10.10.10.1 dev eth0
              >>
              >>ip rule ls
              >>0:      from all lookup 255
              >>32765:  from 10.10.10.2 lookup T2
              >>32766:  from all lookup main
              >>32767:  from all lookup default
              >>
              >>
              >>однако:
              >>$ traceroute -n ya.ru -s 10.10.10.2
              >>traceroute to ya.ru (213.180.204.8) from 10.10.10.2, 30 hops max, 40 byte packets
              >>
              >> 1  10.0.0.1  2.057 ms  0.867 ms  1.653
              >>ms
              >
              >вы вообще в курсе, как traceroute работает? если 10.10.10.1 и 10.0.0.1 -
              >одна и та же железка физически, то она имеет право (и

              да, это порт на циске у прова.

              >лево) так отвечать, даже если пакет ушел от вас с dst
              >MAC отрезолвенным по 10.10.10.1

              то есть, в моём случае 10.10.10.1 не видать как следующих hop? или как мне посмотреть более внятно чем traceroute? ( ещё использую mtr-tiny)

              >и кста... о MAC: а они отличаются вообще?
              >arp -n | grep eth0
              >?
              естеcтвенно совпадает, я же делал (выше описано) так:

              ip addr add 10.10.10.2/30 dev eth0 brd +

              но ваша мысль о том, что мне необходимо назначить другой mac?

              >
              >\^P^/
              я сделал ip route add default via 10.10.10.1 для table main , а не для конкретной T2, и результат меня удивил, следующий hop всегда 10.0.0.1  и обратно ничего не возвращается.
              Похоже что пров просто заворачивает с 10.10.10.1 на 10.0.0.1
              Так что проблема не в iproute2, а в недоделанной настройке прова. Но это пока лишь догадки, продолжаю изучение.





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру