Есть сервер FreeBSD, который имел два интерфейса: один локальная сеть (первая), второй - сторонняя сеть, в которую с помощью natd ходят компы локалки.
Добавил еще один интерфейс (вторая локальная сеть). Цель - мне нужно, чтобы компы первой локальной сети видели компы во второй локальной сети и при этом NAT на стороннюю сеть работал в обычном режиме. Сейчас пинг с компа в первой сети на вторую сеть не проходит, все затыкается на интерфейсе FreeBSD, смотрящим во вторую локалку. В ipfw передача пакетов по всем интерфейсам разрешена. Интуитивно чувствую, что виновать NAT, который дивертит все что нужно и что не нужно, как быть в этой ситуации? Строка диверта в ipfw add divert natd all from any to any via int1
Трудно сказать в чём проблема, без всего скрипта файрволла... Чисто теоретически, если пакет попадает хоть под одно правило ipfw, то все остальные он уже не проходит.... Поэтому попробуй поставь перед правилами с дивертом правила разрешающие хождения из одной сети в другую... Соотвественно пакет натыкаясь на эти правила пройдёт туда куда надо не доходя до правила с дивертом...
>Трудно сказать в чём проблема, без всего скрипта файрволла... Чисто теоретически, если
>пакет попадает хоть под одно правило ipfw, то все остальные он
>уже не проходит.... Поэтому попробуй поставь перед правилами с дивертом правила
>разрешающие хождения из одной сети в другую... Соотвественно пакет натыкаясь на
>эти правила пройдёт туда куда надо не доходя до правила с
>дивертом...А как должны эти правила примерно выглядеть, не подскажешь?
И еще - что прописывать как defaultgateway? Сейчас прописан шлюз сторонней сетки, но маршрут к нему можно и статикой прописать, поскольку адреса там 10.*
192.168.1.0/24 - сеть 1
192.168.2.0/24 - сеть 2ipfw add pass all from 192.168.1.0/24 to 192.168.2.0/24
ipfw add pass all from 192.168.2.0/24 to 192.168.1.0/24В обоих сетках шлюзом должен быть айпишник смотрящий в эту сеть со стороны FreeBSD.
>192.168.1.0/24 - сеть 1
>192.168.2.0/24 - сеть 2
>
>ipfw add pass all from 192.168.1.0/24 to 192.168.2.0/24
>ipfw add pass all from 192.168.2.0/24 to 192.168.1.0/24
>
>В обоих сетках шлюзом должен быть айпишник смотрящий в эту сеть со
>стороны FreeBSD.
А на FreeBSD какой должен быть шлюз? Это играет роль?
>А на FreeBSD какой должен быть шлюз? Это играет роль?
Должен быть тот, который тебе провайдер дал. Чтобы инет работал. Для работы двух твоих локальных сеток это шлюз по барабану. На фре вообще ничего касательно маршрутизации менятьне надо... Как было так пусть и будет.
>>А на FreeBSD какой должен быть шлюз? Это играет роль?
>Должен быть тот, который тебе провайдер дал. Чтобы инет работал. Для работы
>двух твоих локальных сеток это шлюз по барабану. На фре вообще
>ничего касательно маршрутизации менятьне надо... Как было так пусть и будет.
>Сомнения возникают вот почему, не совсем мне понятно, достаточно ли
gateway_enable="YES" в rc.conf для полноценной маршрутизации. Я где-то читал, что демон routed надо ставить для работы протоколов маршрутизации.
>Сомнения возникают вот почему, не совсем мне понятно, достаточно ли
>gateway_enable="YES" в rc.conf для полноценной маршрутизации. Я где-то читал, что демон routed
>надо ставить для работы протоколов маршрутизации.Да какие сомнения, если у тебя сетка в инет ходит. Это как раз и есть маршрутизация, тока с трансляцией адресов. ;)
>>Сомнения возникают вот почему, не совсем мне понятно, достаточно ли
>>gateway_enable="YES" в rc.conf для полноценной маршрутизации. Я где-то читал, что демон routed
>>надо ставить для работы протоколов маршрутизации.
>
>Да какие сомнения, если у тебя сетка в инет ходит. Это как
>раз и есть маршрутизация, тока с трансляцией адресов. ;)
Не получается, пинг так и не идет.add pass all from 192.168.1.0/24 to 192.168.2.0/24
add pass all from 192.168.2.0/24 to 192.168.1.0/24Причем на первое правило пакеты проходят, т.е. из моей сети в другую. А ответа нет (второе правило 0). И что интересно, вместо 4 пакетов (ping) на первое правило идет 8 пакетов. Совсем запутался...
смотри в сторону man route
Покажи чего netstat -rn кажет.
>Строка диверта в ipfw add divert natd all
>from any to any via int1
А интерфейс "int1" случаем у тебя ни в локалку смотрит? Если так, меняй на имя того который к провайдеру смотрит. Проверь, чтобы в настройках NATа тоже было указано имя провайдерского интерфейса.Дефаулт гетевэй = адрес шлюза который провайдер тебе дал.
Применяется тогда, когда фря незнает, где находится адрес назначения. Т.е. адреса в твоих сетках она знает - вычисляются по адресам интерфейсов и маскам, а все остальные (читай интернетовские) она пересылает туды.В твоих сетях блоки адресов разные? Т.е. может у тебя в одной сетке 192.168.0.0/16 и в другой тоже. У них должны быть указанны корректно маски сети! (чтобы блок IP адресов из другой сети не поподал в маску данной сети! т.к. в этом случае пакет не будет направлен на шлюз (твою фрю), а будет считатся локальным - у тебя же фря настроена как шлюз, а не как мост) Какое у тебя распределение IP адресов?