Всем доброго времени суток!Имеется сервер FreeBSD 7.1, работающий как шлюз во внешнюю сеть. Соединение с внешкой - через openvpn (интерфейс tap0). Соответственно пользователи из локалки натятся через этот интерфейс (tap0) посредством ipfw и natd. Проблем с натированием нет никаких. Единственная проблема возникает при перезагрузке сервера. Правила ipfw стартуют раньше, чем поднимается интерфейс tap0. Естественно в этом случае natd отказывается работать корректно и ситуацию спасает только передергивание ipfw руками. Попытка засунуть в стартовый скрипт /etc/rc.d/ipfw директиву #REQUIRE: openvpn к желаемому результату не приводит. Демон openvpn стартует до ipfw, но сам интерфейс tap0 не хочет подниматься, даже если в стартовом скрипте openvpn дописать sleep 180. Он честно спит три минуты, но том не менее интерфейс не поднимает. Если кто сталкивался с подобной проблемой - буду признателен за подсказку. Заранее всем спасибо!
P.S. Просьба не предлагать в качестве решения заменить ipfw на pf. Здесь проблем нет, проверено. Но по ряду причин я не могу юзать на указанной машине pf.
Немного странный вопрос.
Я бы сделал так:
1) Сделал бы настройки в скрипте /etc/rc.firewall что-то типа OPEN из дефолтного /etc/rc.firewall
2) В конце скрипта который запускает OpenVPN запускал бы уже нужный скрипт с нужными правилами ipfw.Вроде все просто.
>Немного странный вопрос.
>Я бы сделал так:
>1) Сделал бы настройки в скрипте /etc/rc.firewall что-то типа OPEN из дефолтного
>/etc/rc.firewall
>2) В конце скрипта который запускает OpenVPN запускал бы уже нужный скрипт
>с нужными правилами ipfw.
>
>Вроде все просто.Не катит этот вариант. Как я уже писал, openvpn стартует до ipfw. Но сам интерфейс tap0 поднимается ПОСЛЕ того, как загружаются правила ipfw. Причем не спасает даже директива задержки выполнения sleep в стартовом скрипте openvpn. Ну и кроме того, просто хочется выяснить, каким образом можно заставить отрабатывать правила ipfw после того, как поднимется интерфейс tap0. Есть похожая проблема с pf:
http://guruway.wordpress.com/ (Заголовок FreeBSD: как заставить pf ждать подъема mpd(интерфейсов ngX))Но предложенное в статье решение не работает для ipfw
>[оверквотинг удален]
>в стартовый скрипт /etc/rc.d/ipfw директиву #REQUIRE: openvpn к желаемому результату не
>приводит. Демон openvpn стартует до ipfw, но сам интерфейс tap0 не
>хочет подниматься, даже если в стартовом скрипте openvpn дописать sleep 180.
>Он честно спит три минуты, но том не менее интерфейс не
>поднимает. Если кто сталкивался с подобной проблемой - буду признателен за
>подсказку. Заранее всем спасибо!
>
>P.S. Просьба не предлагать в качестве решения заменить ipfw на pf. Здесь
>проблем нет, проверено. Но по ряду причин я не могу юзать
>на указанной машине pf.ipfw стартуешь без привязки ната к tap0. А в openvpn есть директива выполения скрипта при поднятии интерфейса --up cmd.
В этом скрипте проипсывается поднятие ната.man openvpn
>[оверквотинг удален]
>>
>>P.S. Просьба не предлагать в качестве решения заменить ipfw на pf. Здесь
>>проблем нет, проверено. Но по ряду причин я не могу юзать
>>на указанной машине pf.
>
>ipfw стартуешь без привязки ната к tap0. А в openvpn есть директива
>выполения скрипта при поднятии интерфейса --up cmd.
>В этом скрипте проипсывается поднятие ната.
>
>man openvpnСпасибо.
В продолжение тему вопрос:а разве нельзя устройства tap создавать заранее (при еще не поднятом впн канале) ?
и вешать на них ипишники?
тогда их можно запросто использовать в статических правилах фаервола.
>В продолжение тему вопрос:
>
>а разве нельзя устройства tap создавать заранее (при еще не поднятом впн
>канале) ?
>и вешать на них ипишники?
>тогда их можно запросто использовать в статических правилах фаервола.Можно. При этом нат вешать на интерфейс динмически, т.е. без привязки к ip.
Но вариант через запуска скрипта из openvpn будет логически более правильным.