PF, NAT, SQUID, ALTQ, ua_ix

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
z1
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-11-02 15:54:44

PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение z1 » 2008-12-15 13:43:56

Вот такая вот тема...
До боли известная задача. Есть комп. клуб.. АДСЛ инет всего 6Мбит на вход, в нем мира 1Мбит, исход 1Мбит всего...
Есть FreeBSD 7.0 pf + nat + squid (сквид реально нужен!!! для вырезания баннеров+теоретической борьбы с порно(режик) + статистика lightsquid + экономия ВРЕМЕНИ загрузки и узкой полосы)

Задача.
Сделать динамическое разделение траффика для клиентов.
Тоесть для каждого ИП, дать гарантированно 128Кбит мира и 512 Кбит ЮА и негарантированно столько, сколько есть свободно в данный момент... а дальше пойдут еще и приоритеты.

Начал реализацию. И тут первые грабли. Входящий траффик прошедший через прозрачный сквид, отдается сразу клиенту, и не попадает под шейпинг...
Тоесть первая задача: поймать и пошейпить входящий http траф, до того как он попадет на squid, или перед тем как squid отдаст его клиенту...

Просьба подсказать кто знает, как реализовать ?


итак

Код: Выделить всё

ifconfig -a
sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:13:d4:ad:a7:de
        inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
        status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:02:b3:8b:12:ab
        inet 77.88.... netmask 0xfffffffc broadcast 77.88.196.19
        media: Ethernet autoselect (100baseTX <full-duplex>)

vim /etc/pf.conf

ext_if        =  "fxp0"
external_addr =  "77.88...."
int_if        =  "sk0"
internal_addr  =  "192.168.0.0/24"

scrub in on $ext_if all fragment reassemble min-ttl 20 max-mss 1500
scrub in on $ext_if all no-df
scrub on $ext_if all reassemble tcp

altq on $ext_if cbq bandwidth 6Mb queue { def, ftp, udp, http_ua,  ssh, icmp }

         queue def bandwidth 18% cbq(default borrow red)
         queue ftp bandwidth 10% cbq(borrow red)
         queue udp bandwidth 30% cbq(borrow red)
         queue http_ua bandwidth 20% cbq(red)
         queue ssh bandwidth 20% cbq(borrow red) { ssh_login, ssh_bulk }
                queue ssh_login bandwidth 25% priority 4 cbq(ecn)
                queue ssh_bulk bandwidth 75% cbq(ecn)
         queue icmp bandwidth 2% cbq


rdr on $int_if inet proto tcp from $internal_addr to !192.168.0.0/24 port { 80, 3128, 8000, 8080 } -> 192.168.0.100 port 3128

nat on fxp0 from 192.168.0.0/24 to any -> 77.88......
pass in on $ext_if proto tcp from <ua_ix> port 80 to any queue http_ua label "ua_http_in"

<ua_ix> таблица ЮА префиксов
pfctl -t ua_ix -T show |more
  62.16.0.0/19
   62.64.64.0/21
   62.64.64.0/18
   62.64.88.0/21
   62.64.96.0/21
   62.64.112.0/21
.....

менял посл. правило на pass in on $ext_if proto tcp from any port 80 to any queue http_ua label "ua_http_in"
не помогает...

pfctl -sl
ua_http_in 3146 0 0 0 0 0 0

ЗЫ
Заранее просьба не пинать за какие-то неправильные строки не относящиеся к конкретному вопросу, а также НЕ предлагать ipfw pipe, delay tools, /etc..

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение Alex Keda » 2008-12-15 14:00:23

ipfw умеет по юзеру работать.
мона по имени пользователя исходящий поймать
Убей их всех! Бог потом рассортирует...

z1riser
проходил мимо

Re: PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение z1riser » 2008-12-15 15:02:12

Хочу полностью перейти на pf. (есть причины), ipfw не рассматривается, поэтому просьба помочь именно в данной связке pf+nat+squidf+altq+ua_ix\not ua_ix

НЕ предлагать ipfw pipe, delay tools, /etc..
уточнение:
НЕ предлагать ipfw вообще, как и другие файрволы\НАТы\прокси серверы и т.д.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение zingel » 2008-12-15 15:27:58

у тебя конфиг надёрган из разных статей, мой тебе совет покури ман, а потом, когда уже ты вкуришь, что pass && skip нужно раньше natа писать вот тогда мы тебе скажем куда рыть (иначе это будет как об стенку горох). Поищи тут на форуме был линк на учебник по pf(4)
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение paradox » 2008-12-15 15:35:57

И тут первые грабли. Входящий траффик прошедший через прозрачный сквид, отдается сразу клиенту, и не попадает под шейпинг...
думаю это и в мануале по шейперу написано

хотя я могу ошибаться

z1riser
проходил мимо

Re: PF, NAT, SQUID, ALTQ, ua_ix

Непрочитанное сообщение z1riser » 2008-12-15 16:38:49

у тебя конфиг надёрган из разных статей, мой тебе совет покури ман, а потом, когда уже ты вкуришь, что pass && skip нужно раньше natа писать вот тогда мы тебе скажем куда рыть (иначе это будет как об стенку горох). Поищи тут на форуме был линк на учебник по pf(4)
Вот за что я люблю таких людей... Поэтому специально и написал... не смотреть в конфиге строки которые не относятся к делу...
То что они надерганы смысла никак не меняет...

Так вот, уважаемый, покурите ка маны Вы, и тогда может до Вас дойдет, что в ПФе есть определенная последовательность правил, и нарушать ее нельзя.. Поэтому раньше НАТа pass && skip ну никак не канает...
и еще...Если даже пакет прошел НАТ, то src port как был 80, так и остался, это даже если бы НАТ участвовал в прозрачном проксировании на вход...

Так, что еще раз прошу, писать по существу вопроса, а не типа "я гений, ты мудак - кури маны...". Будьте уверенны маны покурил, если обращаюсь на форум уже с конкретным вопросом. Если гений - и нет времени написать как сделать - не пиши ничего...