Доброго дня.
Не получается настроить reverse nat на FreeBSD на основе ipfw.
ng8 - внутренний интерфейс
em2 - внешний интерфейс
конфигурация ipfw
nat 1 config if ng8 same_ports reset reverse
nat 1 ip from 10.8.0.103 to 194.87.0.50 via ng8
nat 1 ip from 194.87.0.50 to any (на примере, на один внешний адрес)Пакеты маскирутся, уходят на внешний адрес. Снаружи возвращаются на брандмауэр и дальше проблема. Пакеты не демаскируются.
Подскажите, в чем может быть проблема?
>[оверквотинг удален]
> ng8 - внутренний интерфейс
> em2 - внешний интерфейс
> конфигурация ipfw
> nat 1 config if ng8 same_ports reset reverse
> nat 1 ip from 10.8.0.103 to 194.87.0.50 via ng8
> nat 1 ip from 194.87.0.50 to any (на примере, на один внешний
> адрес)
> Пакеты маскирутся, уходят на внешний адрес. Снаружи возвращаются на брандмауэр и дальше
> проблема. Пакеты не демаскируются.
> Подскажите, в чем может быть проблема?AFAIK, nat учитывает направление движения пакета. по признаку "входящий/исходящий" по отношению к рутеру.
У вас получается, что он попадает в нат оба раза как входящий.
>[оверквотинг удален]
>> nat 1 config if ng8 same_ports reset reverse
>> nat 1 ip from 10.8.0.103 to 194.87.0.50 via ng8
>> nat 1 ip from 194.87.0.50 to any (на примере, на один внешний
>> адрес)
>> Пакеты маскирутся, уходят на внешний адрес. Снаружи возвращаются на брандмауэр и дальше
>> проблема. Пакеты не демаскируются.
>> Подскажите, в чем может быть проблема?
> AFAIK, nat учитывает направление движения пакета. по признаку "входящий/исходящий" по
> отношению к рутеру.
> У вас получается, что он попадает в нат оба раза как входящий.nat 1 ip from 194.87.0.50 to any (на примере, на один внешний адрес)?
что такое один внешний интерфейс?
>[оверквотинг удален]
>>> адрес)
>>> Пакеты маскирутся, уходят на внешний адрес. Снаружи возвращаются на брандмауэр и дальше
>>> проблема. Пакеты не демаскируются.
>>> Подскажите, в чем может быть проблема?
>> AFAIK, nat учитывает направление движения пакета. по признаку "входящий/исходящий" по
>> отношению к рутеру.
>> У вас получается, что он попадает в нат оба раза как входящий.
> nat 1 ip from 194.87.0.50 to any (на примере, на один внешний
> адрес)?
> что такое один внешний интерфейс?не интерфейс, а адрес. т.е. делаю все телодвижения с nat на один внешний адрес в интернете. я думаю это не критично. можно было собственно сделать
nat 1 ip from any to any - результат тотже
>[оверквотинг удален]
>> nat 1 config if ng8 same_ports reset reverse
>> nat 1 ip from 10.8.0.103 to 194.87.0.50 via ng8
>> nat 1 ip from 194.87.0.50 to any (на примере, на один внешний
>> адрес)
>> Пакеты маскирутся, уходят на внешний адрес. Снаружи возвращаются на брандмауэр и дальше
>> проблема. Пакеты не демаскируются.
>> Подскажите, в чем может быть проблема?
> AFAIK, nat учитывает направление движения пакета. по признаку "входящий/исходящий" по
> отношению к рутеру.
> У вас получается, что он попадает в нат оба раза как входящий.но в таблице маскировки/демаскировки пакетов должна соответствовать запись?
согласно описанию reverse nat, нат нужно вешать на внутренний интерфейс и тогда все представления входящий/исходящий переворачиваются. По аналогии прямого nat, на nat мы вешаем как исходящий поток, так и входящий, если смотреть со стороны роутера.
Т.е. согласно этого примера повесить nat:
nat 1 config if ng8 same_ports reset
nat 1 ip from 10.8.0.103 to 194.87.0.50 via em2
nat 1 ip from 194.87.0.50 to any via em2
то все правильно.
но вот реверсивный - не получается.
сорри
nat 1 config if em2 same_ports reset
> но в таблице маскировки/демаскировки пакетов должна соответствовать запись?
> согласно описанию reverse nat, нат нужно вешать на внутренний интерфейс и тогда
> все представления входящий/исходящий переворачиваются. По аналогии прямого nat, на nat
> мы вешаем как исходящий поток, так и входящий, если смотреть со
> стороны роутера.ответный пакет пришел. пришел на внешний интерфейс.
С какой радости он решит выйти наружу из раутера через внутренний интерфейс, чтобы его там подхватил нат и сделал обратное преобразование?
>> но в таблице маскировки/демаскировки пакетов должна соответствовать запись?
>> согласно описанию reverse nat, нат нужно вешать на внутренний интерфейс и тогда
>> все представления входящий/исходящий переворачиваются. По аналогии прямого nat, на nat
>> мы вешаем как исходящий поток, так и входящий, если смотреть со
>> стороны роутера.
> ответный пакет пришел. пришел на внешний интерфейс.Хорошо, согласен. А есть ли предложения?
> С какой радости он решит выйти наружу из раутера через внутренний интерфейс,
> чтобы его там подхватил нат и сделал обратное преобразование?а почему пакет должен выйти наружу через внутренний интерфейс? (вернее если быть точным пакет уйдет с внутреннего через внешний) маршрутизация подскажет куда нужно идти.
>[оверквотинг удален]
>>> все представления входящий/исходящий переворачиваются. По аналогии прямого nat, на nat
>>> мы вешаем как исходящий поток, так и входящий, если смотреть со
>>> стороны роутера.
>> ответный пакет пришел. пришел на внешний интерфейс.
> Хорошо, согласен. А есть ли предложения?
>> С какой радости он решит выйти наружу из раутера через внутренний интерфейс,
>> чтобы его там подхватил нат и сделал обратное преобразование?
> а почему пакет должен выйти наружу через внутренний интерфейс? (вернее если быть
> точным пакет уйдет с внутреннего через внешний) маршрутизация подскажет куда нужно
> идти.Все правильно. для пакета нужно подсказать, что прийти он должен на внутренний интерфейс как транзитный. Дальше правилом повесить на nat. Работает, если сделать следующим образом:
ipfw nat 1 config ip <IP>
IP должен быть отличным от ip-адреса внутреннего интерфейса. Например, какой нибудь из того же диапазона адресов. Ну или собственно вообще какой угодно, главное чтобы маршруты правильно были настроены.
>[оверквотинг удален]
>> а почему пакет должен выйти наружу через внутренний интерфейс? (вернее если быть
>> точным пакет уйдет с внутреннего через внешний) маршрутизация подскажет куда нужно
>> идти.
> Все правильно. для пакета нужно подсказать, что прийти он должен на внутренний
> интерфейс как транзитный. Дальше правилом повесить на nat. Работает, если сделать
> следующим образом:
> ipfw nat 1 config ip <IP>
> IP должен быть отличным от ip-адреса внутреннего интерфейса. Например, какой нибудь из
> того же диапазона адресов. Ну или собственно вообще какой угодно, главное
> чтобы маршруты правильно были настроены.сорри
ipfw nat 1 config ip <IP> reverse
а вот если дальше сделать redirect_addr....