Страница 1 из 2

Вопрос о прозрачном прокси

Добавлено: 2011-01-21 16:08:15
uvetrom
Стоит squid пускающий пользователей по айпи. (например, пускает только 192.168.1.2)
Попробовал настроить прозрачный squid, прописал в конфиге

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

http_port 192.168.1.1:3128 transparent
Конфиг ipfw:

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

add 1040 allow ip from any to any via rl0
add 1045 allow ip from any to me 22
add 1046 allow ip from me 22 to any
add 1047 allow ip from any to me 80
add 1047 allow ip from me 80 to any
nat 1 config log if vr0 reset same_ports deny_in
add 10130 nat 1 ip from any to any via vr0
add 10230 allow ip from any to any via vr0
add 10330 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in rl0
Ставим галку в експлорере использовать прокси сервер:
Прописываем на клиенте 192.168.1.2 - все работает
Прописываем на клиенте 192.168.1.4 - не пускает, доступ запрещен

Снимаем галку в експлорере использовать прокси сервер:
Прописываем на клиенте 192.168.1.2 - все работает
Прописываем на клиенте 192.168.1.4 - все работает, хотя не должно


Помогите добрый советом, пжл :)

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-21 16:22:00
dmtr
правила 1040 и 10230 пропускают всех в инет - на сквид никого не заворачивает файрвол

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-21 16:55:25
uvetrom
Так по идее на сквид заварачивает правилом 10330... или его надо в начало переставить?
Если я просто убираю правила 1040 и 10230 интернет вообще перестает работать.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-21 23:57:13
RAGNAR
это правело ставь первым

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

add 10330 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in rl0
второе на клиенте при прозрачном прокси в explorer прописывать не чего не надо все само будет работать

каму разрешено можно прописать в конфеге squid.conf
good_user_list , в этом файле в столбик кому можно , одни ip

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

acl	our_networks	src	"/usr/local/etc/squid/good_user_list"
http_access	allow	our_networks

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 10:31:03
uvetrom
Боюсь, что не все так просто...
Если переставить правило в самое начало, как Вы посоветовали, то интернет не работает, и как минимум отвалиается доступ по ссш.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 10:51:40
vadim64
за такие настройки фаервола нужно расстреливать сразу после получения паспорта. вы уверены что привели все правила и не умолчали о том, что у вас 8.1 и вы поленились или побоялись патчить ядро для коректной работы one_pass?

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 10:58:06
uvetrom
Да, судя по всему, я умолчал о том что у меня 8.1.
Правила привел все.
Что такое one_pass даже не слышал.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 11:20:36
vadim64
uvetrom писал(а):Да, судя по всему, я умолчал о том что у меня 8.1.
Правила привел все.
Что такое one_pass даже не слышал.
Тогда смотрите что делают вашу правила:

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

add 1040 allow ip from any to any via rl0 разрешить все с этого интерфейса
add 1045 allow ip from any to me 22 разрешить запросы ко мне на ссх
add 1046 allow ip from me 22 to any разрешить мои ссх ответы
add 1047 allow ip from any to me 80 разрешить запросы ко мне на хттп
add 1047 allow ip from me 80 to any разрешить мои хттп ответы
nat 1 config log if vr0 reset same_ports deny_in нат №1: натить через vr0, логировать,  сбивать хёвые пакеты, теже порты стараться оставлять, запретить гавнюков
add 10130 nat 1 ip from any to any via vr0 натить натом №1 всё через vr0
add 10230 allow ip from any to any via vr0 разрешить всё через vr0
add 10330 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in rl0 форвардить на меня на порт 3128 всё то, что на 80 порт куда то идёт и приходит с локалки 
1. при таком раскладе вам никогда ничего на проксик не попадёт, если только специально не идёт.
2. правило 10230 никогда ни за что не допустимо, если vr0 - это wan
3. чтобы не было запросов типа "разрешить запросы ко мне на [имя сервиса]" а потом ещё "разрешить мои [имя сервиса] ответы" юзайте keep-state
4. если вы хотите чтобы работала правило 10330, то нужно его разместить то правила 10130
это в общем. почитайте статью товарисча майора terminus, ссылка на неё есть в списке в FAQ, ссылка на который есть в моей подписи

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 11:22:31
uvetrom
Ок, буду читать, спасибо за дельные советы!

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 11:47:53
snorlov
в первом правиле поставьте не from any to any, а доступ локальных адресов к локальным адресам

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 12:25:53
Анонимус Негодуе
добавлю на счет one_pass
это такая переменная sysctl, которая определяет, покинет ли пакет файерволл после прохождения NAT, pipe и некоторых других правил.

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

# sysctl -ad | grep one_pass
net.inet.ip.fw.one_pass: Only do a single pass through ipfw when using dummynet(4)
подробнее - используй поиск one_pass по мануалу

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

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 12:29:08
Гость
пальцем в небо - самый ходовой метод написание фаерволов у новичков и не только)
так что заставить прочитать что то, новички и не только - воспринимают как оскорбление

вы по делу говорите! по делу! что как мне изменить что бы все работало!?!?

:ROFL: :ROFL:

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 13:19:19
uvetrom
vadim64 писал(а):
uvetrom писал(а):Да, судя по всему, я умолчал о том что у меня 8.1.
Правила привел все.
Что такое one_pass даже не слышал.
Тогда смотрите что делают вашу правила:

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

add 1040 allow ip from any to any via rl0 разрешить все с этого интерфейса
add 1045 allow ip from any to me 22 разрешить запросы ко мне на ссх
add 1046 allow ip from me 22 to any разрешить мои ссх ответы
add 1047 allow ip from any to me 80 разрешить запросы ко мне на хттп
add 1047 allow ip from me 80 to any разрешить мои хттп ответы
nat 1 config log if vr0 reset same_ports deny_in нат №1: натить через vr0, логировать,  сбивать хёвые пакеты, теже порты стараться оставлять, запретить гавнюков
add 10130 nat 1 ip from any to any via vr0 натить натом №1 всё через vr0
add 10230 allow ip from any to any via vr0 разрешить всё через vr0
add 10330 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in rl0 форвардить на меня на порт 3128 всё то, что на 80 порт куда то идёт и приходит с локалки 
1. при таком раскладе вам никогда ничего на проксик не попадёт, если только специально не идёт.
2. правило 10230 никогда ни за что не допустимо, если vr0 - это wan
3. чтобы не было запросов типа "разрешить запросы ко мне на [имя сервиса]" а потом ещё "разрешить мои [имя сервиса] ответы" юзайте keep-state
4. если вы хотите чтобы работала правило 10330, то нужно его разместить то правила 10130
это в общем. почитайте статью товарисча майора terminus, ссылка на неё есть в списке в FAQ, ссылка на который есть в моей подписи
Да, я делал все по этой статье, но там была проблема, сейчас догадался как ее решить
В общем, получилась вот такая концструкция

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

bsdgate# mcedit /etc/firewall
/etc/firewall      [----] 67 L:[  1+ 4   5/  7] *(253 / 347b)  114 0x072
add 1040 allow ip from any to any via rl0
add 1045 allow ip from any to any 22 keep-state
add 1047 allow ip from any to any 80 keep-state
add 1048 allow ip from any to any 53 keep-state
add 1050 fwd 192.169.1.1,3128 tcp from 192.168.1.0/24 to any 80 in rl0
nat 1 config log if vr0 reset same_ports deny_in
add 1060 nat 1 ip from any to any via vr0
При выполнении ошибка Line 5: unrecognised option [-1] rl0

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

bsdgate# ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82808<VLAN_MTU,WOL_UCAST,WOL_MAGIC,LINKSTATE>
        ether 00:19:5b:89:80:5b
        inet 172.17.32.110 netmask 0xffffff00 broadcast 172.17.32.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:13:d3:c9:57:27
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
bsdgate# ipfw /etc/firewall
01040 allow ip from any to any via rl0
01045 allow ip from any to any dst-port 22 keep-state
01047 allow ip from any to any dst-port 80 keep-state
01048 allow ip from any to any dst-port 53 keep-state
Line 5: unrecognised option [-1] rl0

vr0 - внешний
rl0 - локалка

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 13:49:13
FreeBSP
in via
или in recv
конструкции несколько разные но подойдут обе
это во первых

а во вторых всеравно не дойдет пакет до правила с перенаправлением.
Анонимус Негодуе писал(а):и еще советую разобраться как пакеты ходят в системе.
если сам неосилишь - давай анонимуса запряжем. рассказывай как по твоему разумению такая конфигурация должна работать. не стесняйся, максимально подробно что, как и когда происходит с пакетом, каике места он проходит, как маневрирует, к кому в гости заходит и тд и тп....

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 14:26:55
uvetrom

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

bsdgate# ipfw /etc/firewall
01040 allow ip from any to any via rl0
01045 allow ip from any to any dst-port 22 keep-state
01047 allow ip from any to any dst-port 80 keep-state
01048 allow ip from any to any dst-port 53 keep-state
Line 5: getsockopt(IP_FW_ADD): Invalid argument
bsdgate#
Это если использовать то, что вы посоветовали.

По моему разумению, конфигурация должна работать как-то очень просто :)
1. add 1040 allow ip from any to any via rl0 разрешает все в локальной сети
2. add 1045 allow ip from any to any 22 keep-state разрешает ссш туда и обратно где угодно
3. add 1047 allow ip from any to any 80 keep-state разрешает 80 порт туда обратно где угодно
4. add 1048 allow ip from any to any 53 keep-state днс то же самое
5.add 1050 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in recv rl0
Пакеты пришедшие на из сети 192.168.1.0 через сетевую rl0 перекидываются на 127.0.0.1:3128

6. nat 1 config log if vr0 reset same_ports deny_in
7. add 1060 nat 1 ip from any to any via vr0
Нат не очень хорошо понял.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 14:33:26
uvetrom
Странно на самом деле то, что в интернете куча статей, написаны вещи вполне похожи на мои, у всех все работает, а я какой-то неудачник тут сижу :)

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 15:12:44
snorlov
uvetrom писал(а):Странно на самом деле то, что в интернете куча статей, написаны вещи вполне похожи на мои, у всех все работает, а я какой-то неудачник тут сижу :)
У тебя входящий пакет из локалки попадает сразу на первое правило, поэтому до форвардинга он не доходит, а когда этот пакет появляется на внешнем интерфейсе он попадает на нат... Поставь форвардинг первым в списке...

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 15:18:22
uvetrom
Ошибка такая же, хотя смысл перестановки стал более менее понятен.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 15:39:28
FreeBSP
во первых, давай на ты

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

пакет пришел в систему
он попал файерволл
и пошел проверяться по ВСЕМ правилам сверху вниз. на первом правиле, под которое попал вылетает из файера и летит дальше.
но может и заново пойти в файер. в зависимости от one_pass и типа правил на которое попадает
и попадает в ядро
предположим он прошелся по таблице маршрутизации и хочет в другую сетевуху
он опять попадает в файерволл и опять проверяется. но он уже исходящий. через другой интерфейс
и в общем случае он попадает под другое правило
и вылетает из файерволла в сеть

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

P.S. покажи файл с правилами, загрузку правил и ipfw show

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 15:52:29
uvetrom
Да, Снорлов уже подсказал, я понял смысл, что он первым правилом перехватывался, и до форворда просто не доходил.
Исправил все на:

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

bsdgate# mcedit /etc/firewall
/etc/firewall      [----]  0 L:[  1+ 1   2/  7] *(74  / 350b)   97 0x061
add 1000 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in recv rl0
add 1040 allow ip from any to any via rl0
add 1045 allow ip from any to any 22 keep-state
add 1047 allow ip from any to any 80 keep-state
add 1048 allow ip from any to any 53 keep-state
nat 1 config log if vr0 reset same_ports deny_in
add 1060 nat 1 ip from any to any via vr0
Но при выполнении, ошибка возникает:

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

bsdgate# ipfw /etc/firewall
Line 1: getsockopt(IP_FW_ADD): Invalid argument
Ошибок в синтаксисе по идее нет, ядро собрано вроде как нормально:

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

bsdgate# uname -a
FreeBSD bsdgate.local 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Thu Nov 11 13:20:57 UTC 2010 root@bsdgate.local:/usr/src/sys/amd64/compile/MYKERN  amd64
bsdgate# ls -la /usr/src/sys/amd64/compile/MYKERN | grep ipfw
-rw-r--r--  1 root  wheel      111 Nov 11 12:42 opt_ipfw.h
bsdgate#

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 15:58:18
uvetrom
ipfw show

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

00100 52 5498 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0 to any
65535 55 6065 deny ip from any to any
Переписывал с монитора, мог где то опечататься.

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 16:13:15
vadim64
ну так и хер с ним, с интерфейсом. для правильно фаервола тебе надо запилить все рфц 1918 адреса с улицы, типа

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

add 01010 deny ip from any to 192.168.0.0/16 in recv bce2
add 01020 deny ip from 192.168.0.0/16 to any in recv bce2
add 01030 deny ip from any to 172.16.0.0/12 in recv bce2
add 01040 deny ip from 172.16.0.0/12 to any in recv bce2
add 01050 deny ip from any to 10.0.0.0/8 in recv bce2
add 01060 deny ip from 10.0.0.0/8 to any in recv bce2
add 01070 deny ip from any to 169.254.0.0/16 in recv bce2
add 01080 deny ip from 169.254.0.0/16 to any in recv bce2
вот и запили их, а с правила форварда убери нах интерфейс. всё заведётся, если ядро собрано с форвардом

upd: про ядро могу пиздить

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 16:50:37
uvetrom
Я думаю пилять никогда не поздно, тем более что сейчас это не совсем актуально...
Попробовал убрать интерфейс.

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

bsdgate# mcedit /etc/firewall
/etc/firewall      [B---]  0 L:[  1+ 0   1/  7] *(0   / 341b)   97 0x061
add 1000 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to not me 80
add 1040 allow ip from any to any via rl0
add 1045 allow ip from any to any 22 keep-state
add 1047 allow ip from any to any 80 keep-state
add 1048 allow ip from any to any 53 keep-state
nat 1 config log if vr0 reset same_ports deny_in
add 1060 nat 1 ip from any to any via vr0

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

bsdgate# ipfw /etc/firewall
Line 1: getsockopt(IP_FW_ADD): Invalid argument

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

bsdgate# grep ipfw2 /var/run/dmesg.boot
ipfw2 initialized, divert loadable, nat enabled, rule-based forwarding disabled, default to deny, logging disabled
Это значит форвардинг не включен? придется пересобирать с параметрами IPFIREWALL_FORWARD?

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 17:20:09
Анонимус Негодуе
ага
плюс еще чего нить впиши по приколу. авось пригодится =)
дивертов там всяких, логинга и тд

Re: Вопрос о прозрачном прокси

Добавлено: 2011-01-24 17:22:15
Анонимус Негодуе
и дефолт ту аццепт
кстати,
uvetrom писал(а):ipfw show
КОД: ВЫДЕЛИТЬ ВСЁ • РАЗВЕРНУТЬ
00100 52 5498 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0 to any
65535 55 6065 deny ip from any to any

Переписывал с монитора, мог где то опечататься.
заметь, правила ни одного твоего не загружено. так и задумано?