Страница 1 из 1

IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-21 13:11:30
IT_Prof
Почитал статейку http://www.lissyara.su/?id=1127
Статейка отличная, но у меня несколько более сложная ситуация, чем описана в статье.

Задачи:
1. На FreeBSD 7.0 поднять файервол, прокси, и т.д. (веб-сервер, субд, фтп).
2. Резать скорость и считать трафик, квотирование трафика, статистика для юзеров через http.
3. Обеспечить приоритет протоколам VoIP (т.е. фактически UDP-пакетам)

Сразу хотел ставить такую связку: IPFW + DummyNet + Squid + TrafD + MySQL + Apache
Покурив сайт, решил остановиться на связке IPFW + NetAMS + Squid + MySQL + Apache

Вопроса у меня два:
1. Подходит ли выбранная связка для моих задач?
2. Как настроить IPFW на 2 соединения?

Если с вопросом №1 все понятно, то о 2ом вопросе подробнее:
На машине с FreeBSD 2 сетевухи - одна в сеть(nfe0), другая в ADSL модем (xl0). На модеме постоянно поднято PPP-соединение для доступа к внутренним ресурсам провайдера (фтп, wsus, media и т.п.), а для доступа в интернет нужно поднимать на FreeBSD PPP соединение (tun0).

Вот как это все разрулить? Т.е. нужно маршрутизировать трафик по этим интерфейсам, и поднимать 2 NATA? Ограничение скорости на интерфейсах тоже должно быть разное. Можно ли вообще все это заставить работать при выбранной мной связке?

Извините за бестолковое обьяснение... все мысли путаются в голове... FreeBSD make me crazy :mrgreen:

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-21 18:44:10
Alex Keda
ты начинай конфиг писать.
будет неработать - будем пинать в нужных направлениях =)
а так - да. не очень понятно...

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-22 14:01:47
IT_Prof
Вот набросал схемку того, что будет:
Схема соединений.jpg
Модем в режиме роутера. На нем все время поднято соединение к внутренним ресурсам провайдера. Также на модеме работает NAT. Соответственно в FreeBSD нужно натить только соединения по tun0. Внутренние ресурсы имеют лишь несколько IP адресов. По этим адресам их можно перенаправлять на xl0.

Вопросы:
1. Как лучше перенаправлять на внутренние ресурсы? Прописать статические роуты (как я делал это в винде) или это надо делать в IPFW?
2. Если NAT у меня задействован в IPFW, нужно ли включать ppp_nat="YES" в rc.conf?
3. Нужно ли прямое включение ната в rc.conf - natd_enable="YES"? Опять же natd_interface="tun0" требуется указать пока не существующий интерфейс
4. Могу ли я использовать в правилах IPFW интерфейс tun0? Ведь при загрузке системы его нет... он появляется после поднятия PPPoE
5. Нужны ли в моем случае следующие строки в rc.conf?

Код: Выделить всё

    router="/sbin/routed"
    router_enable="YES"
    router_flags="-s"
P.S. Появилась вот такая ошибочка при запуске PPP:
WARNING: attempt to net_add_domain(netgraph) after domainfinalizer()

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-22 16:16:29
dikens3
Вопросы:
1. Как лучше перенаправлять на внутренние ресурсы? Прописать статические роуты (как я делал это в винде) или это надо делать в IPFW?
Статическими маршрутами.
2. Если NAT у меня задействован в IPFW, нужно ли включать ppp_nat="YES" в rc.conf?
Несовсем понял что ты хочешь. В твоём случае могут быть использованы 3-и ната.
1. Обычный - natd. (natd_enable="YES")
2. PPPoE нат (ppp_nat="YES")
3. Включённый в ядро.
3. Нужно ли прямое включение ната в rc.conf - natd_enable="YES"? Опять же natd_interface="tun0" требуется указать пока не существующий интерфейс
Вообще есть много разных способов. Включая запуск своего скрипта ( natd?) после установки соединения PPPoE. Есть ещё ключ dynamic.
4. Могу ли я использовать в правилах IPFW интерфейс tun0? Ведь при загрузке системы его нет... он появляется после поднятия PPPoE
Можно указать все интерфейсы ("tun*")

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-22 17:20:45
IT_Prof
Несовсем понял что ты хочешь. В твоём случае могут быть использованы 3-и ната.
1. Обычный - natd. (natd_enable="YES")
2. PPPoE нат (ppp_nat="YES")
3. Включённый в ядро.
Я хочу использовать NAT в паре с IPFW, т.е. заворачивать трафик на NAT через divert.
Вот и спрашиваю в каком месте и как правильно его включить?

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-22 19:55:44
dikens3
Как правильно включить какой нат? Номер 1? 2? 3? Есть ещё возможность pf nat или ipnat заюзать. :-)


