Подробное руководство по ipfw nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2009-12-11 10:33:38

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

ipfw nat 1 show config
:unknown:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение shamahn » 2009-12-11 20:25:42

terminus писал(а):

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

ipfw nat 1 show config
:unknown:
ipfw nat 1 config if tun0 log deny_in same_ports reset
Но у меня появилось предположение) остановите меня если я не прав.
На наружный ip я выхожу с одной из машин, которая получает интернет от этого сервака) а именно, чтобы выйти наружу, запрос проходит через нат, создавая запись в таблице) снаружи его принимает файервол, находит эту запись в таблице, и, естественно, считает, что это не есть обращение с наружи)))

О как=)

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2009-12-11 21:28:15

Ну так оно и есть, да. Тестировать то надо снаружи ;-)
Только по моему пакет в нат не идет - он на проходе IN сразу же забирается системой к себе так как она видит, что пакет на ее IP адрес направлен.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение shamahn » 2009-12-12 3:11:10

terminus писал(а):Ну так оно и есть, да. Тестировать то надо снаружи ;-)
Только по моему пакет в нат не идет - он на проходе IN сразу же забирается системой к себе так как она видит, что пакет на ее IP адрес направлен.
маловероятно) так надо бы было допрограммировать что-то) типа если, внешний тоже наш.. хотя, для ускорения... но, наш запрос далеко не уйдет...
Не) я б так не делал) зачем усложнять систему, если не прилагая усилий результат будет валидным)
Теперь, другой момент) как мне все это протестировать)
______________________
оффотоп {пятниццоо-пятниццоо}

Аватара пользователя
shamahn
рядовой
Сообщения: 15
Зарегистрирован: 2009-12-10 4:35:41
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение shamahn » 2009-12-14 6:55:54

А как можно сделать, ну допустим, мне списку МАК-адресов разрешить проброс, а остальным - запретить) особенно чудесно если бы список можно было из файла брать.. :crazy:

Да... и с таким правилом

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

fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
на проксик заворачивается только http трафик, следовательно lightsquid мне не покажет ничего по остальному трафику. Да и резать у определенного народа определенные порты не получится.
Это что, значит надо весь трафик заворачивать на проксик?

xwizard
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение xwizard » 2010-01-24 12:05:55

правильно я понимаю что строчку из первого примера

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

nat 1 config log if em0 reset same_ports deny_in \
redirect_port tcp 1.2.3.4:6881 6881 \
redirect_port udp 1.2.3.4:4444 4444 \
redirect_port tcp 192.168.1.24:25 25
надо писать как

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

nat 1 config log if em0 reset same_ports deny_in \
redirect_port tcp 1.2.3.4:6881 6881 \
redirect_port udp 1.2.3.4:4444 4444 \
redirect_port tcp 192.168.1.0/24:25 25
?

исправьте статью, если это действителньо ошибка. (и в первом и во втором примере одна и та же кстати)
у меня работает, написал как во втором случае. так что авторам - большое спасибо за хорошую и подробную статью, таких мало.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-01-24 12:57:23

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

# настройка ната
# опции переноса строк "\" надо убрать
# все должно быть в одну строчку
nat 1 config log if em0 reset same_ports deny_in \
redirect_port tcp 1.2.3.4:6881 6881 \
redirect_port udp 1.2.3.4:4444 4444 \
redirect_port tcp 192.168.1.24:25 25

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

# все должно быть в одну строчку
nat 1 config log if em0 reset same_ports deny_in redirect_port tcp 1.2.3.4:6881 6881 redirect_port udp 1.2.3.4:4444 4444 redirect_port tcp 192.168.1.24:25 25
Просто при оформлении статьи нельзя создавать строки длинее ~100 символов - поэтому пришлось прибегнуть к переносу и обьяснению про то, что в рабочем конфиге все должно быть без переносов.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35308
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Alex Keda » 2010-01-24 14:27:25

в шелл-скритах, кстати, символ обратного слэша обрабатывается корректно.
Убей их всех! Бог потом рассортирует...

nikolay4
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение nikolay4 » 2010-02-04 17:04:55

Ребят подскажи как завернуть юзеров на прокси?
команда

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

 ipfw add fwd 127.0.0.1,3128 tcp from 10.1.0.0/16 to any out 80 via rl1 
почемуто не срабатывает.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-04 18:03:01

