Шлюз ipfw + nat на freebsd
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2020-05-14 9:03:27
Шлюз ipfw + nat на freebsd
Господа, кто сталкивался ,посоветуйте
нужно ли обязательно пересобирать ядро при настройке шлюза под nat и ipfw либо можно подгрузить модули при старте системы и как это отражается работе шлюза
Заранее благодарен за ответ
нужно ли обязательно пересобирать ядро при настройке шлюза под nat и ipfw либо можно подгрузить модули при старте системы и как это отражается работе шлюза
Заранее благодарен за ответ
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
Шлюз ipfw + nat на freebsd
у нас модулями и все ок
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2020-05-14 9:03:27
Шлюз ipfw + nat на freebsd
Уважаемый WideAreaNetwork, если не слом можно чуть подробнее про модули, в инете много и по-разному
некоторые предлагают дописывать /boot/loder.conf
ipfw_load="YES"
#ipfw_nat_load="YES"
ipdivert_load="YES"
dummynet_load="YES"
Некоторые утверждают что просто отредактировал rc.conf и включили ipfw и natd и все работает
некоторые предлагают дописывать /boot/loder.conf
ipfw_load="YES"
#ipfw_nat_load="YES"
ipdivert_load="YES"
dummynet_load="YES"
Некоторые утверждают что просто отредактировал rc.conf и включили ipfw и natd и все работает
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
Шлюз ipfw + nat на freebsd
у нас так
Код: Выделить всё
cat /boot/loader.conf
pf_load="YES"
ipfw_load="YES"
ipdivert_load="YES"
dummynet_load="YES"
if_lagg_load="YES"
autoboot_delay=3 # (default 10) seconds
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2020-05-14 9:03:27
Шлюз ipfw + nat на freebsd
Спасибо за ответ,все конкретно и доходчиво
Кстати о "новых" версиях
https://alexnettm.com/freebsd/freebsd-n ... l-nat.html
Человек утверждает что этого достаточно, я не уверен,карантин кончится попробую на работе на vm
Кстати о "новых" версиях
https://alexnettm.com/freebsd/freebsd-n ... l-nat.html
Человек утверждает что этого достаточно, я не уверен,карантин кончится попробую на работе на vm
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
Шлюз ipfw + nat на freebsd
статья 14 года, какая там может быть речь о новых версиях, и насколько я понял он включает фаер через /etc/sysctl.confsiad писал(а): ↑2020-05-14 12:41:17Кстати о "новых" версиях
https://alexnettm.com/freebsd/freebsd-n ... l-nat.html
Человек утверждает что этого достаточно, я не уверен,карантин кончится попробую на работе на vm
-
- прапорщик
- Сообщения: 496
- Зарегистрирован: 2015-05-25 14:36:32
Шлюз ipfw + nat на freebsd
Нет - не верно.WideAreaNetwork писал(а): ↑2020-05-14 18:52:54насколько я понял он включает фаер через /etc/sysctl.conf
По указанной ссылке написано:
Код: Выделить всё
"Ядро не пересобирал, на стандартном GENERIC
В /etc/rc.conf добавляем строчки:"
ТС не указал версию своей системы.
Начиная с 11.1 многие вещи необходимые для работы ipfw уже вкомпилированы в систему по умолчанию.
Читаем:
https://www.freebsd.org/releases/11.1R/ ... el-modules
и
freebsd-f8/strannaya-problema-s-zfs-i-s ... ml#p385971
Поэтому достаточно внесение изменений в /etc/rc.conf и все запустится при перезагрузке.
Можно и так : kldload ipfw.ko
Посмотреть уже загруженные: kldstat
ВАЖНО! Если делаете kldload ipfw.ko, а сами не у консоли и в правилах есть ошибки, то можете себя заблокировать. И придется ножками идти к серверу.
Хотя есть метод, прописать в крон выключение ipfw через каждые, скажем, 10 минут.
Как именно и что именно вносить можно посмотреть так:
Код: Выделить всё
cat /etc/defaults/rc.conf | grep firewall
Типы firewall_type="UNKNOWN" можно посмотреть в оригинальном ee /etc/rc.firewall.
Когда делаете себе и свое, то лучше имя скрипта задать свое собственное.
Что-то вроде :
Код: Выделить всё
ee /etc/rc.conf
firewall_enable="YES"
firewall_type="closed"
firewall_script="/etc/firewall.conf"
Код: Выделить всё
#!/bin/sh
fw="/sbin/ipfw -q -N"
intif="em0"
intip="192.168.1.1"
intnet="192.168.1.0/24"
extif="em1"
extip="10.10.10.1"
# reset all rules
${fw} -f flush
${fw} -f pipe flush
${fw} -f queue flush
################################################################## ######
# CREATE RULES
################################################################## ######
${fw} add allow all from any to any via lo0
${fw} add divert natd all from ${intnet} to any out via ${extif}
${fw} add divert natd all from any to ${extip} in via ${extif}
#EOF
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
-
- прапорщик
- Сообщения: 496
- Зарегистрирован: 2015-05-25 14:36:32
Шлюз ipfw + nat на freebsd
Нет.
Теперь "оно" просто есть в ключевых моментах кода ядра.
Раньше, чтобы включить ipfw, была необходимость сборки ядра с опцией:
Теперь такой необходимости нет.
Достаточно указать firewall_enable="YES"
И перезагрузиться для активации.
Если перезагружаться лень или нет необходимости, то подгрузить kldload ipfw.ko
И все заработает как нужно.
А вот "open all"
Это уже набор используемых правил для конкретного поведения ipfw.
"open all" получится если сделать так:
Смотрим ee /etc/rc.firewall на предмет раздела "open":
Т.е. последнее правило разрешить все и всем.
Без firewall_enable="YES" файервол не активируется.
Теперь "оно" просто есть в ключевых моментах кода ядра.
Раньше, чтобы включить ipfw, была необходимость сборки ядра с опцией:
Код: Выделить всё
#options IPFIREWALL
Достаточно указать firewall_enable="YES"
И перезагрузиться для активации.
Если перезагружаться лень или нет необходимости, то подгрузить kldload ipfw.ko
И все заработает как нужно.
А вот "open all"
Это уже набор используемых правил для конкретного поведения ipfw.
"open all" получится если сделать так:
Код: Выделить всё
ee /etc/rc.conf
firewall_enable="YES"
firewall_type="open"
Код: Выделить всё
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
${fwcmd} add 65000 pass all from any to any
;;
Без firewall_enable="YES" файервол не активируется.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2020-05-14 9:03:27
-
- проходил мимо
Шлюз ipfw + nat на freebsd
Надо не статью смотреть, а включить голову:
- посмотреть скрипты
- почитать документацию
Уже давно не нужно пересобирать ядро, достаточно загружать модули.
NAT:
- есть user space реализация, используется демон natd - жутко старый конструктив
- есть ядерная реализация и этим все сказано
загрузить ipfw можно через /boot/loader.conf, но в системе это делают
через rc-скрипты расположенные в /etc/rc.d, а опции задаются в /etc/rc.conf
Есть только две ядерных переменных, которые нужно загружать через
loader.conf до загрузки самого модуля ipfw, man ipfw:
net.inet.ip.fw.default_to_accept
net.inet.ip.fw.tables_max
Чтобы понять первоначальное состояние firewall'а, необходимо
все проделать руками (предварительно закоментарьте все loader.conf/rc.conf)
Загружаем чистую систему:
выше видно что ни в ядре, ни модулем не загружен firewall
по kldstat и ответ на `ipfw list`, далее грузим kldload ipfw
и на консоли получим:
что говорит о том что модуль ipfw загружен, divert и nat можгут быть подгрудены,
logging = disabled и политика by default = deny!
теперь в /boot/loader.conf пропишите
перезагрузитесь и выполните:
# kldload ipfw
# ipfw list
получите
65535 allow ip from any to any
Вот Вам и вся логика загрузки.
важное: очень не рекомендую использовать одновременно два firewall'а,
убьетесь отслеживать что куда и когда попадает (порядок следования пакетов)
- посмотреть скрипты
- почитать документацию
Уже давно не нужно пересобирать ядро, достаточно загружать модули.
NAT:
- есть user space реализация, используется демон natd - жутко старый конструктив
- есть ядерная реализация и этим все сказано
загрузить ipfw можно через /boot/loader.conf, но в системе это делают
через rc-скрипты расположенные в /etc/rc.d, а опции задаются в /etc/rc.conf
Есть только две ядерных переменных, которые нужно загружать через
loader.conf до загрузки самого модуля ipfw, man ipfw:
net.inet.ip.fw.default_to_accept
net.inet.ip.fw.tables_max
Чтобы понять первоначальное состояние firewall'а, необходимо
все проделать руками (предварительно закоментарьте все loader.conf/rc.conf)
Загружаем чистую систему:
Код: Выделить всё
# kldstat
Id Refs Address Size Name
1 12 0xffffffff80200000 2448f20 kernel
2 1 0xffffffff82822000 2668 intpm.ko
3 1 0xffffffff82825000 b50 smbus.ko
4 1 0xffffffff82826000 18a0 uhid.ko
5 1 0xffffffff82828000 1aa0 wmt.ko
# ipfw list
ipfw: retrieving config failed: Protocol not available
# kldload ipfw
# ipfw list
65535 deny ip from any to any
# sysctl net.inet.ip.fw.default_to_accept
net.inet.ip.fw.default_to_accept: 0
#
по kldstat и ответ на `ipfw list`, далее грузим kldload ipfw
и на консоли получим:
Код: Выделить всё
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, default to deny, logging disabled
logging = disabled и политика by default = deny!
теперь в /boot/loader.conf пропишите
Код: Выделить всё
net.inet.ip.fw.default_to_accept=1
# kldload ipfw
# ipfw list
получите
65535 allow ip from any to any
Вот Вам и вся логика загрузки.
важное: очень не рекомендую использовать одновременно два firewall'а,
убьетесь отслеживать что куда и когда попадает (порядок следования пакетов)
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
Шлюз ipfw + nat на freebsd
WideAreaNetwork писал(а): ↑2020-05-14 11:48:44у нас так
КОД: ВЫДЕЛИТЬ ВСЁ
cat /boot/loader.conf
pf_load="YES"
ipfw_load="YES"
ipdivert_load="YES"
dummynet_load="YES"
if_lagg_load="YES"
autoboot_delay=3 # (default 10) seconds
получается ipfw_load="YES" можно исключить
-
- прапорщик
- Сообщения: 496
- Зарегистрирован: 2015-05-25 14:36:32
Шлюз ipfw + nat на freebsd
Не только.
Смотрим:
Код: Выделить всё
cat /etc/defaults/rc.conf | grep dummy
dummynet_enable="NO" # Load the dummynet(4) module
Код: Выделить всё
cat /etc/defaults/rc.conf | grep pf_
pf_enable="NO" # Set to YES to enable packet filter (pf)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_program="/sbin/pfctl" # where the pfctl program lives
pf_flags="" # additional flags for pfctl
И
Это не значит, что не возможно.
Это значит, что Вы должны очень четко себе представлять, "что", "как" и "зачем" Вы делаете. А также иметь представление как разруливать ту или иную проблематику по изменению правил "когда что-то за неработало или нужно сделать дополнительно".
Код: Выделить всё
man pf
DESCRIPTION
Packet filtering takes place in the kernel. A pseudo-device, /dev/pf,
allows userland processes to control the behavior of the packet filter
through an ioctl(2) interface. There are commands to enable and disable
the filter, load rulesets, add and remove individual rules or state table
entries, and retrieve statistics. The most commonly used functions are
covered by pfctl(8).
Код: Выделить всё
man ipfw
DESCRIPTION
The ipfw utility is the user interface for controlling the ipfw(4)
firewall, the dummynet(4) traffic shaper/packet scheduler, and the in-
kernel NAT services.
Грубо говоря: ipfw правила отработают раньше (или "до") чем pf в силу архитектуры.
-
- сержант
- Сообщения: 239
- Зарегистрирован: 2017-01-10 14:37:13
-
- проходил мимо
Шлюз ipfw + nat на freebsd
там практически все можно исключить, и вставить в /etc/rc.conf.получается ipfw_load="YES" можно исключить
Но тут уж решать Вам, как удобней для понимания и работы, так и делайте.