Показать полную графическую версию : Настройка Прокси (SQUID) с PF + DHCP relay (FreeBSD 8.1)
Доброй ночи, коллеги.
Уже неделю бьюсь и совсем запутался(
Ситуация следующего характера:
Имеется кусок сети, в которой интернет раздает Cisco (VPN+DNS+DHCP). Она же является одним из нескольких звеньев территориально-распределенной сети офисов.
В обсуждаемом офисе у кого-то из сотрудников возник мозговой коллапс и сударь принялся качать дикое кол-во инет трафика (оплата по счетам за интернет выросла аж в 15-20 раз.) Было принято решение поднять SQUID+PF+SAMS с NCSA аутентификацией.
Т.к. данный прокси встанет в разрыв сети (между Cisco и клиентами), то возникает проблема в получении клиентами ip-адреса от цисковского DHCP (это критично!). Тут было решено воспользоваться пакетом из портов "dhcprelay".
http://www.imagepost.ru/thumbs/345/XnZZb97UtLIJ7CiZJVi1.JPG (http://www.imagepost.ru/?v=345/XnZZb97UtLIJ7CiZJVi1.JPG)
Итак получил две проблемы:
1. Настройка PF.
Поскольку никакая безопасность не требуется (Cisco хватает), PF должен быть просто открыт для исходящих и входящих пакетиков.
Но возникает вопрос... а правильно ли настроен PF?...
BSDproxy# cat /etc/pf.conf
ext_if="sk0"
int_if="rl0"
internal_net="10.1.1.0/24"
proxy_if="lo0"
proxy_port="3128"
rdr on $int_if proto tcp from $internal_net to any port www -> 127.0.0.1 port 3128
nat on $ext_if from $ext_if to any -> ($ext_if)
nat on $ext_if from $int_if to any -> ($ext_if)
nat on $ext_if from $int_if:network to any -> ($ext_if)
nat on $int_if from $ext_if to any -> ($int_if)
nat on $int_if from $ext_if:network to any -> ($int_if)
pass in all keep state
pass out all keep state
2. Если же с PF все ок.....в чем не уверен...
Не отрабатывает DHCPrelay
.....в упор нигде не нашел нормального описания как сие чудо настроить ....man dhcprelay - нет такого.
Единственное о чем говорится - это при установке в /etc/rc.conf нужно добавить три строки: привожу вывод rc.conf
BSDproxy# cat /etc/rc.conf
gateway_enable="YES"
defaultrouter="10.1.1.1"
hostname="BSDproxy"
ifconfig_sk0="DHCP"
ifconfig_rl0="inet 10.1.1.241 netmask 255.255.255.0"
sshd_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
dhcprelay_enable="YES"
dhcprelay_server="10.1.1.1"
dhcprelay_ifaces="sk0"
Заранее большое спасибо за любую помощь или совет (ссылку)!!!
может Я чего то не понял....
Возможно стоило бы использовать ipfw нарезав каналы (pipe) ограничивающие траффик для каждого юзара данного офиса, без аутентификации и без всяких проксей. А для получения ip адресов клиентам можно поднять локал DHCP сервер на той же машине где установится ipfw, там явно по привязывать mac адреса каждой машины к определённому ip и нарезать этим ip определённый pipe.
ps:pf не юзал, потому ничего про него не скажу.
Да там нужно только www-трафик считать и ограничить доступ для узкого круга лиц
(учетки для тех кому надо, а остальные лесом топают)
...почитаю про данное предложение. Спасибо Flainth, !
З.Ы.: Вопрос всё еще актуален!
стесняюсь спросить... а dhcprelay установлен? Если нет, то лучше сделать всё по хэндбуку
хттп://www.freebsd.org/doc/ru/books/handbook/network-dhcp.html
там в конце есь ссылка на ман dhcprelay
хттп://www.freebsd.org/cgi/man.cgi?query=dhcrelay&sektion=8&manpath=FreeBSD+8.1-RELEASE+and+Ports
ога, dhcprelay установлен...там насколько я понимаю написано про то.......но не то)
загляните на эти ссылки
хттп://www.freebsd.org/doc/ru/books/handbook/network-dhcp.html
там в конце есь ссылка на ман dhcprelay
хттп://www.freebsd.org/cgi/man.cgi?query=dhcrelay&sektion=8&manpath=FreeBSD+8.1-RELEASE+and+Ports
Я подправил свой предидущий пост.
Спасибо! Это уже читал... но на работе релея это к сожалению никак не отразилось..... может затык в правилах PF? .... может кто подскажет.....пока буду читать-пробовать дальше.
мне кажутся сомнительными последние две строки конфига pf, если судить по логике которая мне известна , то правилам keep-state должно предшествовать правило setup, или хотя бы в том же правиле дописать setup, тоесть примерно так:
pass in all setup keep state.
Попробуйте
и хорошо бы логи посмотреть...
ничего не выходит(( ....Гуру PF....помогите... совсем беда((((
Господа форумчане... рабочий ли такой вариант pf.conf?
Помогите совладать с PF!
BSDproxy# cat /etc/pf.conf
ext_if="sk0"
int_if="rl0"
internal_net="10.1.1.0/24"
rdr on $int_if proto tcp from $internal_net to any port 80 -> 127.0.0.1 port 3128
nat on $ext_if from $ext_if to any -> ($ext_if)
nat on $ext_if from $int_if to any -> ($ext_if)
nat on $ext_if from $int_if:network to any -> ($ext_if)
pass in all
pass out all keep state
на данном этапе что у Вас работает , а что нет?
впрочем, почитайте эту статью хттп://www.opennet.ru/base/sec/pf_openbsd_altq.txt.html. возможно что то прояснит...
Господа форумчане... рабочий ли такой вариант pf.conf?
Помогите совладать с PF!
Код:
BSDproxy# cat /etc/pf.conf
ext_if="sk0"
int_if="rl0"
internal_net="10.1.1.0/24"
rdr on $int_if proto tcp from $internal_net to any port 80 -> 127.0.0.1 port 3128
nat on $ext_if from $ext_if to any -> ($ext_if)
nat on $ext_if from $int_if to any -> ($ext_if)
nat on $ext_if from $int_if:network to any -> ($ext_if)
pass in all
pass out all keep state
-------
...пользуясь моментом...хочу передать привет друзьям...которые тоже пользуются ...моментом))) »
оО
хрени подобной не видел ещё ни разу
пиши, что надо, на жабу: dtulyakov@xmpp.ru, ttys@ttys.org.ua, я тебе с правилами помогу
ЗЫ: нат в PF настраивается в одну строчку
Господа, прошу не пинать, пишу на форумах впервые!! Разбирался бы сам, курил маны, но время жмет очень сильно! Проблема состоит в следующем: в учреждении есть сеть 192.168.50.0/24, есть домен на в2к3. Все это дело рвется в инет через шлюз. вот собственно понеслось!:)
на чем все крутится -->
FreeBSD proxy.mmuftp.local 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
стоит squid + sams т.е. весь трафик идет через проксю! на этом моменте все работает отлично, но встала задача прокинуть порты для рдп и хамача!! + в дальнейшем смтп и поп3. Почитав инфу, решил поставить pf..т.к. в ядро он не вкомпилен, запускаю его модулем!
конфиг rc.conf
keymap="ru.koi8-r"
sshd_enable="YES"
ifconfig_rl1="inet 192.168.1.4 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
ifconfig_rl0="inet 192.168.50.2 netmask 255.255.255.0"
hostname="proxy.mmuftp.local"
apache22_enable="YES"
squid_enable="YES"
mysql_enable="YES"
sams_enable="YES"
inetd_enable="YES"
pf_enable="YES"
gateway_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
ext_if="rl1"
int_if="rl0"
internal_net="192.168.50.0/24"
nat on $ext_if inet proto tcp from $internal_net port {smtp, pop3} to any port {smtp, pop3} -> ($ext_if)
nat on $ext_if inet proto tcp from $internal_net port 3389 to any port 3389 -> ($ext_if)
nat on $ext_if from $internal_net to any -> ($ext_if)
rdr on $int_if proto tcp from $internal_net to any port 80 -> 127.0.0.1 port 3128
pass out
если делаю так, то перестает работать даже сквид! если же убрать из rc.conf строку gateway_enable="YES" то в инет пускает, но порты все равно не прокидываются:cry:
pf вижу впервые, документацию почитал, но честно говоря вник не особо, а времени экспериментировать нет, да и возможности тоже. Может у кого есть рабочий конфиг, киньте plz, а я дальше буду читать инфу и вникать! спасибо!
P.S. в логах pf одна строка, и то непонятной кодировки. вообщем не читаема!
dmitryst
16-02-2011, 23:41
Оригинал мануала pf от создателей OpenBSD (http://www.tw.openbsd.org/faq/pf/ru/rdr.html)
Я так предполагаю, что это то что нужно!
rdr on $int_if proto tcp from $int_net to $ext_if port 3389 -> \
$server
no nat on $int_if proto tcp from $int_if to $int_net
nat on $int_if proto tcp from $int_net to $server port 3389 -> \
$int_if
Только все равно остается непонятным тот факт, что при строке gateway_enable="YES" в rc.conf пропадает полностью инет в локалке, а нат не появляется! т.к. я не могу сейчас могу попасть на серв только по ссш, то рисковать с правилами не хочу!
стоит squid + sams т.е. весь трафик идет через проксю! на этом моменте все работает отлично, но встала задача прокинуть порты для рдп и хамача!! + в дальнейшем смтп и поп3. Почитав инфу, решил поставить pf..т.к. в ядро он не вкомпилен, запускаю его модулем!
nat on $ext_if from $internal_net to any -> ($ext_if)
»
исходя из правила весь трафик должен идти через нат а не через прокси
сделай так:
nat pass proto tcp from $internal_net port {smtp, pop3} to any port {smtp, pop3} -> ($ext_if)
nat pass proto tcp from $internal_net port 3389 to any port 3389 -> ($ext_if)
#nat on $ext_if from $internal_net to any -> ($ext_if)
rdr pass proto tcp from $internal_net to any port 80 -> 127.0.0.1 port 3128
ЗЫ по поводу ssh есть куча статей в том числе и я публиковал
для openbsd (http://www.ignix.ru/public/zashchita-ssh-ot-brutforsa-na-openbsd)
для freebsd (http://www.ignix.ru/public/protection_ssh)
ЗЗЫ nat pass proto tcp from $internal_net port {smtp, pop3} to any port {smtp, pop3} -> ($ext_if) если ип статический могут быть проблемы с попаданием в блек листы спама
Я так предполагаю, что это то что нужно!
rdr on $int_if proto tcp from $int_net to $ext_if port 3389 -> \
$server
no nat on $int_if proto tcp from $int_if to $int_net
nat on $int_if proto tcp from $int_net to $server port 3389 -> \
$int_if »
нет это не то что нужно
хотя не совсем ясно что конкретно нужно? нафига rdp порт сначала редиректить потом натить???
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC