transparent squid на localhost'е

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

atommix
Сообщения: 5
ОС: Arch

transparent squid на localhost'е

Сообщение atommix »

Дистрибьютив: arch

Здравствуйте.
На местной jabber конференции заявили, что использовать transparent squid на localhost'е невозможно, потому что сквид будет ползать сам через себя. Те зациклится. Так ли это? Действительно ли transparent squid на localhost'е не возможен? Или всё сводится к хитрому правилу iptables?

Не пойму что нужно сделать, чтоб заработало. Наверное вопрос сводится к правилам iptables.
пробовал это
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
не работает

http_port 3128 transparent

с указанием прокса localhost:3128 всё работает, веб через прокс серфится.
прозрачно нет.
Спасибо сказали:
Аватара пользователя
Maximus_V
Сообщения: 432
ОС: Gentoo, FreeBSD

Re: transparent squid на localhost'е

Сообщение Maximus_V »

atommix писал(а):
30.12.2008 14:44
пробовал это
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
не работает

Попробуйте добавить исключение вашего адреса на eth0:

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

iptables -t nat -A PREROUTING -s 192.168.0.0/16 -d ! 192.168.0.8/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Это у меня так - подсеть 192.168.х.х, а адрес на сетевой 192.168.0.8 - пропишите ваши. Сейчас только что проверил - работает и на локалхосте
Спасибо сказали:
atommix
Сообщения: 5
ОС: Arch

Re: transparent squid на localhost'е

Сообщение atommix »

пробовал так

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

sudo iptables -t nat -A PREROUTING -i eth0 -d ! 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

и так

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

sudo iptables -t nat -A PREROUTING -s 10.0.0.0/8 -d ! 10.11.3.4/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

чет не катит, локалхост прозрачно не проксирует
на локалхосте это

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

[atommix@atommix-desktop ~]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1E:8C:0E:C8:87
          inet addr:10.11.3.4  Bcast:10.11.255.255  Mask:255.255.0.0
          inet6 addr: fec0::4:21e:8cff:fe0e:c887/64 Scope:Site
          inet6 addr: 2002:a0b:1c27:4:21e:8cff:fe0e:c887/64 Scope:Global
          inet6 addr: fe80::21e:8cff:fe0e:c887/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:101210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40191 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12775549 (12.1 Mb)  TX bytes:169970674 (162.0 Mb)
          Interrupt:253 Base address:0x6000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6875 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6875 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5592109 (5.3 Mb)  TX bytes:5592109 (5.3 Mb)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:80.255.xx.xx  P-t-P:85.158.xx.xx  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:6656 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7465 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:5147034 (4.9 Mb)  TX bytes:1054445 (1.0 Mb)
Спасибо сказали:
Аватара пользователя
Maximus_V
Сообщения: 432
ОС: Gentoo, FreeBSD

Re: transparent squid на localhost'е

Сообщение Maximus_V »

atommix писал(а):
30.12.2008 20:07
пробовал так
...
и так
....
чет не катит

Надеюсь, после каждой пробы не забывали сбрасывать старые цепочки? Глянул у себя в правилах - после переброса на сквид идет еще маскарадинг на ppp0. Вам или делать что-то похожее

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

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
или в настройках проксирования указывать айпишники, относящиеся к интерфейсу ppp0
Спасибо сказали:
atommix
Сообщения: 5
ОС: Arch

Re: transparent squid на localhost'е

Сообщение atommix »

да удалял так

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

 sudo iptables -L -t nat


эх... кажется мне что ни я, ни вы толком не знаем что делать... буду пробовать..
ip у меня визде статические, на ифейсе ppp0, ip только выдается, но он статический.
Спасибо сказали:
Аватара пользователя
Maximus_V
Сообщения: 432
ОС: Gentoo, FreeBSD

Re: transparent squid на localhost'е

Сообщение Maximus_V »

atommix писал(а):
30.12.2008 20:43
да удалял так

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

 sudo iptables -L -t nat
iptables -t nat -F

atommix писал(а):
30.12.2008 20:43
ip у меня визде статические, на ифейсе ppp0, ip только выдается, но он статический.
Тогда и прописать этот айпишник
Спасибо сказали:
atommix
Сообщения: 5
ОС: Arch

Re: transparent squid на localhost'е

Сообщение atommix »

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

iptables -t nat -F

дада именно так, я просто машинально не то скопировал.
Тогда и прописать этот айпишник

Тогда при чем тут transparent squid на localhost'е ?
Мне то нужно с локал хоста прозрачно в инет ходить... инет я вообще не раздаю
в логах у меня как видите сплошником 127.0.0.1. Никаких других ip нету.

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

1230655578.567     15 127.0.0.1 TCP_HIT/200 1485 GET http://linuxforum.ru/style_images/winter/folder_team_icons/pip/04.gif - NONE/- image/gif
1230655578.567     13 127.0.0.1 TCP_HIT/200 521 GET http://linuxforum.ru/style_images/winter/post_snapback.gif - NONE/- image/gif
1230655578.580     15 127.0.0.1 TCP_HIT/200 867 GET http://linuxforum.ru/style_images/winter/css_img_quote.gif - NONE/- image/gif
1230655578.594     28 127.0.0.1 TCP_HIT/200 869 GET http://linuxforum.ru/style_images/winter/css_img_code.gif - NONE/- image/gif
Спасибо сказали:
DenisGavrilov
Сообщения: 32
ОС: gentoo

