LINUX.ORG.RU
решено ФорумAdmin

ip route и ip rule - маршрутизация в linux - выпустить трафик через отдельный интерфейс

 , , ,


2

2

Господа, что ещё нужно сделать кроме этого, что бы трафик с 11.64 начал уходить через p2p1?

ip rule add from 192.168.11.64 table skype
ip route add 192.168.11.64 via 192.168.9.7 dev p2p1 table skype

Правило самое первое, и трафик должен ведь начать падать в таблицу. На деле, трафик как и ранее, уходит в более поздние таблицы:

# ip rule show
0:from all lookup local 
32758:from 192.168.11.64 lookup skype 
...

Пересылка трафика разрешена:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

ip rule add from 192.168.11.64 table skype

ip route add 192.168.11.64 via 192.168.9.7 dev p2p1 table skype

Что, прямо так?

Поясняю твой бред: если пакет пришел с адреса 192.168.11.64, то смотрим таблицу, где есть только маршрут доставки в адрес 192.168.11.64. Чтобы эти настройки сработали нужно получить пакет с 192.168.11.64 в 192.168.11.64.

Наверно этот специфический DGW должен быть ip route add default via 192.168.9.7 dev p2p1 table skype?

И еще, я уже задолбался повторять одно и то же.

НЕЛЬЗЯ ПРОПУСКАТЬ ПРЯМЫЕ МАРШРУТЫ которые автоматом заносятся только в main!

Правило номер 0: «from all lookup local»

Правило номер 1: «from all lookup main suppress_prefixlength 0»

Дальше хреначим свои хотелки типа «from 192.168.11.64 lookup skype »

Последнее правило со шлюзом по умолчанию.

Если правильный DGW есть только в main (и не жалко cpu), то можно добавить «from all lookup main». Если жалко CPU (main несколько сотен маршрутов), то делаем отдельную таблицу с DGW.

vel ★★★★★
()
Ответ на: комментарий от vel

Спасибо, что научаешь уму-разуму.

Наверно этот специфический DGW должен быть ip route add default via 192.168.9.7 dev p2p1 table skype?

Да. Поправил, и трафик пошел. Тоже думал, что наверно в этом, но не уверен был. Спасибо.

НЕЛЬЗЯ ПРОПУСКАТЬ ПРЯМЫЕ МАРШРУТЫ которые автоматом заносятся только в main!

Не понимаю… Скажи, пож-та, более простыми словами.

# ip rule show
0: from all lookup local 
32758: from 192.168.11.64 lookup skype 
...

Во первых, вообще не понимаю смысла правила номер 0. - from all, что означает?

Я решил, что это правило пролетает мимо, а потом начинается моя хотелка.

P.S. ты круто пишешь, но, до конца не врубаюсь. По сему такой вопрос ещё есть:

Ну, загнал я весь трафик с src 11,64 в skype, как сделать так, что бы не повторять все маршруты в этой таблице? Мне надо только трафик в Интернет гонять, а сейчас, похоже, надо будет повторить все подсети теперь в этой таблице, что бы локальный трафик до других подсетей шел правильно… - Помоги тупому учащемуся, плз. :)

Ещё раз, спасибо. Много раз перечитываю Ваши тексты.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

Пока на ум приходит метить трафик, что бы не городить маршруты, но это криво

кажется ответ здесь, но не понимаю что написано

Если правильный DGW есть только в main (и не жалко cpu), то можно добавить «from all lookup main». Если жалко CPU (main несколько сотен маршрутов), то делаем отдельную таблицу с DGW.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Во первых, вообще не понимаю смысла правила номер 0. - from all, что означает?

Первое правило бойцовского клуба - никогда не пропускать таблицу «local», которая описывает доставку в локальные (собственные) и специальные адреса.

Оно специально сделано с приоритетом «0», чтоб умные головы не пихали свои правила до просмотра таблицы local.

Таблица main теоретически не должна была содежать в себе DGW. Основная задача «main» это прямые маршруты связанные с интерфейсами (их туда добавляет ядро). Но т.к. по умолчанию маршруты добавляются в main, то получилось, что DGW всегда добавляли в main, а не в default.

Это удобно для 99% систем которые без policy routing, т.к. «ip ro» сразу показывает всё, без необходимости смотреть таблицу default.

Таблица правил здорового роутера с policy routing должна быть вида:

0:	from all lookup local
1:	from all lookup main suppress_prefixlength 0
....
32766:	from all lookup main
32767:	from all lookup default

vel ★★★★★
()
Ответ на: комментарий от DALDON

Чтобы меченый трафик попадал в нужную таблицу нужно правило

from all fwmark 0xXXX lookup YYYY

где-то после

from all lookup main suppress_prefixlength 0

Порядок правил задаётся через pref

ip ru add pref 1025 fwmark 1 unicast table xx

vel ★★★★★
()
Ответ на: комментарий от vel

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

В двух словах смысл подскажите: suppress_prefixlength 0?

Я так понял, что оно будет кидать всё в таблицу default? - Но смысл не понимаю.

DALDON ★★★★★
() автор топика
Ответ на: комментарий от vel

Огромное, огромное спасибо. Теперь стало понятно. Низчайший поклон. Ибо так, вот нихера не понятно.

Прошу проверить понимание:

По таблице здорового маршрутизатора выходит, что сперва трафик попадает в локальную петлю, смотрим, что если трафик не предназначен локальным службам, направляем его в main, и смотрим все правила, игнорируя DGW. Если ничего не нашлось подходящего, проходим по политикам добавленным системным администратором. И в конце снова уже возвращаем трафик в main, и там, если есть DGW, пакет дальше не пойдет, так-как найдет своё правило. Если нету (что, по идее правильно, в main не хранить DGW), уже направляем в default таблицу, и там трафик должен найти путь по-умолчанию, раз ничего выше не подошло. - Верно?

0:	from all lookup local
1:	from all lookup main suppress_prefixlength 0
....
32766:	from all lookup main
32767:	from all lookup default

Мега благодарность! Надеюсь, что всё понял правильно.

DALDON ★★★★★
() автор топика