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

Исходное сообщение
"FreeBSD: привязка машрута к интерфейсу"

Отправлено Rusher , 23-Май-07 16:50 
Здравствуйте все. Интересует такой вопрос... В Linux, скажем, есть возможность привязать маршрут непосредственно к интерфейсу. Пример:

#route add -net xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gw xxx.xxx.xxx.xxx dev eth0

Вроде бы всё ясно. Но как привязать маршрут к интерфейсу во FreeBSD?

Зачем мне это? Вот история... Есть у меня один сервачёк под FreeBSD с двумя сетевухами на борту. К одной сетевухе подключён кросом модем-маршрутизатор Zyxel P791 (FR канал), а к интерфейсу второй приходит локальная сеть клиента из нескольких машин. В этой сети живёт модем-маршрутизатор Zyxel P662 -  ADSL держит. Вобщем так, весь интернет трафик ездит через P791(FR) по-умолчанию, и только на один айпишник в миру нужно ходить через P662 (ADSL). Делаем следующее:

#route add -host "адрес хоста" "адрес Р662"

И радуемся. "netstat -r" показывает, что маршрут у нас на втором интерфейсе, где Р662. Трассировка показывает, что пакеты на нужный нам хост ходят именно через Р662. Работает всё замечательно, НО! Стоит только перезагрузить Р662, как маршрут слетает! Вернее он есть, но "netstat -r" показывает, что маршрут на превом интерфейсе! Само-собой ничего уже через Р662 не ездит, приходится снимать и ставить маршрут опять и тогда он у нас опять будет на втором интерфейсе, где сеть и нужный мне модем.


Содержание

Сообщения в этом обсуждении
"FreeBSD: привязка машрута к интерфейсу"
Отправлено eagle , 25-Май-07 06:06 
вероятно надо поднимать маршрут в тот момент, когда интерфейс уже в UPе.

"FreeBSD: привязка машрута к интерфейсу"
Отправлено lisergey , 19-Июн-07 11:38 
>Зачем мне это? Вот история... Есть у меня один сервачёк под FreeBSD
>с двумя сетевухами на борту. К одной сетевухе подключён кросом модем-маршрутизатор
>Zyxel P791 (FR канал), а к интерфейсу второй приходит локальная сеть
>клиента из нескольких машин. В этой сети живёт модем-маршрутизатор Zyxel P662
>-  ADSL держит. Вобщем так, весь интернет трафик ездит через
>P791(FR) по-умолчанию, и только на один айпишник в миру нужно ходить
>через P662 (ADSL). Делаем следующее:
>
>#route add -host "адрес хоста" "адрес Р662"
>

из man route:

In a change or add command where the destination and gateway are not suf-
ficient to specify the route (as in the ISO case where several interfaces
may have the same address), the -ifp or -ifa modifiers may be used to
determine the interface or interface address.

а если по их совету попробовать
# route add -host  "адрес хоста" -ifp "второй интерфейс" "адрес P662"

по крайне


"FreeBSD: привязка машрута к интерфейсу"
Отправлено lisergey , 19-Июн-07 11:42 
>Зачем мне это? Вот история... Есть у меня один сервачёк под FreeBSD
>с двумя сетевухами на борту. К одной сетевухе подключён кросом модем-маршрутизатор
>Zyxel P791 (FR канал), а к интерфейсу второй приходит локальная сеть
>клиента из нескольких машин. В этой сети живёт модем-маршрутизатор Zyxel P662
>-  ADSL держит. Вобщем так, весь интернет трафик ездит через
>P791(FR) по-умолчанию, и только на один айпишник в миру нужно ходить
>через P662 (ADSL). Делаем следующее:
>
>#route add -host "адрес хоста" "адрес Р662"
>
>И радуемся. "netstat -r" показывает, что маршрут у нас на втором интерфейсе,
>где Р662. Трассировка показывает, что пакеты на нужный нам хост ходят
>именно через Р662. Работает всё замечательно, НО! Стоит только перезагрузить Р662,
>как маршрут слетает! Вернее он есть, но "netstat -r" показывает, что
>маршрут на превом интерфейсе! Само-собой ничего уже через Р662 не ездит,
>приходится снимать и ставить маршрут опять и тогда он у нас
>опять будет на втором интерфейсе, где сеть и нужный мне модем.

из man route

     In a change or add command where the destination and gateway are not suf-
     ficient to specify the route (as in the ISO case where several interfaces
     may have the same address), the -ifp or -ifa modifiers may be used to
     determine the interface or interface address.

попробуй
# route add -host "адрес хоста" -ifp "второй интерфейс" "адрес Р662"

по крайней мере, у меня такой изврат сработал:
# route add -host 127.0.1.1 -ifp lo0 127.0.0.1
add host 127.0.1.1: gateway 127.0.0.1

# netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.0.1        UGS         0   103401    rl0
127.0.0.1          127.0.0.1          UH          1       18    lo0
127.0.1.1          127.0.0.1          UGHS        0        0    lo0

FreeBSD 6.2-stable