Я бы на твоём месте сделал так на шлюзе:

Оба подключения через PPPoE я производил бы средствами самого шлюза и с включенными натами. (ppp_nat) Причём на подключение к сети провайдера (где внутренние ресурсы у тебя) я бы не стал создавать default маршрут после подключения, а создал бы только статические маршруты, тем самым после падения другого канала этот был бы доступен всегда (Там с DNS проблема есть конечно, но решаема).

Далее средствами ipfw решал бы другие вопросы, не трогая nat, т.к. всё будет работать очень даже весело.

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-22 23:13:18
Covax
А какой модем стоит?

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-23 8:28:39
IT_Prof
Оба подключения через PPPoE я производил бы средствами самого шлюза
Модем не поддерживает два одновременных PPPoE соедиения. Только одно может поднять сам, а второе пропустить сквозь себя.
Как правильно включить какой нат? Номер 1? 2? 3?
Поставлю вопрос по другому: для использования конструкции divert в ipfw достаточно ли включенной опции IPDIVERT в ядре или нужна еще запись в rc.conf natd_enable="YES"?
А какой модем стоит?
D-Link DLS-500T

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-23 9:44:15
dikens3
IT_Prof писал(а):
Оба подключения через PPPoE я производил бы средствами самого шлюза
Модем не поддерживает два одновременных PPPoE соедиения. Только одно может поднять сам, а второе пропустить сквозь себя.
Я про шлюз говорил, а не модем. Модем я бы сделал бриджем. (А лучше вообще сменил на нормальный)
IT_Prof писал(а):Поставлю вопрос по другому: для использования конструкции divert в ipfw достаточно ли включенной опции IPDIVERT в ядре или нужна еще запись в rc.conf natd_enable="YES"?
Достаточно, IPDIVERT позволит тебе использовать divert, не более того.

natd_enable нужен для того чтобы запусть нат, к примеру на порту 666, и потом с помощью divert отправить пакеты на него.

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-23 13:47:30
Covax
Вот скажите, может я ошибаюсь, но зачем использовать nat на сервере, если на модеме этот же пакет полюбому еще раз занатиться. По-моемому гораздо проще вбить в модем статику на локалку и не использовать никакого nat`а. Или я не прав?

З.Ы. У самого дома стоит на FreeBSD 7.0 Release byfly с настроенным гостевым через ZyXEL 660PT, маршруты прописаны через статику, и всё прекрасно работает без ната.

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-23 14:03:10
IT_Prof
но зачем использовать nat на сервере, если на модеме этот же пакет полюбому еще раз занатиться
Если Вы посмотрите внимательно на схему вверху, то увидите, что натить я хочу только трафик в интернет (интерфейс tun0).
Само-собой, что натить гостевой трафик я предоставлю модему.

Всем спасибо за ответы. На данном этапе вопросов больше нет... но они появятся при написании конфига к ipfw :D

Re: IPFW на 2 исходящих интерфейсах.

Добавлено: 2008-05-23 14:11:24
Covax
IT_Prof писал(а):
Всем спасибо за ответы. На данном этапе вопросов больше нет... но они появятся при написании конфига к ipfw :D
Сори. В первом посте видел идею поднимать 2 ната.
Ну а так ppp_nat="YES" будет достаточно.