Автор Тема: Прозрачный прокси на squid не пускает по http [РЕШЕНО]  (Прочитано 268527 раз)

greyzy

  • Гость
Поднимаю прокси по инструкциям salomatin'a и скриптам Drool'a, пока прозрачный хотя бы
Alt Office Server 4.0, в инет смотрит rostlk, внутрь local, сеть 192.168.0.ххх. Установлен squid, iptables, redirector
Что делал:
в /etc/net/sysctl.conf в строчке  net.ipv4.ip_forward = 0 изменил на 1
сделал
echo 1 > /proc/sys/net/ipv4/ip_forwardПрописываю правила iptables для нат и перенаправления трафика
# iptables -t nat -A POSTROUTING -o rostlk -s 192.168.0.0/24 -j MASQUERADE
# iptables -A FORWARD -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j ACCEPT
# iptables -A FORWARD -d 192.168.0.0/24 -s ! 192.168.0.0/24 -j ACCEPT
# iptables -I PREROUTING -t nat -s 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.10:3128
# iptables-save>/etc/sysconfig/iptables
  # service iptables restart
В /etc/squid/squid.conf подправил
# Squid normally listens to port 3128
http_port 3128 transparent

# Example rule allowing access from your local networks. Adapt
# to list your (internal) IP networks from where browsing should
# be allowed
acl mynet src 192.168.0.0/24
http_access allow mynet

# And finally deny all other access to this proxy (закомментировал по Drool'у)
# http_access allow localhost
# http_access deny all
# service squid restart

При такой настройке у меня работает pidgin, загружаются ftp-шные страницы, страницы по https, а вот то, чего по http нет, например вводим www.mail.ru, выдается такая табличка (firefox, opera, ie)
The requested URL could not be retrieved

While trying to retrieve the URL: http://www.mail.ru/

The following error was encountered:
Unable to determine IP address from host name for www.mail.ru

The dnsserver returned:
Refused: The name server refuses to perform the specified operation.

This means that:
 The cache was not able to resolve the hostname presented in the URL.
 Check if the address is correct.

Your cache administrator is webmaster.
Generated Sun, 29 Nov 2009 06:13:27 GMT by media.transgeology.ru (squid/2.6.STABLE17)
В логах в файле /var/log/squid/access.log есть такие строки
1259477742.770     98 192.168.0.20 TCP_MISS/503 1591 GET http://www.mail.ru/ - DIRECT/www.mail.ru text/html
1259477742.886     93 192.168.0.20 TCP_MISS/503 1613 GET http://www.mail.ru/favicon.ico - DIRECT/www.mail.ru text/html
(media.transgeology.ru машина со сквидом, 192.168.0.20 это адрес машины, откуда ввожу www.mail.ru)
Чего я где недоразрешил? Есть мысль, что как-то http не правильно заворачивается, а вот больше мыслей нету
В файрфоксе игрался с настройками прокси, но чот толку не было
http://www.mail.ru/ - DIRECT/www.mail.ru может пересылка куда-то не туда идет?
« Последнее редактирование: 06.12.2009 10:52:02 от greyzy »

Drool

  • Гость
Мало что понятно из такого изложения. Обрисуйте получше свою сеть:
ip a
iptables -L -t nat
для начала

greyzy

  • Гость
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: rostlk: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:e0:0c:de:e1 brd ff:ff:ff:ff:ff:ff
    inet 11.222.333.86/30 brd 11.222.333.87 scope global rostlk
3: gosty: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:e0:0c:ab:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.128.9/24 brd 192.168.128.255 scope global gosty
4: local: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:1a:92:cc:2b:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global local
gosty пока в процессе не участвует
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  192.168.0.0/24       anywhere            tcp dpt:http to:192.168.0.10:3128
DNAT       tcp  --  192.168.0.0/24       anywhere            tcp dpt:http to:192.168.0.10:3128
DNAT       tcp  --  192.168.0.0/24       anywhere            tcp dpt:http to:192.168.0.10:3128

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  0    --  192.168.0.0/24       anywhere
MASQUERADE  0    --  192.168.0.0/24       anywhere
MASQUERADE  0    --  192.168.0.0/24       anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
« Последнее редактирование: 29.11.2009 12:18:57 от greyzy »

Drool

  • Гость
Проверьте - будет ли работать http, если у клиентов в браузере прямо указать адрес прокси:порт?

greyzy

  • Гость
Проверьте - будет ли работать http, если у клиентов в браузере прямо указать адрес прокси:порт?

Цитировать
В файрфоксе игрался с настройками прокси, но чот толку не было
ну еще в опере и в ie попробовал, все так же.

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

Drool

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

Ну тогда на завтра покажите нам:
service squid start
service squid status

greyzy

  • Гость
С дома. Помню, на service squid restart был ответ DONE-DONE (stop-start) так что думаю, сквид работает...

greyzy

  • Гость
и запущен сквид в уровнях 3,4,5 вроде

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Alt Office Server 4.0, в инет смотрит rostlk, внутрь local, сеть 192.168.0.ххх. Установлен squid, iptables, redirector
Что делал:
в /etc/net/sysctl.conf в строчке  net.ipv4.ip_forward = 0 изменил на 1
сделал
echo 1 > /proc/sys/net/ipv4/ip_forward

Давай отделим мух от котлет.

Это одно и тоже.
net.ipv4.ip_forward = 1 означает, что разрешена маршрутизация между интерфейсами. При включении сервера начинает действовать.
 echo 1 > /proc/sys/net/ipv4/ip_forward маршрутизация включается на работающем сервере и действует до выключения сервера.
Давай пока это трогать не будем. Это сейчас не важно. Тем более NAT  при squid ничего не маршрутирует и пропускает он трафик между интерфейсами или нет, не имеет значение.
Чтобы настроить прозрачный прокси сервер, надо вначале настроить просто прокси и проверить. Настройте squid-сервер. В своем браузере включите опции получать через прокси порт 3128 и добейтесь нормальной работы.

А вот уже потом всего два шага:
http_port 3128 transparentiptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128для вас eth1 это видимо local
И еще часто путают, при прозрачном прокси на клиентских машинах адрес шлюза должен совпадать с адресом прокси и быть записанным.
При обычном прокси это не обязательно, даже наличие шлюза не важно.
 
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

alunix

  • Гость
А вы откройте сайт не mail.ru а какой-нить другой, yandex..altlinux.ru...
Может дело в mtu ?
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu

greyzy

  • Гость
Чтобы настроить прозрачный прокси сервер, надо вначале настроить просто прокси и проверить. Настройте squid-сервер. В своем браузере включите опции получать через прокси порт 3128 и добейтесь нормальной работы.

А вот уже потом всего два шага:
http_port 3128 transparentiptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128для вас eth1 это видимо local
И еще часто путают, при прозрачном прокси на клиентских машинах адрес шлюза должен совпадать с адресом прокси и быть записанным.
При обычном прокси это не обязательно, даже наличие шлюза не важно.
 
У Drool в скрипте вместо eth1 стоит 192.168.2.0/24, имхо это две большие разницы...
Вобщем я сначала отключаю iptables, убираю слово transparent, прописываю на клиентской машине адрес прокси и порт и пытаюсь выйти в инет. Завтра, т.к. по прежнему не на работе еще.

А вы откройте сайт не mail.ru а какой-нить другой, yandex..altlinux.ru...
Может дело в mtu ?
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu
Я всегда сначала пробую на google, потом на mail, потом на yandex :) не, не выходил, а чего делает ваша хитрая цепочка?

greyzy

  • Гость
И еще часто путают, при прозрачном прокси на клиентских машинах адрес шлюза должен совпадать с адресом прокси и быть записанным.
При обычном прокси это не обязательно, даже наличие шлюза не важно.
В чем вообще тогда разница между прозрачным и не прозрачным? Я решил, что прозрачный, это когда из внутренней сети ходят в интернет как будто кабель у них в компе, а непрозрачный - это когда тебе еще надо пользователь-пароль ввести, чтобы выйти в Сеть. Видимо я не понимаю этих понятий.

greyzy

  • Гость
Не, совсем сначала все-таки попробую исправить это правило
iptables -I PREROUTING -t nat -s 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.10:3128192.168.0.0/24 на local, ведь напомню, ftp, https, пиджин на 443 порту работают, причем без настройки клиентских браузеров (т.е сам по себе squid получается функционирует нормально), кажется мне, что дело в 80м порту...
« Последнее редактирование: 29.11.2009 19:51:54 от greyzy »

Оффлайн speccyfan

  • Завсегдатай
  • *
  • Сообщений: 522
  • CCNA
    • speccyfan (Примеры различных конфигураций сетевых сервисов)
Что-то я смотрю на ошибку и мне кажется, что на вашем сервере не настроен DNS.
With best regards, Yury Konovalov aka 2:453/53

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
http://www.altlinux.org/Прозрачный_прокси-сервер

Цитировать
Прозрачный прокси сервер позволяет кешировать веб-страницы без необходимости прописывать прокси-сервер для каждого пользователя.
« Последнее редактирование: 29.11.2009 21:46:06 от ruslandh »