URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4117
[ Назад ]

Исходное сообщение
"ipfw очень нужна помощь"

Отправлено rb26dett , 28-Янв-09 12:22 
Добрый день всем! не могу понять, где я не прав в настройке ipfw в freebsd 6.0
Ситуация такая - стоит ADSL модем, внутренний адрес- 192.168.1.1 (роутером), машина с фрей - 2 сетевые, одна - на модем ( адрес - 192.168.1.2), другая вовнутрь - 192.168.0.10, соответственно внутренняя сеть 192.168.0.0/24. Дальше стоит тестовая машина, которая должна в идеале начать выходить в нет через фрю. Адрес ее - пусть 192.168.0.20, шлюзом - 192.168.0.10, ДНС - ДНС провайдера, пусть xxx.xxx.xxx.xxx
ядро собрал с поддержкой ipfirewall и ipdivert

rc.conf:

defaultrouter="192.168.1.1"
gateway_enable="YES"
hostname="bla.bla"
ifconfig_rl0="inet 192.168.0.10 netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.1.2 netmask 255.255.255.0"
inetd_enable="YES"
natd_enable="YES"
natd_interface="rl1"
firewall_enable="YES"
firewall_script="/etc/firewall.sh"
firewall_logging="YES"
trafd_enable="YES"

firewall.sh:

#!/bin/sh

/sbin/ipfw -f flush
/sbin/ipfw add 50 allow all from any to any via lo
/sbin/ipfw add 100 divert natd all from 192.168.0.0/24 to any via rl1
/sbin/ipfw add 150 divert natd all from any to me via rl1
/sbin/ipfw add 200 allow all from me to any
/sbin/ipfw add 250 allow all from any to me
# понимаю, что вышеуказанное правило мягко говоря небезопасно, но тестовая машина даже
# так в инет не выходит, потом уже добавлять буду tcp 80,53, udp 53 и остальное по
# необходимости для машины с фрей, когда данную проблему решу
/sbin/ipfw add 300 allow all from any to any via rl0
# насколько я понимаю, это правило должно пускать внутренних юзеров куда угодно и по
# чему угодно

resolv.conf:

domain   bla
nameserver  xxx.xxx.xxx.xxx

И при всех этих настройках тестовая машина в интернет не выходит...и не пингует даже ничего внешнего. Все работает только при следующем содержании firewall.sh - (ну это и понятно)

#!/bin/sh

/sbin/ipfw -f flush
/sbin/ipfw add divert natd all from any to any via rl1
/sbin/ipfw add allow all from any to any

Очень прошу помощи - что я не так сделал, и почему, если не сложно, заранее спасибо!


Содержание

Сообщения в этом обсуждении
"ipfw очень нужна помощь"
Отправлено Andrew , 28-Янв-09 17:35 
Сдается мне, ошибка в этом правиле
"/sbin/ipfw add 100 divert natd all from 192.168.0.0/24 to any via rl1"


"ipfw очень нужна помощь"
Отправлено rb26dett , 29-Янв-09 09:36 
упс, да, промахнулся... - будет ли правильно следущее - (одно правило вместо двух)
/sbin/ipfw add divert natd all from any to any via rl1   ?


"ipfw очень нужна помощь"
Отправлено mazzay , 29-Янв-09 09:49 
>#!/bin/sh
>
>/sbin/ipfw -f flush
>/sbin/ipfw add 50 allow all from any to any via lo
>/sbin/ipfw add 100 divert natd all from 192.168.0.0/24 to any via rl1
>
>/sbin/ipfw add 150 divert natd all from any to me via rl1
>
>/sbin/ipfw add 200 allow all from me to any
>/sbin/ipfw add 250 allow all from any to me

приходящий пакет от внешнего ресурса натится, то есть меняется адрес получателя с внешнего адреса твоего интерфейса на адрес из внутренней подсети (правилом 150)
У нас получился пакет идущий с внешнего адреса на внутреннюю подсеть и он не соответствует ни одному правилу, поскольку пропускаются пакеты только с адресами получателя me (это 192.168.0.10 и 192.168.1.2)
если я не ошибся то нужно правило типа
add allow all from any to 192.168.0.0/24 (для теста пойдет)
плюс посмотрите куда упирается трафик командой ipfw show и почитайте вот эту статью
http://www.lissyara.su/?id=1536
особо обратив внимание на рисунок и зеленый текст на черном фоне


"ipfw очень нужна помощь"
Отправлено rb26dett , 09-Апр-09 09:46 
Доброго дня всем!!! К сожалению, не было возможности заниматься фрей почти все это время.
Что получилось на днях - почитал вышеуказанные ссылки - спасибо огромное, что имеем -


#!/bin/sh

/sbin/ipfw/ -q -f flush
/sbin/ipfw add allow all from any to any via lo
/sbin/ipfw add allow ip from 192.168.0.0/24 to 192.168.0.0/24 via rl0
/sbin/ipfw add divert natd ip from 192.168.0.0/24 to any out via rl1
/sbin/ipfw add divert natd ip from any to 192.168.1.2 in via rl1
/sbin/ipfw add allow ip from 192.168.1.2 to any out via rl1
/sbin/ipfw add allow ip from any to 192.168.1.2 in via rl1
/sbin/ipfw add allow udp from 192.168.0.0/24 to any 53 in via rl0
/sbin/ipfw add allow udp from 192.168.0.0/24 to any 53 out via rl1
/sbin/ipfw add allow udp from any 53 to 192.168.0.0/24 in via rl1
/sbin/ipfw add allow udp from any 53 to 192.168.0.0/24 out via rl0
/sbin/ipfw add allow tcp from 192.168.0.0/24 to any 80,53 in via rl0
/sbin/ipfw add allow tcp from 192.168.0.0/24 to any 80,53 out via rl1
/sbin/ipfw add allow tcp from any 80,53 to 192.168.0.0/24 in via rl1
/sbin/ipfw add allow tcp from any 80,53 to 192.168.0.0/24 out via rl0

# для начала здесь и ниже разрешил только dns и http ну и ниже - почту
или, немного сократив, насколько я это понял -


#!/bin/sh

/sbin/ipfw/ -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow ip from any to any via rl0
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via rl1
/sbin/ipfw add 350 divert natd ip from any to 192.168.1.2 in via rl1
/sbin/ipfw add 400 allow ip from 192.168.1.2 to any out via rl1
/sbin/ipfw add 450 allow udp from any to 192.168.1.2 in via rl1
/sbin/ipfw add 500 allow udp from 192.168.0.0./24 to any 53 out via rl1
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via rl1
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via rl1
/sbin/ipfw add 650 allow tcp from any 80,53,25,110 to 192.168.0.0/24 in via rl1
/sbin/ipfw add 700 allow icmp from any to any

Все работает, наконец-то. Большая просьба - оцените, кому не трудно, конфиг. С точки зрения безопасности, в первую очередь. Правильно ли, если нет, то куда примерно копать.
Меня как-то настораживают правила типа 550, 650 - вроде выглядит как открытие портов снаружи вовнутрь, а не разрешение прохождения ответных пакетов.
И как в такой схеме будет выглядеть проброс порта,  - 4899, пусть, извне к любой машине из внутренней сети, пусть 192.168.0.3
Заранее благодарен, с нетерпением жду ответов.