Перейти до

Помогите с pf


Рекомендованные сообщения

Дано: FreeBSD 8.0, прозрачный SQUID и пока ещё только pf в качестве фаерволла.

Внешний ИФ-10.0.1.3, внутренний 192.168.0.1.

Пишу решение.

 

Пересобираем ядро:

 

# cd /usr/src/sys/i386/conf/

# cp GENERIC MY

 

cpu I686_CPU
ident MY

makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

cpu		I686_CPU
ident		MY
makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols

device		pf
device		pflog
device		pfsync

options		IPFIREWALL
options		IPFIREWALL_VERBOSE
options		IPFIREWALL_VERBOSE_LIMIT=100
options		DUMMYNET
options		LIBICONV

options		DEVICE_POLLING

 

config MY

cd /usr/src/sys/i386/compile/MY

make depend

make

make install

 

(или

# cd /usr/src

# make buldkernel KERNCONF=MY

# make installkernel KERNCONF=MY

В зависимости от версии ОС)

 

Прописываем в rc.conf:

 

pf_enable="YES"
pf_program="/sbin/pfctl"
pf_flags=""
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""

firewall_enable="YES"           # Set to YES to enable firewall functionality
firewall_quiet="NO"             # Set to YES to suppress rule display
firewall_logging="YES"          # Set to YES to enable events logging

 

shutdown -r now

 

/etc/pf.conf:

ext_if="msk0"
int_if="re0"

udp_services=" {domain, ntp} "
icmp_types="echoreq"
lan="10.0.0.0/24"
ext_ip="внешний ip сервера"

set skip on lo0

#rdr squid
rdr on $int_if proto tcp from $lan port 80 to any port 80 -> 127.0.0.1 port 3128

#NAT
nat on $ext_if inet from any to any -> $ext_if

nat-anchor "pftpx/*"
rdr-anchor "pftpx/*"
#rdr FTP
rdr pass on $int_if proto tcp from $ext_ip to any port 21 -> 127.0.0.1 port 8021
anchor "pftpx/*"

pass quick all

 

Теперь, чтобы работал доступ к мировым ftp, надо сделать:

 

cd /usr/ports/ftp/pftpx

make

make install clean

 

 

В /etc/rc.conf надо добавить строки для автостарта pftpx:

 

	pftpx_enable=”YES”
pftpx_flags=””

После этого можно перезагрузить машину, чтобы стартовал pftpx или сделать так:

 

/usr/local/sbin/pftpx

 

Перед загрузкой проверим правила:

 

# pfctl -nf /etc/pf.conf

 

Если все ок, то загрузим:

 

# pfctl -f /etc/pf.conf

 

Здесь PF у нас будет заниматься только редиректами и НАТ'ом, непосредственно "запрещать/разрешать/шейпить" - будет IPFW.

 

Пришлось выкинуть из ядра option NETGRAPH - "отваливалась" сетевая карта каждые 5-10 минут ;)

После этого проработала меньше часа и опять в Down... ;)

Поменял сетевую карту.

Ссылка на сообщение
Поделиться на других сайтах
выкиньте pf

возьмите ipfw nat.

и будет вам счастье с ftp

;)

Нормально. pf признан лучшим фаерволлом 2004г. Я конечно ipfw люблю и уважаю (3 года его юзал), но надеюсь что в дальнейшем использование pf будет иметь свои плюсы.

 

Вы будете смеяться, но я таки настроил доступ к ftp, используя pf. ;)

Позже выложу решение.

Ссылка на сообщение
Поделиться на других сайтах

Поправил первый пост. Решение пока сырое, но оно работает. С ftp-proxy не получилось в упор, зато pftpx завёлся сразу.

Сделал IPFW + PF. PF прозрачен, только НАТит и делает редирект. IPFW рулит шейпом и разрешениями.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 months later...

Вылезла другая беда. Оказывается всё это время Squid "не участвовал" в процессе работы сервера, т.е. попросту на него не попадают пакеты с 80го порта, хотя rdr на 3128 стоит.

Обнаружил, что кэш его не меняется - как был пустым так и остался. Поскольку прецендентов это не вызывало - не лез туда, пока не начались дикие тормоза при открытии страниц по вечерам, когда трафик в пике.

Перепробовал кучу всего, включая родной fwd. Единожды добился работы squid, но все кто сидит на шейпах ipfw pipe - по http ходить не могли.

 

Пожалуйста, кто-то может выложить рабочий pf.conf для связки pf+ipfw+прозрачный squid? Извините за беспокойство, устал уже видимо, разобраться и решить проблему нет сил.

 

Версия squid - 3.0 STABLE. Попробовал 2.7 - то же самое.

Ссылка на сообщение
Поделиться на других сайтах

Вылезла другая беда. Оказывается всё это время Squid "не участвовал" в процессе работы сервера, т.е. попросту на него не попадают пакеты с 80го порта, хотя rdr на 3128 стоит.

Обнаружил, что кэш его не меняется - как был пустым так и остался. Поскольку прецендентов это не вызывало - не лез туда, пока не начались дикие тормоза при открытии страниц по вечерам, когда трафик в пике.

Перепробовал кучу всего, включая родной fwd. Единожды добился работы squid, но все кто сидит на шейпах ipfw pipe - по http ходить не могли.

 

Пожалуйста, кто-то может выложить рабочий pf.conf для связки pf+ipfw+прозрачный squid? Извините за беспокойство, устал уже видимо, разобраться и решить проблему нет сил.

 

Версия squid - 3.0 STABLE. Попробовал 2.7 - то же самое.

 

А у тебя rdr стоит на 127.0.0.1? Слушает на нём сквид?

Ссылка на сообщение
Поделиться на других сайтах

Да. У сквида стоит в конфиге http_port 3128 transparent.

Пробовал писать и http_port 127.0.0.1:3128 transparent - всё равно.

 

Если в браузере прописать прокси и порт 3128 - squid начинает кешировать, т.е. в директории /var/cache начинают создаваться файлы.

Ссылка на сообщение
Поделиться на других сайтах

Да. У сквида стоит в конфиге http_port 3128 transparent.

Пробовал писать и http_port 127.0.0.1:3128 transparent - всё равно.

 

Если в браузере прописать прокси и порт 3128 - squid начинает кешировать, т.е. в директории /var/cache начинают создаваться файлы.

 

tcpdump -i lo0 что показывает?

Ссылка на сообщение
Поделиться на других сайтах
tcpdump -i lo0 что показывает?

о_О вообще ничего. Даже когда прописываю в браузере прокси и squid начинает работать.

Ссылка на сообщение
Поделиться на других сайтах

 Ну когда явно прописываешь - и не должно. Оно в этом случае не пойдёт через lo.

 

Покажи rdr правила в PFе и вывод sockstat -4 | grep squid

Ссылка на сообщение
Поделиться на других сайтах

Всё, решили. Спасибо Queeq. :)

 

Причина: в блокировке пакетов правилами ipfw на внутренний адрес 127.0.0.1.

Т.к. в старом варианте это всё было только в связке ipfw+natd+fwd и правила natd+fwd стояли до запрета 127.0.0.1 - там это работало.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...