Вопрос по FreeBSD7 + ipfw + Squid3

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
qwl
рядовой
Сообщения: 49
Зарегистрирован: 2008-12-30 14:55:24

Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение qwl » 2009-02-10 14:21:12

Доброго времени суток.

Помогите, совсем запутался.

Запутался в следующем:
Установил FreeBSD7 + ipfw + Squid3(в прозрачном режиме).
1. в какой последовательности должны идти правила в ipfw, т.е. с начала разрешающие потом запрещающие или как?
2. такой же вопрос и по Squid-у.

у меня эта связка работает в прозрачном режиме, только я на Squid не могу перенаправить весь трафик, не пойму как и в каком месте ставить правила. К примеру не получается работа в SSL (443), правило в ipfw ставлю вроде показывает что пакеты по нему бегут, но когда браузером захожу на сайт с авторизацией (SSL) появляется надпись что версии SSL не совпадают.

И еще, пожалуйста, подскажите ссылку на то как с такой связкой разделить трафик на городской и вне городской.

Спасибо.

Хостинговая компания 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/

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

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение paradox » 2009-02-10 18:23:42

1 без разници - логика должна быть
2 fwd
3 логику и подход к учету трафика меняйте

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение princeps » 2009-02-10 18:46:58

В ipfw нет приоритета правил по сути, это иногда бывает сложно понять тем, кто в первый раз сталкивается. Фаервол применяет к попавшему в него пакету правила по очереди до тех пор, пока не найдет подходящее. После этого другие правила не применяются. Так что смотри сам, как расставить запрещающие и разрешающие правила.
В сквиде не помню, кажется там верхнее правило имеет больший приоритет. Или нижнее :)
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение princeps » 2009-02-10 19:06:21

qwl писал(а):И еще, пожалуйста, подскажите ссылку на то как с такой связкой разделить трафик на городской и вне городской.
В каком смысле разделить?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

qwl
рядовой
Сообщения: 49
Зарегистрирован: 2008-12-30 14:55:24

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение qwl » 2009-02-11 6:44:58

С ipfw я панял. Я с Squid несовсем, в принципе Squid любой (весь) трафик через себя пропускает? Или только, все ж определенный?
На Squid правило такое: {${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn} to any http via ${LanOut}}, http = 80, получается на Squid уходит весь 80 поток, так? А поток по другим портам, в зависимости от правил ipfw будут ходить в обход Squid или вовсе не будут ходить? Или как то правилами, можно завернуть все на 80 порт?
Разъясните, пожалуйста, данный вопрос.

По вопросу о трафике:
Логии ведет Squid, и можно ли разделить эти логии на внутренне городской и на вне городской трафик, и какими средствами?

mrBuG
рядовой
Сообщения: 23
Зарегистрирован: 2009-01-27 7:05:47
Откуда: Томск
Контактная информация:

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение mrBuG » 2009-02-11 8:08:56

qwl писал(а): На Squid правило такое: {${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn} to any http via ${LanOut}}, http = 80, получается на Squid уходит весь 80 поток, так? А поток по другим портам, в зависимости от правил ipfw будут ходить в обход Squid или вовсе не будут ходить? Или как то правилами, можно завернуть все на 80 порт?
Разъясните, пожалуйста, данный вопрос.
Ты ведь сам указал, что будет заворачиваться на squid только http траффик, а если быть точным, то все пакеты у которых порт назначения 80. Траффик на тот же https = 443 будет идти мимо Squid. Главное - понять логику. Правило редиректа должно стоять до правил nat, если таковые есть, иначе заголовок отправителя будет переписан и ты не узнаешь адрес источника
qwl писал(а): По вопросу о трафике:
Логии ведет Squid, и можно ли разделить эти логии на внутренне городской и на вне городской трафик, и какими средствами?
Если у тебя есть список городских подсетей, то можно сделать двояко
1. Поднять второй сквид на порт например 3129 и средствами ipfw весь городской трафик гнать на 2-ой сквид... Типа.. Эмм...

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

${fwcmd} add ${num}501 fwd 127.0.0.1,3129 tcp from ${localnet} to "table(2)" http out xmit ${iface}
${fwcmd} add ${num}501 fwd 127.0.0.1,3128 tcp from ${localnet} to any http out xmit ${iface}
Где "table(2)" список городских сетей
Подгрузить список можно в том же конфиге файервола

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

#Загружаем таблицу городских сетей
while read LINE; do
    ipfw table 2 add $LINE
done < /usr/local/etc/ipfw/tables/ipfw.table2
Фаил /usr/local/etc/ipfw/tables/ipfw.table2 имеет формат

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

10.156.80.0/24
192.168.1.0/24
62.68.128.0/19
77.106.64.0/18
..................
Итого - мы имеем 2 сквида, 2 access.log и соответсвенно 2 статистики, но это дополнительная нагрузка на сервер
2. Еще вариант - использовать утилитку, которая разбирает логфаил сквида и делит траффик :)

vasy rogov
рядовой
Сообщения: 18
Зарегистрирован: 2009-01-28 11:09:50

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение vasy rogov » 2009-03-04 9:23:53

