Kucher2 122 Опубликовано: 2010-02-11 10:45:28 Share Опубликовано: 2010-02-11 10:45:28 Дано: 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... Поменял сетевую карту. Ссылка на сообщение Поделиться на других сайтах
warzoni 7 Опубликовано: 2010-02-11 11:14:13 Share Опубликовано: 2010-02-11 11:14:13 Нужен доступ, (10wmz) и будет работать, как вам надо. (настроем)без squid со сквидом 20wmz Ссылка на сообщение Поделиться на других сайтах
adeep 212 Опубликовано: 2010-02-11 12:26:49 Share Опубликовано: 2010-02-11 12:26:49 выкиньте pf возьмите ipfw nat. и будет вам счастье с ftp Ссылка на сообщение Поделиться на других сайтах
911 140 Опубликовано: 2010-02-11 12:32:18 Share Опубликовано: 2010-02-11 12:32:18 выкиньте pf возьмите ipfw nat. и будет вам счастье с ftp +1 Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-02-11 12:51:00 Автор Share Опубликовано: 2010-02-11 12:51:00 выкиньте pfвозьмите ipfw nat. и будет вам счастье с ftp Нормально. pf признан лучшим фаерволлом 2004г. Я конечно ipfw люблю и уважаю (3 года его юзал), но надеюсь что в дальнейшем использование pf будет иметь свои плюсы. Вы будете смеяться, но я таки настроил доступ к ftp, используя pf. Позже выложу решение. Ссылка на сообщение Поделиться на других сайтах
Queeq 0 Опубликовано: 2010-02-11 13:19:44 Share Опубликовано: 2010-02-11 13:19:44 выкиньте pf возьмите ipfw nat. и будет вам счастье с ftp +1 Любители начинать холивары. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-02-11 14:07:59 Автор Share Опубликовано: 2010-02-11 14:07:59 Поправил первый пост. Решение пока сырое, но оно работает. С ftp-proxy не получилось в упор, зато pftpx завёлся сразу. Сделал IPFW + PF. PF прозрачен, только НАТит и делает редирект. IPFW рулит шейпом и разрешениями. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-04-27 22:14:32 Автор Share Опубликовано: 2010-04-27 22:14:32 Вылезла другая беда. Оказывается всё это время Squid "не участвовал" в процессе работы сервера, т.е. попросту на него не попадают пакеты с 80го порта, хотя rdr на 3128 стоит. Обнаружил, что кэш его не меняется - как был пустым так и остался. Поскольку прецендентов это не вызывало - не лез туда, пока не начались дикие тормоза при открытии страниц по вечерам, когда трафик в пике. Перепробовал кучу всего, включая родной fwd. Единожды добился работы squid, но все кто сидит на шейпах ipfw pipe - по http ходить не могли. Пожалуйста, кто-то может выложить рабочий pf.conf для связки pf+ipfw+прозрачный squid? Извините за беспокойство, устал уже видимо, разобраться и решить проблему нет сил. Версия squid - 3.0 STABLE. Попробовал 2.7 - то же самое. Ссылка на сообщение Поделиться на других сайтах
Queeq 0 Опубликовано: 2010-04-28 08:37:08 Share Опубликовано: 2010-04-28 08:37:08 Вылезла другая беда. Оказывается всё это время 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? Слушает на нём сквид? Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-04-28 09:30:40 Автор Share Опубликовано: 2010-04-28 09:30:40 Да. У сквида стоит в конфиге http_port 3128 transparent. Пробовал писать и http_port 127.0.0.1:3128 transparent - всё равно. Если в браузере прописать прокси и порт 3128 - squid начинает кешировать, т.е. в директории /var/cache начинают создаваться файлы. Ссылка на сообщение Поделиться на других сайтах
Queeq 0 Опубликовано: 2010-04-28 10:32:21 Share Опубликовано: 2010-04-28 10:32:21 Да. У сквида стоит в конфиге http_port 3128 transparent. Пробовал писать и http_port 127.0.0.1:3128 transparent - всё равно. Если в браузере прописать прокси и порт 3128 - squid начинает кешировать, т.е. в директории /var/cache начинают создаваться файлы. tcpdump -i lo0 что показывает? Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-04-28 10:38:59 Автор Share Опубликовано: 2010-04-28 10:38:59 tcpdump -i lo0 что показывает? о_О вообще ничего. Даже когда прописываю в браузере прокси и squid начинает работать. Ссылка на сообщение Поделиться на других сайтах
Queeq 0 Опубликовано: 2010-04-28 10:40:51 Share Опубликовано: 2010-04-28 10:40:51 Ну когда явно прописываешь - и не должно. Оно в этом случае не пойдёт через lo. Покажи rdr правила в PFе и вывод sockstat -4 | grep squid Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубликовано: 2010-04-28 11:51:27 Автор Share Опубликовано: 2010-04-28 11:51:27 Всё, решили. Спасибо Queeq. Причина: в блокировке пакетов правилами ipfw на внутренний адрес 127.0.0.1. Т.к. в старом варианте это всё было только в связке ipfw+natd+fwd и правила natd+fwd стояли до запрета 127.0.0.1 - там это работало. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас