Перейти к содержанию

Два маршрута по умолчанию одновременно


Рекомендуемые сообщения

есть роутер (Linux RedHat9), на нем интерфейс во внутреннюю сеть и 2 в интернет - ррр0 и ррр3.

(есть еще несколько интерфейсов в другие локальные сети, но это не существенно).

Можно задать маршрут

ip r a default dev ppp0

а можно

ip r a default dev ppp3

все прекрасно работает.

а вот если я пытаюсь сделать вот это:

ip route add default equalize nexthop dev ppp0 weight 1 nexthop dev ppp3 weight 1

то все затыкается.

Eще есть вот такая бяка (мне кажется, что связана с предыдущей):

Если создать таблицу маршрутизации, например vpn2, промаркировать все пакеты идущие из внутренней сети с адреса 172.20.32.44 маркой 2, то задав вот такое правило:

ip rule add fwmark 2 table vpn2

мы все эти пакеты направляем в таблицу vpn2 а дальше уже маршрутизируем их как хотим.

Все прекрасно работает.

Но, ведь можно и по другому (попроще, без маркировки). Сразу дать команду:

ip rule add from 172.20.32.44 table vpn2

Но так к сожалению не работает.

Причем, самое интересное, пакеты в таблицу vpn2 попадают. Это можно судить по тому, что в этой таблице очень много маршрутов и с указанного адреса можно пойти по любому из них, КРОМЕ МАРШРУТА ПО УМОЛЧАНИЮ.

И еще один момент: если на интерфейсе (того самого маршрута по умолчанию, куда не хотят идти пакеты)сделан не маскарадинг, а SNАT, то второй вариант тоже работает.

Кто-нибудь сталкивался с подобным?

В чем может быть проблема?

ЗЫ: Думал, что возможно старый и глючной iproute2 (система-то старая). Обновил - не помогло.

Ссылка на комментарий
Поделиться на другие сайты

volkoff писал(а) Tue, 03 February 2009 15:36

И еще один момент: если на интерфейсе (того самого маршрута по умолчанию, куда не хотят идти пакеты)сделан не маскарадинг, а SNАT, то второй вариант тоже работает.

А под что реально маскарадится? Подозреваю, что в указанную таблицу маршрутизации пакеты попадаются после nat-POSTROUTING, поэтому трафик маскарадится под адрес интерфейса системного default route. У себя я маркирую трафик в mangle, а затем по метке отправляю его в нужную таблицу и по той же метке делаю SNAT.

Ссылка на комментарий
Поделиться на другие сайты

поэтому трафик маскарадится под адрес интерфейса системного default route

как это?

маскарадится вот так:
iptables –t nat –A POSTROUTING –o ppp0 -j MASQUERADE
iptables –t nat –A POSTROUTING –o ppp3 -j MASQUERADE

вот маршруты по умолчанию:
ip r a default dev ppp0 
ip r a default dev ppp3 table vpn2 

и почему же вот так
IPTABLES –t mangle –I PREROUTING 1 –s 172.20.32.44 –d ! 172.20.0.0/16 –j MARK -–set-mark 2
ip rule add fwmark 2 table vpn2

работает,
а вот так
ip rule add from 172.20.32.44 table vpn2

не работает?
Ссылка на комментарий
Поделиться на другие сайты

volkoff писал(а) Thu, 05 February 2009 15:40

поэтому трафик маскарадится под адрес интерфейса системного default route

как это?

Например, есть ppp0 с адресом x.x.x.x и ppp1 с адресом y.y.y.y. Есть роуты:

ip r a default dev ppp0

ip r a default dev ppp1 t vpn

И есть правило, которое посылает пакеты в таблицу vpn. Тогда маскарадиться пакеты будут под адрес x.x.x.x, но при этом уходить через ppp1. Поэтому при использовании policy routing нужно применять SNAT, а не MASQUERADE.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
Поэтому при использовании policy routing нужно применять SNAT, а не MASQUERADE. 

c удовольствием применил бы SNAT, но беда в том, что адреса x.х.х.х и у.у.у.у. неизвестны - присваиваются динамически.
А чтобы задать SNAT нужно явно указать адрес интерфейса.
В MASQUERADE достаточно имени интерфейса, поэтому им и пользуюсь.

А под что реально маскарадится? Подозреваю, что в указанную таблицу маршрутизации пакеты попадаются после nat-POSTROUTING

Вобще-то самому жутко интересно после чего пакеты попадают в таблицу маршрутизации.
У меня сложилось впечатление, что ДО прохождения таблицы nat-FORWARD.
Я как-то очень сильно почудил:
- в nat-PREROUTING маркировал некоторые пакеты,
- в далее по этой марке направлял их в нужную таблицу маршрутизации,
- в таблице маршрутизации задавал маршрут по умолчанию,
- далее в nat-FORWARD пакеты сортировались (и перемаркировывались) в зависимости от того через какой интерфейс уходят,
- после этого опять в соответствии с маркой направлялись в нужную таблицу маршрутизации,
- а потом еще шейпились в соответствии с маркой.
(Ну а натились, соответственно в nat-POSTROUTING. Кстати тоже интересно - до того как шейпились (tc - htb) или позже?)
Такая дикая схема получилась случайно (в результате логической ошибки), но все работало. Чем я был очень сильно удивлен.
Ссылка на комментарий
Поделиться на другие сайты

volkoff писал(а) Sun, 01 March 2009 00:08

Поэтому при использовании policy routing нужно применять SNAT, а не MASQUERADE. 

c удовольствием применил бы SNAT, но беда в том, что адреса x.х.х.х и у.у.у.у. неизвестны - присваиваются динамически.

Известны. См. скрипты /etc/ppp/ip-up*.

Ссылка на комментарий
Поделиться на другие сайты

Столкнулся с подобной проблемой. Решения для себя пока не нашел.

Но вот в процессе изучения вопроса, натолкнулся на такой факт:

есть интерфейс смотрящий на провайдера ppp1024 ip xx.xx.xx.xx

есть правило в таблицах

iptables -t nat -A POSTROUTING -o ppp1024 -j SNAT --to-source xx.xx.xx.xx

имеем хитро навороченные полиси роутинг, в которых уже сам запутался.

но вобщемто вопрос такой, могут ли из-за не правильных полиси роутинг с интерфейса ppp1024 выходить пакеты с источником из локальных сетей. И еще более глупый вопрос, после прохождения правил ПОСТРОУТИНГ таблицы нат, может ли поменяться решение о дальнейшем следовании пакета (в часности исходящий интерфейс).

на практике такое происходит.

Ссылка на комментарий
Поделиться на другие сайты

См. скрипты /etc/ppp/ip-up*. 

хм... т.е. советуете задавать правила SNAT в этих скриптах?
поднялся интерфейс - задали правили с нужным адресом
упал - удалили (в ip-down)
поднялся опять (с новым адресом) - опять задали
в принципе, возможно это решение.
просто в голову не приходило, что можно вот так (можно сказать динамически) менять правила файерволла.
Ссылка на комментарий
Поделиться на другие сайты

Сделал так, как написано в предыдущем посте - все прекрасно работает!

Спасибо EvilShadow за подсказку.

В принципе тему можно закрывать.

Но все-таки не понятно почему со SNAT`ом все работает, а с маскарадингом работать не хочет.

Ссылка на комментарий
Поделиться на другие сайты

volkoff писал(а) Sat, 14 March 2009 20:31

Но все-таки не понятно почему со SNAT`ом все работает, а с маскарадингом работать не хочет.

Скорее всего потому, что исходящий интерфейс и соотв. маскарадный адрес определяется до того, как начинает работать полиси роутинг, поэтому пакеты уходят по нужным маршрутам, но с чужими адресами. Перечитывать топик и разбираться подробнее лениво Smile

Удачи.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...