для fwd ядро должно быть собрано с

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

options         IPFIREWALL_FORWARD
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.


rewired
рядовой
Сообщения: 45
Зарегистрирован: 2009-06-22 22:04:41

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение rewired » 2010-02-05 20:41:59

подскажите пожалуйста, что я делаю не так. мне необходимо закрыть некоторые порты из вне на роутере freebsd 8.0 что бы на эти порты из инета никто не лез. в конфиг фаервола добавляю такю строчку

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

${fwcmd} add deny tcp from any 22, 135, 139, 445, 3306 to {внешний ип} in via ${внешний интерфейс} 
и не работает, порты не закрываются:( подскажите где руки кривые?:) спасибо

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-05 21:43:51

При чем же здесь ipfw nat?

почитайте вот на досуге:
http://www.freebsd.org/cgi/man.cgi?quer ... ormat=html

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

${fwcmd} add deny tcp from any to ${внешний ип} 22, 135, 139, 445, 3306 in via ${внешний интерфейс}
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

rewired
рядовой
Сообщения: 45
Зарегистрирован: 2009-06-22 22:04:41

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение rewired » 2010-02-05 21:54:54

не помогло все равно...
разобрался,
Как мне объяснил знающий человек, в FreeBSD начиная с 7 что бы после ната все отрезалось надо было

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

net.inet.ip.fw.one_pass=0
вписать в /etc/sysctl.conf

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-05 23:04:13

Этот параметр не про это. Он указывает должен ли трафик вишедший из подсистемы divert, nat или dummynet быть передан в ipfw на дальнейшую обработку или надо просто молча ПРИНЯТЬ его.

То будет ли зарезаться неизвестный входящий снаружи трафик на нате зависит от его настройки - есть ли там специальный параметр deny_in или нет.

Вот например при one_pass=0:

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

ipfw nat 1 config ip 1.2.3.4
ipfw add 100 nat 1 ip from any to any via ${ext_if}
ipfw add 200 deny all from any to any
трафик дойдет до 200 и умрет на нем

А вот например при one_pass=1:

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

ipfw nat 1 config ip 1.2.3.4
ipfw add 100 nat 1 ip from any to any via ${ext_if}
ipfw add 200 deny all from any to any
он до 200 не дойдет - он будет принят натом (так как нет deny_in) и будет принят системой - после ната сразу же allow.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

DeVir
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение DeVir » 2010-02-14 20:12:03

Добрый вечер.

Попробовал настроить нат так как у вас написано по примеру 1

но нат не работает
поднял тут тему
http://www.bsdportal.ru/viewtopic.php?t ... sc&start=0
в итоге тоже некто не помог

Может есть какие нибудь мыли что не так сделано ?

rewired
рядовой
Сообщения: 45
Зарегистрирован: 2009-06-22 22:04:41

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение rewired » 2010-02-14 20:44:34

terminus писал(а):Этот параметр не про это. Он указывает должен ли трафик вишедший из подсистемы divert, nat или dummynet быть передан в ipfw на дальнейшую обработку или надо просто молча ПРИНЯТЬ его.

То будет ли зарезаться неизвестный входящий снаружи трафик на нате зависит от его настройки - есть ли там специальный параметр deny_in или нет.

Вот например при one_pass=0:

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

ipfw nat 1 config ip 1.2.3.4
ipfw add 100 nat 1 ip from any to any via ${ext_if}
ipfw add 200 deny all from any to any
трафик дойдет до 200 и умрет на нем

А вот например при one_pass=1:

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

ipfw nat 1 config ip 1.2.3.4
ipfw add 100 nat 1 ip from any to any via ${ext_if}
ipfw add 200 deny all from any to any
он до 200 не дойдет - он будет принят натом (так как нет deny_in) и будет принят системой - после ната сразу же allow.
У меня видимо есть, т.к. после изменения one_pass трафик на открытые порты с нета стал резаться.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-14 22:23:41

DeVir писал(а):Добрый вечер.

Попробовал настроить нат так как у вас написано по примеру 1

но нат не работает
поднял тут тему
http://www.bsdportal.ru/viewtopic.php?t ... sc&start=0
в итоге тоже некто не помог

Может есть какие нибудь мыли что не так сделано ?
в настройках сетевухи em надо поставить -rxcsum

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

