URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95474
[ Назад ]

Исходное сообщение
"Static routes во FreeBSD 10 "

Отправлено Oleg A , 04-Мрт-14 14:53 
Добрый день!

Впервые в FreeBSD 10 прописываю статические маршруты в файле rc.conf
=======
static_routes="mh max"
route_mh="192.168.55.0 192.168.50.1 -netmask 0xffffff00"
=======
тем не менее маршруты не прописываются в таблице машршрутов что проверяю по команде netstat -nr.
С коммандной строки маршуты применяются без проблем.
Такая ситуация уже на 2-шлюзах.
На предудущих версиях операционки таких проблем никогда не было.

Почему в десятке не применяются маршруты с rc.conf?


Содержание

Сообщения в этом обсуждении
"Static routes во FreeBSD 10 "
Отправлено gd , 04-Мрт-14 15:24 
>[оверквотинг удален]
> =======
> static_routes="mh max"
> route_mh="192.168.55.0 192.168.50.1 -netmask 0xffffff00"
> =======
> тем не менее маршруты не прописываются в таблице машршрутов что проверяю по
> команде netstat -nr.
> С коммандной строки маршуты применяются без проблем.
> Такая ситуация уже на 2-шлюзах.
> На предудущих версиях операционки таких проблем никогда не было.
> Почему в десятке не применяются маршруты с rc.conf?

адреса интерфейсов (в частности того, откуда виден 192.168.50.1) назначены статикой или получаются динамически?


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 00:19 
> адреса интерфейсов (в частности того, откуда виден 192.168.50.1) назначены статикой или
> получаются динамически?

на всех интерфейсах адреса статичны



"Static routes во FreeBSD 10 "
Отправлено михалыч , 04-Мрт-14 15:30 
>[оверквотинг удален]
> =======
> static_routes="mh max"
> route_mh="192.168.55.0 192.168.50.1 -netmask 0xffffff00"
> =======
> тем не менее маршруты не прописываются в таблице машршрутов что проверяю по
> команде netstat -nr.
> С коммандной строки маршуты применяются без проблем.
> Такая ситуация уже на 2-шлюзах.
> На предудущих версиях операционки таких проблем никогда не было.
> Почему в десятке не применяются маршруты с rc.conf?

А куда у вас приставка -net делась? man rc.conf
надо так
route_mh="-net 192.168.55.0/24 192.168.50.1"


"Static routes во FreeBSD 10 "
Отправлено gd , 04-Мрт-14 15:46 
>[оверквотинг удален]
>> =======
>> тем не менее маршруты не прописываются в таблице машршрутов что проверяю по
>> команде netstat -nr.
>> С коммандной строки маршуты применяются без проблем.
>> Такая ситуация уже на 2-шлюзах.
>> На предудущих версиях операционки таких проблем никогда не было.
>> Почему в десятке не применяются маршруты с rc.conf?
> А куда у вас приставка -net делась? man rc.conf
> надо так
> route_mh="-net 192.168.55.0/24 192.168.50.1"

могу ошибаться, но исходный формат должен срабатывать


"Static routes во FreeBSD 10 "
Отправлено михалыч , 04-Мрт-14 18:23 
> могу ошибаться, но исходный формат должен срабатывать

должен в "ручном варианте", но в rc.conf видимо не обязан


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 00:03 
>> могу ошибаться, но исходный формат должен срабатывать
> должен в "ручном варианте", но в rc.conf видимо не обязан

оба варианта проверял. второй как раз и брал с дефолтового rc.conf. результат в обоих случаях негативен.


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 00:43 
еще раз переписал rc.conf для чистоты эксперимента

#ROUTES
static_routes="mh max"
route_mh="-net 192.168.55.0/24 192.168.50.1"
route_max="192.168.66.0 192.168.60.1 -netmask 0xffffff00"

как и ожидалось - таблица марушрутов пустая..


"Static routes во FreeBSD 10 "
Отправлено михалыч , 05-Мрт-14 05:36 
> еще раз переписал rc.conf для чистоты эксперимента
> #ROUTES
> static_routes="mh max"
> route_mh="-net 192.168.55.0/24 192.168.50.1"
> route_max="192.168.66.0 192.168.60.1 -netmask 0xffffff00"
> как и ожидалось - таблица марушрутов пустая..

Может в 10 что изменилось? Синтаксис?
Да ладно, что гадать, а пойдёмте к Элис! Тьфу, блин, а поедем-те в номера! Да блин, в man!
Cмотрим man rc.conf, там сказано


     static_routes
        (str) Set to the list of static routes    that are to be added
        at system boot    time.  If not set to ``NO'' then for each
        whitespace separated element in the value, a route_<element>
        variable is assumed to    exist whose contents will later    be
        passed    to a ``route add'' operation.  For example:

        static_routes="ext mcast:gif0 gif0local:gif0"
        route_ext="-net 10.0.0.0/24 -gateway 192.168.0.1"
        route_mcast="-net 224.0.0.0/4 -iface gif0"
        route_gif0local="-host    169.254.1.1 -iface lo0"

        When an element is in the form    of name:ifname,    the route is
        specific to the interface ifname.


