Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: iptables для squid  (Прочитано 3357 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlexHawk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
iptables для squid
« : 25 Апреля 2011, 10:52:22 »
Изначально имеется роутер с 3мя сетевыми картами. Одна смотрит в инет, две в локалку. Установил Squid, прописал соответствующий скрипт. И все отлично, инет заработал.
Проблема в том, что я не могу посмотреть логи Squid, а уж тем более заюзать установленный Sarg.
Выглядет это все вот так
gadmin@gateway:/var/log$ ls
apparmor  btmp          dmesg.1.gz  installer  mail.err   pycentral.log  wtmp
apt       daemon.log    dmesg.2.gz  kern.log   mail.info  squid
aptitude  debug         dmesg.3.gz  landscape  mail.log   syslog
auth.log  dist-upgrade  dpkg.log    lastlog    mail.warn  udev
boot      dmesg         faillog     lighttpd   messages   ufw.log
boot.log  dmesg.0       fsck        lpr.log    news       user.log
gadmin@gateway:/var/log$ sudo tail -f /var/log/squid/access.log
tail: невозможно открыть «/var/log/squid/access.log» для чтения: Нет такого файла или каталога
tail: больше нет файлов
gadmin@gateway:/var/log$ sudo /usr/bin/sarg
SARG: Файл не найден: /var/log/squid/access.log
gadmin@gateway:/var/log$

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

Нашел статейку, где сказано, что логи в дефолтном конфиге лежат в /usr/local/squid/logs/
gadmin@gateway:/var/log$ tail -f /usr/local/squid/logs/access.log
tail: невозможно открыть «/usr/local/squid/logs/access.log» для чтения: Нет такого файла или каталога
tail: больше нет файлов
gadmin@gateway:/var/log$ cd /usr/local/squid/logs/
-bash: cd: /usr/local/squid/logs/: Нет такого файла или каталога
gadmin@gateway:/var/log$ cd /usr/local/
gadmin@gateway:/usr/local$ ls
bin  etc  games  include  lib  man  sbin  share  src
Т.е. и здесь ничего нет.

Пользователь решил продолжить мысль 25 Апреля 2011, 11:24:43:
После рестарта Squida заработало, файлы логов появились, но access.log по-прежнему пустой, хотя несколько пользователей уже использует инет.
gadmin@gateway:~$ sudo /usr/bin/sarg
SARG: unexpected end of file encountered in /var/log/squid/access.log
SARG: Записи не найдены

Пользователь решил продолжить мысль 25 Апреля 2011, 12:53:02:
Есть предположение, что неверен скрипт, редактирующий iptables.
Прошу проверить
#!/bin/sh
# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
# Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

# Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT
iptables -A FORWARD -i eth0 -o eth2 -j REJECT

# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
iptables -t nat -A PREROUTING -i eth2 -d 192.168.1.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

# Запрещаем подсетям видеть друг друга
iptables -A FORWARD -i eth1 -o eth2 -j DROP
iptables -A FORWARD -i eth2 -o eth1 -j DROP

Пакеты правильно заворачиваются на Squid?
« Последнее редактирование: 25 Апреля 2011, 15:49:05 от AlexHawk »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Отсутствуют логи Squid
« Ответ #1 : 25 Апреля 2011, 13:19:24 »
# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
iptables -t nat -A PREROUTING -i eth2 -d 192.168.1.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
...
Пакеты правильно заворачиваются на Squid?
Нет. Не правильно. Параметр -d указывает на destination-адрес пакетов.

Пользователь решил продолжить мысль 25 Апреля 2011, 13:22:29:
Цитировать
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
без
iptables -P FORWARD DROPбессмысленны

Ну и правила принято показывать действующие, а не мифические скрипты
sudo iptables-save
« Последнее редактирование: 25 Апреля 2011, 13:24:10 от fisher74 »

Оффлайн AlexHawk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Отсутствуют логи Squid
« Ответ #2 : 25 Апреля 2011, 15:48:03 »
Да, вижу, что iptables совсем неправильный. Т.к. если в браузере не прокси, то в инет пользователь ходит напрямую и учет (squid+sarg) в отношении него не ведется  :-[
Помогите накидать новый.
Дано: на сервере 3 сетевых интерфейса, один смотрит в инет, получает настройки от провайдера (eth0,), другие два интерфейса смотрят в свои локалки (eth1, 192.168.0.0/24, eth2 192.168.1.0/24). Необходимо, чтобы каждая локалка имела полноценный выход в интернет (в настройках squid выставил ... 3128 transparate), весь трафик шел через squid. И две локалки не видели друг друга.

P.S.: название темы поменял.
« Последнее редактирование: 25 Апреля 2011, 15:49:35 от AlexHawk »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables для squid
« Ответ #3 : 25 Апреля 2011, 17:49:08 »
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.0.0/23 -o eth0 -j ACCEPT
sudo iptables -t nat -A PREROUTING ! -d 192.168.0.0/23 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128
« Последнее редактирование: 25 Апреля 2011, 17:54:18 от fisher74 »

Оффлайн ErshovDmitry

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: iptables для squid
« Ответ #4 : 05 Июля 2013, 23:03:37 »
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.0.0/23 -o eth0 -j ACCEPT
sudo iptables -t nat -A PREROUTING ! -d 192.168.0.0/23 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128
Искал ответ на этот же вопрос спасибо вам, что написали как это сделать. Вот ещё вопрос, порт 80 перенаправляется на squid с этим правилом, а как на счёт других портов пробовал через 80,21,443 так 80 работает нормально, а вот 21 и 443 перестают вообще работать. Пробовал эти порты отдельными правилами бесполезно, если в настройках клиентской машины указывать прокси то squid через эти порты пускает без проблем.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: iptables для squid
« Ответ #5 : 05 Июля 2013, 23:59:06 »
HTTPS (443/tcp) вообще так не перенаправишь.
FTP (21/tcp) - не знаю, но думаю, что тоже нет.
Если стоит вопрос только учёта трафика, сквид вообще нафиг не нужен.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: iptables для squid
« Ответ #6 : 06 Июля 2013, 10:48:43 »
ErshovDmitry, squid может обслуживать FTP и HTTPS в непрозрачном режиме.
FTP прозрачно, насколько я помню, squid не умеет, так что придётся дополнительно поднимать другой proxy, который умеет, либо натить.
Для прозрачного проксирования HTTPS надо подменять сертификат — клиентский браузер будет это воспринимать как MITM.
« Последнее редактирование: 06 Июля 2013, 16:14:12 от ArcFi »

Оффлайн goragor

  • Новичок
  • *
  • Сообщений: 45
  • юЗверь
    • Просмотр профиля
Re: iptables для squid
« Ответ #7 : 09 Июля 2013, 16:36:01 »
есть squid3. Настроен, работает нормально (настройки указываются в браузере).
С помощью iptables хочу включить нат и завернуть интернет на прокси правилом

sudo iptables -t nat -A PREROUTING -i eth0 -s 10.44.70.249 ! -d 10.44.70.0/24 -p tcp --dport 80 -j DNAT --to-destination 10.44.70.5

В результате получаю в браузере клиента (т.е. ответ сквида получается):

Цитировать
При получении URL / произошла следующая ошибка

Недопустимый URL

Какая-то часть запрашиваемого URL некорректна

Возможные проблемы:

•Отсутствет или неверено указан протокол (должно быть «http://» или похоже)

•Отсутствует имя узла (hostname)

•Недопустимое двойное экранирование в пути URL (URL-Path)

•Недопустимый символ в имени узла (hostname), подчёркивания запрещены.

Клиент настроен вручную, шлюзом прописана машина со сквидом (10.44.70.5)
Как я уже написал, если прописать в настройках браузера проксик -- все работает.
Сквид слушает порты 80 и 8080 (сделал еще и 80 в надежде, что заработает без заворачивания на другой порт)

Пробовал через REDIRECT, та же песня.

Т.е. как понимаю что поток то заворачивается, только сквиду там чего-то не по душе.

В сквиде настроена фильтрация по IP и MAC, в обоих случаях машине клиента разрешено.

В iptables правил практически нет, разрешен FOWARD из сети и пара айпишников ходит в интернет напрямую. Еще по ходу дела разрешил из сети почтовые порты
FOWARD на ядре разрешен

Цитировать
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i eth0 -s 10.44.70.0/24 -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth1 -s 10.44.70.8,10.44.70.29,10.44.70.249 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.44.70.0/24 -p tcp -m multiport --dports 21,110,25,993,465 -j MASQUERADE
« Последнее редактирование: 09 Июля 2013, 16:52:33 от goragor »
Я еще не волшебник.... Я только учусь....

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables для squid
« Ответ #8 : 09 Июля 2013, 16:39:06 »
кальмар настроен как прозрачный?

Оффлайн goragor

  • Новичок
  • *
  • Сообщений: 45
  • юЗверь
    • Просмотр профиля
Re: iptables для squid
« Ответ #9 : 09 Июля 2013, 16:46:30 »
squid3 вроде не бывает прозрачным. Даже в мане нет установки transparent (слово может неправильно написал ) )
Там где порт написано
Цитировать
http_port 10.44.70.5:8080
http_port 10.44.70.5:80
« Последнее редактирование: 09 Июля 2013, 16:49:49 от goragor »
Я еще не волшебник.... Я только учусь....

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables для squid
« Ответ #10 : 09 Июля 2013, 16:53:44 »
Да Вы что?????
Только не рассказывайте об этом разработчикам кальмара и нескольким тысячам админов, считающим, что используют именно эту функцию. А то ведь они расстроятся и уйдут в запой.

Но на всякий случай попробуйте так
http_port 10.44.70.5:80 transparentи соответсвенно правило
sudo iptables -t nat -A PREROUTING -i eth0 -s 10.44.70.249 ! -d 10.44.70.0/24 -p tcp --dport 80 -j DNAT --to-destination 10.44.70.5:8080
Ну или редирект на порт 8080, если прокси совмещён со шлюзом (не вчитывался в первое сообщение, извините)

Оффлайн goragor

  • Новичок
  • *
  • Сообщений: 45
  • юЗверь
    • Просмотр профиля
Re: iptables для squid
« Ответ #11 : 09 Июля 2013, 17:05:00 »
Да Вы что?????
Только не рассказывайте об этом разработчикам кальмара и нескольким тысячам админов, считающим, что используют именно эту функцию. А то ведь они расстроятся и уйдут в запой.

Но на всякий случай попробуйте так
http_port 10.44.70.5:80 transparentи соответсвенно правило
sudo iptables -t nat -A PREROUTING -i eth0 -s 10.44.70.249 ! -d 10.44.70.0/24 -p tcp --dport 80 -j DNAT --to-destination 10.44.70.5:8080
Ну или редирект на порт 8080, если прокси совмещён со шлюзом (не вчитывался в первое сообщение, извините)

Большое спасибо, все действительно заработало как надо. Странно, что в мане нет этой опции (в смысле в конфиге описание http_port)

Поправил сообщение, т.к. сам понял ошибку :)
« Последнее редактирование: 09 Июля 2013, 17:23:19 от goragor »
Я еще не волшебник.... Я только учусь....

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: iptables для squid
« Ответ #12 : 09 Июля 2013, 17:13:27 »
Большое спасибо, все действительно заработало как надо. Странно, что в мане нет этой опции (в смысле в конфиге описание http_port)
Лучше тут смотрите:
http://www.squid-cache.org/Doc/config/http_port/

Оффлайн goragor

  • Новичок
  • *
  • Сообщений: 45
  • юЗверь
    • Просмотр профиля
Re: iptables для squid
« Ответ #13 : 09 Июля 2013, 17:27:49 »
Большое спасибо, все действительно заработало как надо. Странно, что в мане нет этой опции (в смысле в конфиге описание http_port)
Лучше тут смотрите:
http://www.squid-cache.org/Doc/config/http_port/
спасибо за ссылку. Теперь у сквида опция intercept вместо transparent.
Только что проверил -- все работает :)
« Последнее редактирование: 09 Июля 2013, 17:40:55 от goragor »
Я еще не волшебник.... Я только учусь....

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: iptables для squid
« Ответ #14 : 09 Июля 2013, 17:54:45 »
Теперь у сквида опция intercept вместо transparent.
начиная с версии 3.1

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.