ifconfig_em0="inet 192.168.1.1 netmask 255.255.255.0 -rxcsum"
Об этой баге известно уже какое-то время. В конце статьи, в разделе "Дополнительная информация" было упомянуто:
- Библиотека libalias, на которой основан ipfw nat, плохо дружит с функциями аппаратного ускорения расчета контрольных сумм и управления потоками, которые доступны на некотроых сетевых адаптерах. Рекомендуется выключать tcp segmentation offloading (TSO), а так же rxcsum на том сетевом адаптере где работает нат (ifconfig em0 -rxcsum -tso).
Меня эта бага уже немножко злит. Написал PR
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-14 22:24:54

rewired писал(а):У меня видимо есть, т.к. после изменения one_pass трафик на открытые порты с нета стал резаться.
не видя всех правил фаервола ничего конкретного сказать нельзя.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

rewired
рядовой
Сообщения: 45
Зарегистрирован: 2009-06-22 22:04:41

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение rewired » 2010-02-14 23:02:47

nat_config.sh

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

#!/bin/sh

fwcmd="/sbin/ipfw"

#Inet interface
интерфейсы

#Local interface
интерфейсы

#NAT config
${fwcmd} nat 8668 config ip ${oip} log same_ports
fw.conf

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

#!/bin/sh -

#killall -TERM natd
#sleep 10

fwcmd="/sbin/ipfw"

setup_loopback () {
        ############
        # Only in rare cases do you want to change these rules
        #
        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
}

# Flush out the list before we begin.
#
${fwcmd} -f flush

#[Ss][Ii][Mm][Pp][Ll][Ee])
интерфейсы

        unpriv="1024-65535"

        setup_loopback

/usr/local/etc/firewall/nat_config.sh

/usr/local/etc/firewall/natd.sh

        ${fwcmd} add allow tcp from any to ${oip} dst-port 20,21 via ${iif}
        ${fwcmd} add allow tcp from ${oip} 20,21 to any via ${iif}
        ${fwcmd} add allow tcp from any 20,21 to ${oip} in via ${iif}
        ${fwcmd} add allow tcp from any to ${oip} dst-port 1534 via ${iif}
        ${fwcmd} add allow tcp from ${oip} 1534 to any via $i{iif}
        ${fwcmd} add allow tcp from any 1534 to ${oip} in via ${iif}
        ${fwcmd} add allow upd from any to ${oip} dst-port 1033 via ${iif}
        ${fwcmd} add allow upd from ${oip} 1033 to any via $i{iif}
        ${fwcmd} add allow upd from any 1033 to ${oip} in via ${iif}
        ${fwcmd} add allow tls from any to ${oip} dst-port 2583 via ${iif}
        ${fwcmd} add allow tls from ${oip} 2583 to any via $i{iif}
        ${fwcmd} add allow tls from any 2583 to ${oip} in via ${iif}
примерно так + локальные правила

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-14 23:40:36

Мнда... А по проще никак нельзя все это дело запускать чем через три отдельных скрипта? Зачем ipfw nat да еще и natd (если natd.sh это то о чем я думаю)?

покажите вывод:

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

ipfw show
секретрые IP, ежели такие там есть, замажте на 192.168.1.x.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

rewired
рядовой
Сообщения: 45
Зарегистрирован: 2009-06-22 22:04:41

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение rewired » 2010-02-15 0:38:29

ну вообще в rc.conf у меня только ipfw прописан. мне этот конфиг чувак скинул которым он дома пользуется, в принципе все относительно дефотное не много переписанное... Если есть альтернатива запускать все это проще то я приму к сведению:)

DeVir
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение DeVir » 2010-02-25 9:50:41

Добрый день!

Сделано у меня все по примеру 1
все работает хорошо авторам большое уважение.

Но есть проблема пишу любое правило например открытие порта не внешнем интерфейсе скажем 80 порт.
Но он не открывается.

Может что то специфичное указывать надо ?
Подскажите, заранее благодарен.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-02-25 10:25:53

как в каком местре конфига пишете? до ната или после?
Вообще можно же порты открывать через redirect_port в настройках ната...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

DeVir
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение DeVir » 2010-02-25 11:14:27

terminus писал(а):как в каком местре конфига пишете? до ната или после?
Вообще можно же порты открывать через redirect_port в настройках ната...
пишу в /etc/firewall
110 до ната.

редирект думаю не очень корректно получится (