Re: transparent squid на localhost'е

Сообщение DenisGavrilov »

iptables -t nat -A OUTPUT -p tcp --dport http -m owner ! --uid-owner squid -j REDIRECT --to-port 3128
Спасибо сказали:
atommix
Сообщения: 5
ОС: Arch

Re: transparent squid на localhost'е

Сообщение atommix »

уже что-то интересненькое

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

1231081443.538      0 80.255.ььь.ььь TCP_DENIED/403 1347 GET http://top-kniga.ru/favicon.ico - NONE/- text/html
1231081443.695      0 80.255.ььь.ььь TCP_DENIED/403 1339 GET http://nikon.ru/favicon.ico - NONE/- text/html
1231081443.783      0 80.255.ььь.ььь TCP_DENIED/403 1339 GET http://nikon.ru/favicon.ico - NONE/- text/html
1231081474.681      0 80.255.ььь.ььь TCP_DENIED/403 1324 GET http://vkontakte.ru/ - NONE/- text/html
1231081475.042      0 80.255.ььь.ььь TCP_DENIED/403 1347 GET http://vkontakte.ru/favicon.ico - NONE/- text/html
1231081477.895      0 80.255.ььь.ььь TCP_DENIED/403 1347 GET http://vkontakte.ru/favicon.ico - NONE/- text/html
1231081478.302      0 80.255.ььь.ььь TCP_DENIED/403 1324 GET http://vkontakte.ru/ - NONE/- text/html
Спасибо сказали:
ford1813
Сообщения: 383
ОС: Slackware

Re: transparent squid на localhost'е

Сообщение ford1813 »

atommix писал(а):
06.01.2009 20:58
up


Что ап ?
Конфиг сквиды военная тайна?

Откуда нам известно что ip клиента который в логе , имеет право интернетом пользоваться?
Контакты для связи:

E-mail: ford1813@gmail.com

Telegram: @ford1813
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: transparent squid на localhost'е

Сообщение pelmen »

У меня сквид настроен, iptables тоже. Все работает. Только вот интересно стало, когда я делаю правило
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
по-идее пакеты должны идти дальше в интернет на порт 3128, а не к локальному процессу (согласно правилам обхода цепочек) или сквид благодаря transparent сам ловит эти пакеты?
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: transparent squid на localhost'е

Сообщение skor »

REDIRECT - заворачивает на локальный адрес. Так что в интернет на порт 3128 оно никак не может идти.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: transparent squid на localhost'е

Сообщение pelmen »

Я понимаю, что он заворачивает на локальный адрес, просто в голове такая система:
пришел такой пакет на шлюз (src_ip, src_mac, src_port, dst_ip, dst_mac, dst_port...) где dst_mac - мак адрсе шлюза. dst_ip - адрес linuxforum.ru, dst_port = 80. После преобразования месяется только dst_port на 3128. И т.к. dst_ip != ip шлюза, то пакет дальше идет в сеть, а не_к_локальному_процессу.
3.1. Общие положения
Когда пакет приходит на наш брандмауэр, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже:

Таблица 3-1. Порядок движения транзитных пакетовШаг Таблица Цепочка Примечание
1 Кабель (т.е. Интернет)
2 Сетевой интерфейс (например, eth0)
3 mangle PREROUTING Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр..
4 nat PREROUTING Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях
5 Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет -- локальному приложению или на другой узел сети.
6 mangle FORWARD Далее пакет попадает в цепочку FORWARD таблицы mangle, которая должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации.
7 Filter FORWARD В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации.
8 mangle POSTROUTING Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.
9 nat POSTROUTING Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскарадинг (Masquerading).
10 Выходной сетевой интерфейс (например, eth1).
11 Кабель (пусть будет LAN).
Я правильно понимаю, что шаг №5 - как раз тема обсуждения?
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: transparent squid на localhost'е

Сообщение skor »

dst_ip тоже меняется
Спасибо сказали:
Swawe
Сообщения: 2

Re: transparent squid на localhost'е

Сообщение Swawe »

А почему перенаправляется только 80 в НАТе?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: transparent squid на localhost'е

Сообщение serzh-z »

atommix писал(а):
30.12.2008 14:44
На местной jabber конференции заявили, что использовать transparent squid на localhost'е невозможно, потому что сквид будет ползать сам через себя. Те зациклится. Так ли это? Действительно ли transparent squid на localhost'е не возможен? Или всё сводится к хитрому правилу iptables?
У меня всё прекрасно работает и ничего не зацикливается - использую модуль iptables ipt_owner, который предоставляет правило --uid-owner.

Например: iptables -A OUTPUT --uid-owner ! squid -j REDIRECT --port 3128...
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: transparent squid на localhost'е

Сообщение pelmen »

skor писал(а):
26.01.2009 03:40
dst_ip тоже меняется

хм, объясни тогда, как сквид понимает, куда отправлять пакет, после того, как он его поймал? (я имею ввиду этот самый первоначальный dst_ip, который принадлежал linuxforum.ru)
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: transparent squid на localhost'е

Сообщение skor »

pelmen писал(а):
26.01.2009 10:18
хм, объясни тогда, как сквид понимает, куда отправлять пакет, после того, как он его поймал? (я имею ввиду этот самый первоначальный dst_ip, который принадлежал linuxforum.ru)
О том что запрос надо направить в сторону linuxforum.ru прокси-сервер понимает из заголовков HTTP-запроса клиента.
Спасибо сказали: