URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 5059
[ Назад ]

Исходное сообщение
"Прозрачный прокси FreeBSD+Squid"

Отправлено sweer , 13-Авг-07 00:47 
Доброго времени суток, господа.
Имеется:
FreeBSD 6.2-RELEASE
Squid 2.6
rl0 - локальная сеть
tun0 - подключение по pptp

Следует сделать прозрачную проксю, чтобы:
клиенты, подключенные к rl0 могли не прописывая проксю(это работает) в браузере выходить в интет, прописав только в качестве шлюза IP машины на FreeBSD.

Манов на эту тему много и большинство сводится к:

1) Добавление в rc.local
#gateway_enable="YES"
+
2)Перенаправление всех запросов 80 порта на squid:
ipfw add 1110 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 # Сетка 192.168.0.1-255
+нет проблем
3)Добавление в squid.conf
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Однако в ветке 2.6 http://www.opennet.me/opennews/art.shtml?num=7824 пишут:
Директивы httpd_accel_* объявлены устаревшими, на смену им пришли ключи "accelerated" и "transparent" для директив задающих номер прослушиваемого сетевого порта (http_port);

Подскажите,пожалуйста, что надо сделать.
И второстепенный вопрос:
Соответственно будет идти только траффик по 80 порту. А можно ли сделать, чтобы пользователь мог пинговать и прочее. По моему смутному представлению этим может заниматься только natd.


Содержание

Сообщения в этом обсуждении
"Прозрачный прокси FreeBSD+Squid"
Отправлено anonymous , 13-Авг-07 04:01 
>Однако в ветке 2.6 http://www.opennet.me/opennews/art.shtml?num=7824 пишут:
>Директивы httpd_accel_* объявлены устаревшими, на смену им пришли ключи "accelerated" и ""
>для директив задающих номер прослушиваемого сетевого порта (http_port);

Я не спец по сквиду, но возможно:
http_port 3128 transparent

>Соответственно будет идти только траффик по 80 порту. А можно ли сделать,
>чтобы пользователь мог пинговать и прочее. По моему смутному представлению этим
>может заниматься только natd.

Squid сможет обработать только http и ftp запросы.  Можно разрешить метод CONNECT, тогда станет возможным https и вообще любые TCP-соединения.  Пинг идёт не через TCP, а через ICMP.


"Прозрачный прокси FreeBSD+Squid"
Отправлено sweer , 13-Авг-07 18:07 
>Я не спец по сквиду, но возможно:
>http_port 3128 transparent

Большое спасибо, заработало!

Итак, прозрачная прокся:

1) Добавление в rc.local
#gateway_enable="YES"
2) Перенаправление всех запросов 80 порта на squid:
ipfw add 1110 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 # Сетка 192.168.0.1-255
3) добавление в squid.conf
http_port 3128 transparent


>Squid сможет обработать только http и ftp запросы.  Можно разрешить метод
>CONNECT, тогда станет возможным https и вообще любые TCP-соединения.  Пинг
>идёт не через TCP, а через ICMP.

Ок, теперь по поводу https.

1) squid.conf:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT


2) файр

00200 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80
00300 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 443


----
Причем, видимо https гасит squid, ибо с локальной машины:

su-2.05b# telnet 192.168.0.209 443
Trying 192.168.0.209...
Connected to 192.168.0.209.
Escape character is '^]'.

...

Generated Mon, 13 Aug 2007 14:20:37 GMT by InternetServer (squid/2.6.STABLE3)


"Прозрачный прокси FreeBSD+Squid"
Отправлено local , 13-Авг-07 18:50 
acl src lnet 192.168.0.0/24
http_access allow lnet all

"Прозрачный прокси FreeBSD+Squid"
Отправлено anonymous , 13-Авг-07 19:04 
На 443-й порт соединение устанавливается сразу завёрнутое в SSL и полностью зашифрованное, там нет никаких текстовых заголовков -- соответственно, Squid не может распознать, к какому хосту обращается браузер.

В случае соединения через настроенный прокси браузер делает приблизительно такой запрос и прокси может определить к какому хосту соединяться:

CONNECT mail.google.com:443 HTTP/1.1
User-Agent: Mozilla/5.0
Proxy-Connection: keep-alive
Host: mail.google.com

<дальше идёт SSL>

проверьте при помощи tcpdump


"Прозрачный прокси FreeBSD+Squid"
Отправлено kanisev , 23-Июн-09 15:33 
>[оверквотинг удален]
>прокси может определить к какому хосту соединяться:
>
>CONNECT mail.google.com:443 HTTP/1.1
>User-Agent: Mozilla/5.0
>Proxy-Connection: keep-alive
>Host: mail.google.com
>
><дальше идёт SSL>
>
>проверьте при помощи tcpdump

Так как всё таки решить проблему https, squid and transparent ?