Переведём?

     static_routes
        (стр) Установит список статических маршрутов, которые будут добавлены
        во время загрузки системы.  Если не установлено в "NO", то предполагается,
        что для каждого элемента разделенного пробелами, в значении переменной
        route_<element>, существует содержимое, которое будет позднее передано
        операции "route add".  Например:

        static_routes="ext mcast:gif0 gif0local:gif0"
        route_ext="-net 10.0.0.0/24 -gateway 192.168.0.1"
        route_mcast="-net 224.0.0.0/4 -iface gif0"
        route_gif0local="-host    169.254.1.1 -iface lo0"

        Если элемент в виде name:ifname, будет добавлен специфичный маршрут
        для интерфейса ifname.


Изменения есть - ключевое слово -gateway ( (не)обязательное? )
Так, нам тут говорят, что будет вызвана route с командой add
Ладно, пошли в man route

     The other commands    have the following syntax:

       route [-n] command [-net | -host] destination gateway [netmask]
       [-fib number]

     where destination is the destination host or network, gateway is the
     next-hop intermediary via which packets should be routed.    Routes to a
     particular    host may be distinguished from those to    a network by inter-
     preting the Internet address specified as the destination argument.  The
     optional modifiers    -net and -host force the destination to    be interpreted
     as    a network or a host, respectively.  Otherwise, if the destination has
     a ``local address part'' of INADDR_ANY (0.0.0.0), or if the destination
     is    the symbolic name of a network,    then the route is assumed to be    to a
     network; otherwise, it is presumed    to be a    route to a host.  Optionally,
     the destination could also    be specified in    the net/bits format.

     For example, 128.32 is interpreted    as -host 128.0.0.32; 128.32.130    is
     interpreted as -host 128.32.0.130;    -net 128.32 is interpreted as
     128.32.0.0; -net 128.32.130 is interpreted    as 128.32.130.0; and
     192.168.64/20 is interpreted as -net 192.168.64 -netmask 255.255.240.0.

     A destination of default is a synonym for the default route.  For IPv4 it
     is    -net -inet 0.0.0.0, and    for IPv6 it is -net -inet6 ::.


Переведём

     Другие команды имеют следующий синтаксис:

       route [-n] command [-net | -host] destination gateway [netmask]
       [-fib number]

     где назначение — хост или сеть назначения, шлюз — посредник следующего
     прыжка(хопа), через который следует маршрутизировать пакеты.
     Маршруты к определенному хосту можно отличить от маршрутов к сети путем
     интерпретации Интернет-адреса, указанный в качестве аргумента назначения.
     Опциональные модификаторы -net и -host принудительно интерпретируют сеть или узел,
     соответственно. Если назначение имеет "локальную частью адреса" из INADDR_ANY (0.0.0.0)
     или назначением является символическое имя сети, то маршрут предполагается к сети;
     в противном случае он считается маршрутом к хосту. При необходимости назначение
     также может быть указано в формате сеть/битовая маска сети.

     Например, 128.32 интерпретируется как -host 128.0.0.32; 128.32.130
     интерпретируется как -host 128.32.0.130; -net 128.32 интерпретируется
     как 128.32.0.0; -net 128.32.130 интерпретируется как 128.32.130.0;
     и 192.168.64/20 интерпретируется как сеть 192.168.64 с маской 255.255.240.0.

     Назначение по умолчанию является синонимом для маршрута по умолчанию.
     Для IPv4 это -net -inet 0.0.0.0 и для IPv6 -net -inet6 ::.


И поскольку ключевое слово здесь "Опциональные", что значит необязательные модификаторы, то,
получается, что таки да, для "ручного" добавления маршрута достаточно дать команду, скажем
route add 192.168.55.0 192.168.50.1 -netmask 255.255.255.0
а для rc.conf увы "не прокатывает" и требует обязательного указания -net или -host,
и мало того ещё и указания -gateway(?)

итак, пробуем указать добавление маршрута в rc.conf


static_routes="mh"
route_mh="-net 192.168.55.0/24 -gateway 192.168.50.1"

Ну, теперь по фен-шую? Так работает?


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 12:05 
> Ну, теперь по фен-шую? Так работает?

(Михалыч, я очень Вам благодарен за подробное пояснение).
Не работает. Но теперь я нашел причину. И одна проблемма заменена другой.
Простите за подмену проблеммы.
Оказывается все три варианта синтаксиса - коректны:
===================================
static_routes="mh max tst"
route_tst="-net 192.168.77.0/24 192.168.51.7"
route_mh="-net 192.168.55.0/24 -gateway 192.168.51.5"
route_max="192.168.66.0 192.168.51.6 -netmask 0xffffff00"
===================================
Причина отсутсвия маршрутов - их некоректность относительно интерфейсов. Не полностью поднялся тунель на интерфейсе gif0. Та часть которая указывает на внешние адресса концов тунеля - прописана. А та которая указывает на внутренние адреса - отсутвует.

gif_interfaces="gif0"
gifconfig_gif0="А.А.А.А В.В.В.В"
ifconfig_gif0="inet а.а.а.а b.b.b.b netmask 0xffffffff"

ifconfig  выдает следующее:

gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
    tunnel inet А.А.А.А --> В.В.В.В
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

а ожидалось:
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
    tunnel inet А.А.А.А --> В.В.В.В
    inet а.а.а.а --> b.b.b.b netmask 0x0
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 12:39 
таким образом в  rc.conf не обрабатывается строка:
ifconfig_gif0="inet а.а.а.а b.b.b.b netmask 0xffffffff"
если же вручную дать команду
ifconfig gif0 inet а.а.а.а b.b.b.b
то все тунель работает отлично.

возможно теперь нужно правильно определить формат написания в  rc.conf  строки
ifconfig_gif0="inet а.а.а.а b.b.b.b netmask 0xffffffff"


"Static routes во FreeBSD 10 "
Отправлено михалыч , 05-Мрт-14 16:46 
> таким образом в  rc.conf не обрабатывается строка:
> ifconfig_gif0="inet а.а.а.а b.b.b.b netmask 0xffffffff"
> если же вручную дать команду
> ifconfig gif0 inet а.а.а.а b.b.b.b
> то все тунель работает отлично.
> возможно теперь нужно правильно определить формат написания в  rc.conf  строки
> ifconfig_gif0="inet а.а.а.а b.b.b.b netmask 0xffffffff"

Так а тут-то что?
А, пойду в переводчики, пусть меня научат.))


gif_interfaces
    (стр) Эта переменная считается устаревшей, рекомендуется использовать cloned_interfaces.
    Задаёт список интерфейсов туннеля gif для настройки на этом узле. Предполагается,
    что переменная gifconfig_<interface> должна существовать для каждого значения интерфейса.
    Значение этой переменной используется для настройки канального туннеля согласно
    синтаксису параметра туннеля для ifconfig. Кроме того, этот параметр гарантирует,
    что каждый из перечисленных интерфейсов создаётся ifconfig через параметр create
    перед попыткой настроить его.

    gif_interfaces="gif0 gif1"
    gifconfig_gif0="10.1.1.1 10.1.2.1"
    gifconfig_gif1="10.1.1.2 10.1.2.2"


Ну вот, говорят устарело.
Поехали дальше.

cloned_interfaces
    (стр) Задаёт список клонируемых сетевых интерфейсов для создания на этом узле.
    Для дальнейшего клонирования, аргументы могут быть переданы команде
    ifconfig create для каждого интерфейса, установленного переменной
    create_args_<interface>. Если имя интерфейса задаётся с ключевым словом
    ":sticky", интерфейс не будет уничтожен, даже когда скрипт rc.d/netif
    вызывается с аргументом "stop". Это полезно, когда конфигурация интерфейса
    изменяется без разрушения его. Записи в cloned_interfaces, автоматически
    добавляются к network_interfaces для конфигурации.

    cloned_interfaces="gif0 gif1 gif2 gif3"


Вроде не сложно?
Пока я тут с карманным словариком переводил, смотрю, решился вопрос.
Ну и чудненько. Буду английский прокачивать, и в man'ы лазить. ))

"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 17:34 
> Вроде не сложно?
> Пока я тут с карманным словариком переводил, смотрю, решился вопрос.
> Ну и чудненько. Буду английский прокачивать, и в man'ы лазить. ))

спасибо, что помогаете ;)


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 05-Мрт-14 16:12 
закрываю эту тему поскольку причина моих проблем в ином.
резюме: в rc.conf во FreeBSD 10 статические маршруты можно прописать тремя способами:

static_routes="route1 route2 route3"

route_route1="-net 192.168.77.0/24 192.168.51.7"
route_route2="-net 192.168.55.0/24 -gateway 192.168.51.5"
route_route3="192.168.66.0 192.168.51.6 -netmask 0xffffff00"


"Static routes во FreeBSD 10 "
Отправлено Евгений , 03-Июл-14 04:56 
> закрываю эту тему поскольку причина моих проблем в ином.
> резюме: в rc.conf во FreeBSD 10 статические маршруты можно прописать тремя способами:
> static_routes="route1 route2 route3"
> route_route1="-net 192.168.77.0/24 192.168.51.7"
> route_route2="-net 192.168.55.0/24 -gateway 192.168.51.5"
> route_route3="192.168.66.0 192.168.51.6 -netmask 0xffffff00"

по итогу в чем проблема была?


"Static routes во FreeBSD 10 "
Отправлено Oleg A , 04-Июл-14 14:01 
>> закрываю эту тему поскольку причина моих проблем в ином.
>> резюме: в rc.conf во FreeBSD 10 статические маршруты можно прописать тремя способами:
>> static_routes="route1 route2 route3"
>> route_route1="-net 192.168.77.0/24 192.168.51.7"
>> route_route2="-net 192.168.55.0/24 -gateway 192.168.51.5"
>> route_route3="192.168.66.0 192.168.51.6 -netmask 0xffffff00"
> по итогу в чем проблема была?

В создании тунелей) См. http://www.opennet.me/openforum/vsluhforumID1/95477.html