Подскажите плз по squid, я уже устал с ним бороться =(

Хочу настроить его так что бы он пускал пользователей (rl0) по ипам, а пользователей (sis0 и tun0) по авторизации через ncsa.sams

В наличие имею:
4 интерфейса, 2 локальных (2 разных сети rl0 и sis0), 1 ппп (tun0), 1 сморит на провайдера(rl1).

Сделал следующие:
1) Руководствуясь статьей собрал squid+ipfw+sams
2) ipfw по правилам все что идет на 80 порт пробрасывается на squid, остальное натится.
3) Дальше начинается омут... если в настройках squid не стоит 3128 транспарент то при выходе в инет сразу появляется ошибка invalid url. Если стоит то пишет access denied. Я оставил транспарент. Далее создаю шаблон net_ip, в нем делаю авторизациию по ip для сети rl0, и создаю юзеров с ипами 192.168.0/24, и если на клиентской машине стоит ип из этого диапазона то все гуд, если нет то акссесс дениед и все тут, т.е. не выдается запрос логина и пароля, юзера соответственные созданы. Ладно думаю, фиг с этим 3128 транспарент и вешаю сквид еще на порт 3129 для сети sis0, так впринципе работает, но в настройках броузера необходимо указать проксю скажем 190.34.0.111:3129, тогда выдается запрос логина и пароля, а если сеть sis0 прокидывать на сквид средствами ipfw, да бы не прописывать проксю в броузере то сразу получаем инвалид урл, т.е. тоже что и на порту 3128 без транспарент, и если не прокидывать на сквид через ипввф и не указывать его вручную то получаем доступ в интернет, т.к. шлюзом у всех сетей стоит этот рутер. Ладно думаю, пускай будет так, т.е. для сети rl0 авторизация по ипам работает как и задумывалось, а для сети tun0 и sis0 буду ручками прописывать проксю в браузере, но тут я столкнулся с еще одной проблемой: когда прописываешь ручками проксю в сети sis0 то запрос логина и пароля выдается, но принимается тока юзер которого я создал самым первым, еще до возни с авторизацией по ипам, а все юзера созданые после него уже не проходят авторизацию, хотя в ncsa.sams добавляются.

Старалася описать ситуация как можно яснее, для большей ясности прикладываю конфиги:

[ifconfig]

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

rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:e0:7d:ba:49:ac
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:50:fc:6b:84:a7
        inet 10.10.10.2 netmask 0xffffff00 broadcast 10.10.10.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
sis0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:0d:87:4e:a4:dc
        inet 190.34.0.111 netmask 0xffff0000 broadcast 190.34.255.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> metric 0 mtu 1500
[ipfw]

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

         00100 check-state
         00200 allow ip from any to any via lo0
         01200 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80 via rl1
         #01300 fwd 127.0.0.1,3128 tcp from 111.111.111.0/24 to any dst-port 80 via rl1
         01400 fwd 127.0.0.1,3128 tcp from 190.34.0.0/16 to any dst-port 80 via rl1
         01500 divert 8668 ip from 192.168.0.0/24 to any out via rl1
         01600 divert 8668 ip from 190.34.0.0/16 to any out via rl1
         01700 divert 8668 ip from 111.111.111.0/24 to any out via rl1
         01800 divert 8668 ip from any to 10.10.10.2 in via rl1
         01900 allow tcp from any to any established
         02500 allow udp from any 53 to any via rl1
         03200 allow ip from any to any via rl0
         03300 allow ip from any to any via tun0
         03400 allow ip from any to any via sis0
         03500 deny log logamount 100 ip from any to any
[squid]

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

         auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/ncsa.sams
         auth_param basic children 5
         auth_param basic realm Squid proxy-caching web server
         auth_param basic credentialsttl 2 hours
         http_port 3128 transparent
         http_port 3129
         forwarded_for off
#  TAG: acl
         acl _sams_49a518ce6a6da src "/usr/local/etc/squid/49a518ce6a6da.sams"
         acl _sams_49a518ce6a6da_time time MTWHFAS 00:00-23:59
         acl _sams_default proxy_auth "/usr/local/etc/squid/default.sams"
         acl _sams_default_time time MTWHFAS 00:00-23:00
         acl _sams_local_ip dst "/usr/local/etc/squid/local_ip.sams"
Фря 7.1, сквид 3.0.

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

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение hayarm » 2010-12-17 16:16:42

а так нельзя??
table 2 городской сеть

${fwcmd} add ${num}501 fwd 127.0.0.1,3128 tcp from ${localnet} to not "table(2)" http out xmit ${iface}

RAGNAR
ст. прапорщик
Сообщения: 530
Зарегистрирован: 2009-07-10 22:12:06
Откуда: Ржев
Контактная информация:

Re: Вопрос по FreeBSD7 + ipfw + Squid3

Непрочитанное сообщение RAGNAR » 2010-12-17 16:42:42

1.
К примеру не получается работа в SSL (443), правило в ipfw ставлю вроде показывает что пакеты по нему бегут, но когда браузером захожу на сайт с авторизацией (SSL) появляется надпись что версии SSL не совпадают.
ssl 443 в прозрачной прокси на работает...

2.
в какой последовательности должны идти правила по Squid-у.
если пользуешь ipfw то в самом начале ставь правело перенапровления трафика

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

ipfw add fwd 127.0.0.1,3128 tcp from 10.10.0.0/24 to any 80 via ng0
# 127.0.0.1,3128 это ip  и port  каторый слушает squid , сматри что прописал у себя squid.conf
# 10.10.0.0/24   эт твая сеть 
#  ng0  эт через что ты ходишь в интернет
если ipnat то тоже в начеле , до nat правил

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

rdr fxp0 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128 tcp
# 0.0.0.0/0 эт вместо сети как в предыдущем примере, с ipnat такое не прокатит если выставишь тут 10.10.0.0/24
# fxp0  эт сетевуха каторая подключена к локалке
3.
1. в какой последовательности должны идти правила в ipfw, т.е. с начала разрешающие потом запрещающие или как?
принцеп ipfw
1. перенпровляешь
2. запрещаешь что точно не нужно
3. разрешаешь что нужно.
4. запрещаешь все остольное что не разрешено...
... Да освятится имя твое и pасшиpение твое, Господи...