LINUX.ORG.RU
ФорумAdmin

настройка squid3


0

1

Здравствуйте. Помогите пожалуйста настроить сквид. Особенность конкретно этой настройки- топология сети. Она следующая:

адсл модем-- сервер( <---eth0 -squid3- eth1 --->) --- внутренняя сеть

★★★

Сквиду не обязательно стоять на роутере. Настраивается он независимо от этого - просто аксесс-листы нужно правильно написать.

pianolender ★★★ ()

сквид собираешься настраивать в прозрачном режиме или нет? Если в прозрачном - то как именно - через REDIRECT или через TPROXY? Кароче, подробности того, что хочешь сделать - в студию!

Pinkbyte ★★★★★ ()
Ответ на: комментарий от disee

выложи то, что ты уже сделал и мы исправим ошибки.
никто тебе с нуля iptables не напишет.

dada ★★★★★ ()
Ответ на: комментарий от disee

Ну как-то так наверное:

1) egrep ip_forward /etc/sysctl.conf

net.ipv4.ip_forward = 0

2) vim /etc/sysctl.conf

3) egrep ip_forward /etc/sysctl.conf

net.ipv4.ip_forward = 1

4) sysctl -p

Sirko ()

А в чём вопрос? Это типичнейшая конфигурация. Настраиваешь инет на серваке, ставишь сквид, запускаешь. Изкаробки будет как-то но работать, при условии что ДНС рабочик прописались. А дальше уже идут ньюансы, типа прокинуть почту NAT'ом, дописать в конфиг сквида какие-нить опции более агрессивного кеширования, авторизации, поставить на винду юзерам какой-нить proxycap и прочее-прочее, сквид может почти всё.

Gordon01 ★★ ()
Ответ на: комментарий от Pinkbyte

прозрачный через tproxy. Подробности:

Есть: 2 сервера под управлением debian и 20 компьютеров (все на Linux , в основном тоже на Debian). Хочу один из серверов поставить как межсетевой экран:

Запретить все входящие соединения , кроме портов 20, 22, 1723, 5900, 30000. Эти порты перенаправлять на нужные ip адреса ( 22, 1723, 30000 на 192.168.1.4; 20 и 30000 на 192.168.1.2). Хотелось бы получить возможность разграничивать скорость между клиентами, разрешить исходящие соединения по заданным портам, и запретить по всем остальным, а так же по возможности уменьшить нагрузку на канал (использовать кэширование).

disee ★★★ ()
Ответ на: комментарий от Gordon01

дело в том, что никогда ранее ничего подобного не настраивал. Это для меня в новизну. Пока что связка squid+iptables для меня темный лес, а в нете есть 2 варианта: 1) мануал на английском языке на +100500 страниц

2) тысяча и один вариантов типичных настроек (каждый настраивает как хочет и не понять где правильно а где нет)

Сейчас сижу активно употребляю 1й пункт. Но как то очень очень слабо заходит. Написал сюда, в надежде, что может кто нибудь просветит.

Насколько я понял сквиду плевать в какой части сети стоять, поэтому сейчас основной вопрос как прокинуть инет через сервер (по сути сделать шлюз), а так же как к этому каналу прикрутить acl и log и очень важно шэйпер.

disee ★★★ ()
Ответ на: комментарий от disee

Сначала - уже говорили - отредактировать sysctl.conf так, чтобы пакеты форвардились.

Дальше:

iptables -P INPUT DROP
iptables -F INPUT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P FORWARD DROP
iptables -F FORWARD

iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

Чтобы компы изнутри могли ходить наружу, нужен нат:

iptables -t nat -F
iptables -t nat -A POSTROUTING -o <внешний интерфейс> -j MASQUERADE

Первая кучка правил и этот второй кусок записывается в специальный скрипт, и этот скрипт дергается из /etc/rc.local (нужно не забыть дать скрипту +x).

Получится шлюз, на который с любой стороны можно зайти по ssh, и сквозь который никакой трафик не ходит, но если стоит сквид, то http-трафик не будет проходить цепочку forward - клиентские запросы проходить через input в сквид, а потом через output сквид будет их гнать в интернет. Обратно они пойдут как ответы, то есть через правила с state=ESTABLISHED,RELATED.

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

pianolender ★★★ ()
Ответ на: комментарий от disee

слово «шлюз» обычно подразумевает, что цепочка FORWARD таки не пустая, но в моем примере речь шла о http, поэтому там она не нужна.

pianolender ★★★ ()
Ответ на: комментарий от pianolender

Спасибо большое. Но честно говоря так и не понял, как объяснить iptables что eth0 это вход со стороны локальной сети, а eth1 выход

disee ★★★ ()
Ответ на: комментарий от disee

В том примере, который я привел - индифферентно. Другой вопрос, что он предусматривает попытки обращения к сквиду снаружи, наверное, это не очень правильно. Ну, тогда можно правило про сквид модифицировать с указанием интерфейса:

iptables -A INPUT -p tcp -i eth0 --dport 3128 -j ACCEPT

Вообще, в правилах INPUT/OUTPUT/FORWARD можно указывать интерфейс, с которого идет пакет, через -i, и на который - через -o.

pianolender ★★★ ()
Ответ на: комментарий от pianolender

В процессе... Пытаюсь. для начала надо было настроить сами интерфейсы. Сейчас файл настроек выглядит так:


root@SunFire:/var/log/squid3# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
        address 192.168.0.4
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8
        dns-search fire


iface eth1 inet static
        address 192.168.1.4
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        #dns-nameservers 8.8.8.8
        #dns-search fire

так же, при попытке добавить вот этот код:

iptables -P INPUT DROP
iptables -F INPUT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P FORWARD DROP
iptables -F FORWARD

iptables -P OUTPUT DROP
iptables -F OUTPUT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
теряю возможность подключения к системе (ни ссш сессия ни пинг не проходят), а т.к. к серверу подключаюсь только по ссш то приходится перезагружать постоянно.

но при добавлении этих команд:

iptables -t nat -F
iptables -t nat -A POSTROUTING -o <внешний интерфейс> -j MASQUERADE
наконец таки могу попасть в интернет из внутренней сети.

disee ★★★ ()
Ответ на: комментарий от pianolender

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

disee ★★★ ()
Ответ на: комментарий от disee

подключаюсь к интернету не создавая ппп сессию на сервере

Ну и прекрасно, одним гемором меньше. Хотя два ната/роутера внутри квартиры - не перебор ли? Может, модему лучше быть прсото модемом? Не знаю, не использовал такую схему никогда.

ни ссш сессия ни пинг не проходят

Очень странно. Тогда так: пихаете эти правила в один скрипт, в другой - эти:

iptables -P INPUT ACCEPT
iptables -F INPUT

iptables -P FORWARD ACCEPT
iptables -F FORWARD

iptables -P OUTPUT ACCEPT
iptables -F OUTPUT

и пихаете в шедулер один скрипт, а через пять минут после него - второй, чтобы доступ восстановился:

echo /full/path/to/firewall_up | at now +2 minutes
echo /full/path/to/firewall_flush | at now +7 minutes

А в первый скрипт нужно добавить что-то типа

iptables -A INPUT -j LOG

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

Чтобы ходил пинг - можно сказать

iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
- дело полезное (только нужно иметь в виду, что кроме echo request и echo reply в icmp ещё много чего есть, и нужно ли оно вам - отдельный вопрос)

pianolender ★★★ ()
Ответ на: комментарий от pianolender

Проснулся утром- опять не проходит ничего через сервер. на сервер по ссш захожу. от туда в две стороны пинги идут.

строки

iptables -t nat -F
iptables -t nat -A POSTROUTING -o <внешний интерфейс> -j MASQUERADE
не помогают. Пока спал уверен что ничего не трогал... что могло случится?

disee ★★★ ()
Ответ на: комментарий от disee

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

pianolender ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.