IPFW NAT в FreeBSD 8

Март, 27th 2011Рубрика: *NIX 16448
Подписаться на комментарии по RSS

nat freebsd

Сегодня речь пойдет о NAT, а точнее о kernel nat (IPFIREWALL_NAT). На новом сервере решил опробовать свеженькую FreeBSD 8 для организации выхода в интернет.

Изначально о встроенном в ядро NAT не помышлял и cделал по старинке, использую демон NATD. Всё замечательно заработало, однако при запуске сервера в реальную работу вылезло одно не приятное "но".

При подключении по SSH на сервер наблюдались жуткие тормоза программ, использующих псевдографику, например MC прорисовывал панельки в течение минуты! Такая же ситуация наблюдалась и в sysinstall. Медленный заход в MC мог наблюдаться например, если не правильно указаны или не верно настроены DNS адреса, но здесь был не тот случай, да и характер прорисовки экрана иной. Причем локально с консоли всё работало шустро. Выяснилось, что при отключении NATD скорость работы по SSH восстанавливается.

Честно говоря природу данного явления так и не выяснил. Зато решил опробовать встроенный в ядро NAT (эта возможность появилась начиная c 7 версии FreeBSD).

Погуглив, выяснил, что IPFW NAT имеет общую библиотеку с natd и в принципе почти полностью повторяет все его функции и ещё ему по силам пропускать через себя трафик свыше 800 мбит/c. Хватит слов - к делу. Собираем ядро, добавив следующие опции:

# IPFW
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options DUMMYNET
# IPFW kernel nat support
options IPFIREWALL_NAT
options LIBALIAS

Мы включили ipfw nat и dummynet (для управления трафиком) в наше ядро. Далее собираем и устанавливаем новое ядро, после чего добавляем необходимые строчки в /etc/rc.conf.

Приведу простой пример организации шлюза на базе FreeBSD 8. В примере интерфейс, смотрящий в Интернет, будет иметь имя em0

...
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="em0"
firewall_type="OPEN"
...

В результате получаем простейший интернет шлюз с NAT. Firewall полностью открыт. О настройке правил IPFW и пробросе портов расскажу в одной из следующих статей. Кстати проблемы с программами, использующими псевдографику, о которых писал выше, исчезли.

Продолжение статьи - проброс портов в ядерном IPFW NAT

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Комментариев: 9

  1. 2011-04-14 в 14:09:04 | itserv

    А пример где???

  2. 2011-04-19 в 11:54:00 | dre@mer]]>avatar]]>

    Пример чего именно? Собрав ядро с данными опциями и прописав в /etc/rc.conf строки, указанные выше, вы уже получите работающий шлюз. Другой вопрос, что он полностью открыт, но настройка файервора ipfw - это тема будущей статьи.

  3. 2011-05-27 в 11:49:54 | Terza

    Спасибо, более короткой инструкции по настройке не видел. Правда если не знаешь, как пересобирать ядро....)))

  4. 2011-05-30 в 00:05:39 | dre@mer]]>avatar]]>

    Про сборку ядра, я уже писал в одной статье, вот ссылочка: Сборка ядра в FreeBSD

  5. 2011-06-01 в 21:43:35 | Dummy

    Путаюсь, наверное совсем запутался. Подскажите - вот собрали мы ядро с

    options IPFIREWALL_NAT

    Тогда зачем еще указываем в rc.conf

    firewall_enable="YES"

    firewall_nat_enable="YES

    Просто нуб я во фряхе - только учу...

  6. 2011-06-02 в 11:43:55 | dre@mer]]>avatar]]>

    Данные опции лишь добавляют в ядро функционал, чтобы дальше мы смогли его влючить в работу.

  7. 2011-09-15 в 23:46:06 | Аноним
    При подключении по SSH на сервер наблюдались жуткие тормоза программ, использующих псевдографику, например MC прорисовывал панельки в течение минуты! Такая же ситуация наблюдалась и в sysinstall. Медленный заход в MC мог наблюдаться например, если не правильно указаны или не верно настроены DNS адреса, но здесь был не тот случай, да и характер прорисовки экрана иной. Причем локально с консоли всё работало шустро. Выяснилось, что при отключении NATD скорость работы по SSH восстанавливается.

    Полностью согласен с этим 100% таже проблема

  8. 2013-05-10 в 21:14:13 | Vasya

    Ядро можно и не пересобирать

    Модули сами подгружаются и всё отлично работает

  9. 2013-05-10 в 21:31:20 | dre@mer]]>avatar]]>

    Можно то, оно конечно, можно... Однако я предпочитаю собирать ядро под конкретную систему, чтобы не было ничего лишнего, а нужные мне опции присутствовали.

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.