Страница 2 из 3

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-02 4:24:30
Гость
kharkov_max писал(а):И еще один глупый вопрос. Как дать таблице 1 имя т.е. что б обращаться к таблице не по номеру а по имени.
По сути я хочу добавить в rc.conf статические маршруты для нескольких таблиц.
Имена вместо цифр можно сделать на основе переменных sh(1), напр.: sun=1; setfib $sun route add default 10.1.1.1. Но чтобы добавлять из rc.conf, надо похакать /etc/rc.d/routing чуток. Если будешь хакать то может пригодится:

Код: Выделить всё

> sysctl -a | fgrep fib
net.my_fibnum: 0
net.add_addr_allfibs: 1
net.fibs: 2
> sysctl -d net.my_fibnum
net.my_fibnum: default FIB of caller
> fgrep -m1 -B7 rt_add_addr_allfibs /sys/net/route.c
/*
 * By default add routes to all fibs for new interfaces.
 * Once this is set to 0 then only allocate routes on interface
 * changes for the FIB of the caller when adding a new set of addresses
 * to an interface.  XXX this is a shotgun aproach to a problem that needs
 * a more fine grained solution.. that will come.
 */
u_int rt_add_addr_allfibs = 1;
Нумерация fib'ов начинается с нуля.

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-02 4:28:02
Гость
Гость писал(а):Но чтобы добавлять из rc.conf, надо похакать /etc/rc.d/routing чуток
Впрочем для jail'ов уже есть:

Код: Выделить всё

> fgrep fib /etc/defaults/rc.conf
#jail_example_fib="0"                           # routing table for setfib(1)

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-02 8:50:32
kharkov_max
1. А можно просто создать скрипт и при старте системы его запустить
В скрипте будет:
setfib $sun route add default 10.1.1.1. и т.д.

2. Не свсем понятно как хакать...
Нет у Вас статейки ?

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-02 11:26:44
Гость
kharkov_max писал(а):1. А можно просто создать скрипт и при старте системы его запустить
В скрипте будет:
setfib $sun route add default 10.1.1.1. и т.д.
/usr/local/etc/rc.d/fibs:

Код: Выделить всё

#!/bin/sh

# REQUIRE: routing
# BEFORE: NETWORKING
# KEYWORD: nojail

sun=   1
venus= 2
pluto= 3

setfib $sun   route add default 10.1.1.1
setfib $venus route add default 10.1.2.1
setfib $pluto route add default 10.1.3.1
и не забудь сделать chmod +x.
kharkov_max писал(а):2. Не свсем понятно как хакать...
Расширяешь static_routes до static_routes_${i} (по аналогии с route_${i}), где ${i} - номер fib'а, добавляешь новую переменную, в которой указывается список fib'ов с дефолтом на net.my_fibnum и расширяешь очистку (route flush), чтобы она удаляла все маршруты рекурсивно из net.fibs кол-ва fib'ов.

Ничего сверхъестественного, что могло бы занять больше 10 мин. для знающего sh(1).

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-13 16:21:17
savio
как это добро заюзать??? (когдато давно на ред хате я нарадоваться не мог этой штуковине)

ядро и мир скомпилил. добавил 5 таблиц на всяк случай.
на серваке два канала инет от двух разных провов.
маршрут по умолчанию - на первого провайдера

Код: Выделить всё

setfib -0 route add default XXX.XXX.XXX.XXX
добавляю в следующую таблицу для второго прова

Код: Выделить всё

setfib -1 route add default YYY.YYY.YYY.YYY
второй пров выдал подсеть реальных айпишек. пробую с рабочей машины подключиться по впн.
подключился. получил айпишку. роутинг на данную айпишку добавилсчя во все таблицы. это так должно быть или как?
ради интереса грохнул роутингы в всех таблицах кроме "1". теперь пингуэться впн клиент тоба если делать

Код: Выделить всё

 setfib -1 ping yyy.yyy.yyy.yyy
правда с мира на эту айпишку попасть пока не могу, думаю шото напартачил сам, но это не важно.

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

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-13 16:35:47
savio
слегка разобрался........ (по поводу почему с мира на айпишку зайти не мог)
нада в фаерволе поразпихивать какие айпишки в какую таблицу.
у меня выгллядит так

Код: Выделить всё

[root@games /#/etc/mpd4]# ipfw list
00100 setfib 1 ip from any to any via gif0
00200 setfib 0 ip from any to any via ng0
00300 setfib 1 ip from any to yyy.yyy.yyy.yyy
00400 setfib 1 ip from yyy.yyy.yyy.yyy to any
65535 allow ip from any to any
[root@games /#/etc/mpd4]#

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-13 19:50:11
Гость
не пробовал vpn-сервер запускать с setfib? Например, setfib -1 mpd5?

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-14 0:43:56
savio
не пробовал. но не пайдет такой вариант даже если и сработает. завтра скажет начальство выдавать реальные+серый айпишки и что тогда? или еще плюс ко всему айпишли локалки, что б с инета в сетку доступ иметь.... одним словом такой вариант не подходит.... нда... к линуксу в этой части еще далековато, но будем юзать, разбираться в том что есть ...

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-25 21:52:22
KES
Это всё прикольно, что появилась такая мега фишка как setfib
А не подскажете ли Вы господа, как установить таблицу для маршрутизации для пакетов с локального хоста?
т.к. пакет уже имеет статус out
правила вида:
setfib 1 proto all
не помогают, пакет тупо уходит через тот интерфейс, через какой собирался уйти :st: ((

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-27 16:32:19
Sadok123
Yam писал(а):примерный sup-файл выглядеть будет так:

Код: Выделить всё

*default tag=RELENG_7
*default host=cvsup2.ru.FreeBSD.org
*default release=cvs delete use-rel-suffix compress
src-all
Ну а дальше как обычно, правите конфиг ядра, пересобираете, ставите и перезагружаетесь.
Угу. И получит он не STABLE, а 7.1-PRERELEASE :)

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-27 18:20:22
Yam
Научите, как до STABLE?

ЗЫ http://www.freebsd.org/doc/en_US.ISO885 ... -tags.html

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-27 18:24:06
paradox
Угу. И получит он не STABLE, а 7.1-PRERELEASE
ну если 7 то пофиг какая
главное та что в развитии
последняя

RELENG_7_0

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-11-27 19:49:50
Sadok123
Yam писал(а):Научите, как до STABLE?

ЗЫ http://www.freebsd.org/doc/en_US.ISO885 ... -tags.html
как я понял, на "семерке" никак. по тэгу RELENG_7_0 ты получишь 7.0-RELEASE-p6. на CURRENT я вообще пока не заглядываюсь :) сам живу на RELENG_7 - проблем не вижу. впрочем, машинка в роли домашней файлопомойки и ssh-тунели в домашнюю сеть на ней живут. а, ntpd еще...

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-08 12:43:07
savio
так и не смог на данный момент разобраться как запихивать трафик в таблицы....
продолжение темы, но более шире по ссылке ниже
http://forum.lissyara.su/viewtopic.php?f=4&t=13102
у кого-то получилось? напишите как плиз . гугл не помог.......

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-08 21:10:15
KES
собрать ядро с

Код: Выделить всё

options         ROUTETABLES=3

Код: Выделить всё

#setfib 0 route add default <I.S.P.1>
#setfib 1 route add default <I.S.P.2>
#setfib 0 traceroute ya.ru
#setfib 1 traceroute ya.ru

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-25 15:24:13
dekloper
kharkov_max писал(а):День добрый.

Пытаюсь включить на Freebsd 7.0 поддержку множественных таблиц маршрутизации.
Пытаюсь компилить ядро с опцией options ROUTETABLES=2, но выдает ошибку.

Не подскажете поддерживает Freebsd 7.0 данную функцию ?
И если поддерживает, то чего может не хватать.
Мое ядро перекомпиляно для поддержки IPFW и PF.

Заранее спасибо.
присоединюсь к вопросу..

а че делать, ежели надо более двух таблиц?
опять ядро компилять..?
через сисцтл оно не рулится?

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-25 23:54:42
Гость
dekloper писал(а):а че делать, ежели надо более двух таблиц?
опять ядро компилять..?
через сисцтл оно не рулится?
loader tunable, net.fibs:

Код: Выделить всё

sys/net/route.c:
/*
 * Allow the boot code to allow LESS than RT_MAXFIBS to be used.
 * We can't do more because storage is statically allocated for now.
 * (for compatibility reasons.. this will change).
 */
TUNABLE_INT("net.fibs", &rt_numfibs);




sys/net/route.h:
/* MRT compile-time constants */
#ifdef _KERNEL
 #ifndef ROUTETABLES
  #define RT_NUMFIBS 1
  #define RT_MAXFIBS 1
 #else
  /* while we use 4 bits in the mbuf flags, we are limited to 16 */
  #define RT_MAXFIBS 16
  #if ROUTETABLES > RT_MAXFIBS
   #define RT_NUMFIBS RT_MAXFIBS
   #error "ROUTETABLES defined too big"
  #else
   #if ROUTETABLES == 0
    #define RT_NUMFIBS 1
   #else
    #define RT_NUMFIBS ROUTETABLES
   #endif
  #endif
 #endif
#endif

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-28 21:04:17
Bormental
А где можно прочитать про алгоритм разделения по какому каналу пакет пойдет?просто немного не понимаю как это работает и для чего? Как ОС выбирает с каким маршрутом работать если у него два по дефолту..., а если пакет проходящий через маршрутизатор... получается есть вероятность его дублирования или клонирования?

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-29 17:02:45
KES
все процессы в системе имеют FIB 0, т.е. если ничего конкретно не сказано, то пакет уйдет по дефолт маршруту таблицы 0
Если даже в каких либо других таблицах есть дефолт маршрут, а в 0 нет, то пакеты от процессов с FIB 0 идти никуда не будут

Например, представим что у нас нет никаких маршрутов ни в каких таблицах
setfib 1 route add default .....

setfib 0 ping ya.ru -- network unreachable
setfib 1 ping ya.ru -- пакет уйдет по дефолт маршруту в таблице 1

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-29 21:04:06
Bormental
Понял, т.е. ждем заточку ПО под поддержку данных фич, иначе смысла в этом всем мало, либо рожание скриптов под это дело.... хотя применить это можно под несколько подсистем на одной платформе.... я просто сейчас вожусь с рациональным распределением нагрузки на два канала интернета ,вот поиски навели на iproute2 но как это дело применить пока ума не приложу

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2008-12-29 22:29:37
dekloper
Bormental писал(а):поиски навели на iproute2 но как это дело применить пока ума не приложу
эта бадяга (а также iptables) готовилась исключительно для поедания пингвином..
под фрей врядли это когданибудь заработает, поскольку их ядра мало имеют общего (если не сказать, что НИЧЕГО)

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2009-07-21 0:59:24
Fioktist
KES писал(а):собрать ядро с

Код: Выделить всё

options         ROUTETABLES=3
Гость писал(а): /usr/local/etc/rc.d/fibs

Код: Выделить всё

#!/bin/sh

# REQUIRE: routing
# BEFORE: NETWORKING
# KEYWORD: nojail

sun=   1
venus= 2
pluto= 3

setfib $sun   route add default 10.1.1.1
setfib $venus route add default 10.1.2.1
setfib $pluto route add default 10.1.3.1
и не забудь сделать chmod +x.
скажите а в Freebsd 7.2 тоже из /usr/local/etc/rc.d/{скрипт}а запускать, или стало возможным из /etc/rc.conf ???

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2009-07-21 9:28:00
terminus
через rc.conf пока нельзя :(
Причем где-то в PR были патчи на rc добавляющие этот функционал, но как обычно никто не шевелится его мерджить...

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2009-07-22 19:12:16
Fioktist
=\
при использовании multi routing tables + 3 NAT (2isp+1raionnet(static route)) + 1 dmz + 1 localnet (static route)= 5 net cards

ядро с

Код: Выделить всё

options         ROUTETABLES=2
/usr/local/etc/rc.d/fibs

Код: Выделить всё

#!/bin/sh

# REQUIRE: routing
# BEFORE: NETWORKING
# KEYWORD: nojail

isp1=1
isp2=2

setfib $isp1 route add default i.s.p.ip1
setfib $isp2 route add default i.s.p.ip2

имеется-ли необходимость вписывать в /etc/rc.conf строку с defaultrouter="I.S.P.ME"
или-же надо привести запись в /etc/rc.conf к defaultrouter="NO"

Re: Множественные таблицы маршрутизации Freebsd 7.0

Добавлено: 2009-07-23 20:10:01
terminus
defaultrouter в rc.conf влияет на установку маршрута по-умолчанию для нулевой таблицы маршрутизации. Если хотите - вписывайте, а если не хотите то тогда не вписывайте в rc.conf, а используйте тот отдельный скрипт в котором и перечисляйте все номера fib-ов какие надо... По-моему разници не будет. Специально выставлять defaultrouter="NO" не надо - просто не писать или закомментировать.


---

к стати - после того как ядро уже собранос опцией

Код: Выделить всё

options         ROUTETABLES=2
появляется возможность менять количество таблиц через /boot/loader.conf

Код: Выделить всё

net.fibs=6
http://www.freebsd.org/releases/7.1R/errata.html