Перейти к содержимому

iptables-squid-stargazer


Рекомендованные сообщения

Давно тема не подымалась что-то :00:

Уже 2 дня парюсь и просто ни в какую, оно то хорошо, учимся, но уже нервы подсдают.

 

Исходные данные: ASPLinux 10, squid 2.5 stable 13, iptables 1.2.11, stargazer 2.4.8.6; клиентские машины: WinXP SP2.

 

Конфиг сквида:

 

http_port 3128

 

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

 

cache_mem 12 MB

 

cache_swap_low 90

cache_swap_high 95

 

maximum_object_size 16384 KB

 

maximum_object_size_in_memory 16 KB

 

ipcache_size 1024

ipcache_low 90

ipcache_high 95

 

fqdncache_size 1024

 

cache_replacement_policy lru

memory_replacement_policy lru

 

cache_dir ufs /usr/local/squid/var/cache 1500 16 256

cache_access_log /usr/local/squid/var/logs/access.log

cache_log /usr/local/squid/var/logs/cache.log

 

cache_effective_user squid

cache_effective_group squid

 

ftp_user genka@tn.ua

ftp_list_width 64

ftp_passive on

ftp_sanitycheck on

 

hosts_file /etc/hosts

unlinkd_program /usr/local/squid/libexec/unlinkd

inger_program /usr/local/squid/libexec/pinger

 

auth_param basic children 5

auth_param basic realm Squid proxy-caching web server

auth_param basic credentialsttl 2 hours

auth_param basic casesensitive off

 

wais_relay_host localhost

wais_relay_port 0

 

refresh_pattern ^ftp:  1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern .  0 20% 4320

 

negative_ttl 5 minutes

positive_dns_ttl 6 hours

negative_dns_ttl 1 minute

range_offset_limit 0 KB

forward_timeout 4 minutes

connect_timeout 1 minute

request_timeout 5 minutes

persistent_request_timeout 1 minute

 

half_closed_clients on

pconn_timeout 120 seconds

ident_timeout 10 seconds

shutdown_lifetime 30 seconds

 

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 8443

acl Safe_ports port 80  # http

acl Safe_ports port 8080 # Apache

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 Safe_ports port 2010 # ipis

acl CONNECT method CONNECT

 

http_access allow manager localhost

http_access deny manager

 

 

http_access deny !Safe_ports

 

http_access deny CONNECT !SSL_ports

 

http_access deny to_localhost

 

acl ukraine dst "/usr/local/squid/my/ua-ix.ip"

acl TNwork  dst "/usr/local/squid/my/users"

acl TN src "/usr/local/squid/my/users"

 

http_access allow TN

http_access allow TNetwork

http_access allow ukraine

http_access allow !ukraine

 

http_access deny all

 

http_reply_access allow all

 

icp_access allow all

 

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_single_host off

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

 

pipeline_prefetch on

 

Скрипт инициализации файрвола. Ногами прошу пинать не сильно, открыл(?) все на свете, чтоб разобраться в нем ли проблема...

 

#!/bin/bash

 

/sbin/depmod -a

 

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_tables

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_limit

/sbin/modprobe ipt_MASQUERADE

 

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "1" > /proc/sys/net/ipv4/ip_forward

 

iptables -t filter -F

iptables -t filter -X

iptables -t nat -F

iptables -t nat -X

 

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

 

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128

 

Конфиги старгазера не привожу, он у меня с непрозрачным прокси заводился, авторизовался, короче, все хорошо было кроме разделения трафика по направлениям, понятно почему. Исходя из этого, проблема, очевидно либо в файрволе либо в сквиде. Кстати говоря, я так понимаю, что если пакет дойдет до сквида и будет им обработан, даже если дальше его не пустят выходные цепочки файрвола, то он выдаст свою страничку об ошибке, верно? На виндовой машине получаю "невозможно соединится с удаленным сервером"

 

Только что отключил СГ, все равно ничерта не работает. Так что вроде и не совсем по адресу, но есть большая просьба помочь...

 

Спасибо!

Удачи!

 

PS. Кстати говоря, в такой конфигурации если настроить клиентский браузер, который на ХР, для использования прокси с портом 3128, то все работает, в том числе и в связке с СГ, то есть после авторизации... Почему - понятно. Почему прозрачный прокси не пускает - вот вопрос.

Ссылка на сообщение
Поделиться на других сайтах

Да, линукс мне еще учить и учить. Прошу подсказки. Когда смотрю таблицу НАТ, вижу следующее:

 

REDIRECT tcp -- 192.168.0.0/24 anywhere tcp dpt:http redirports 3128

 

Не тут ли собака порылась, не вижу порта 80? Подскажите, плиз, исходников от ядра нет, просто если дело в невключеном редиректе, буду искать.

CONFIG_IP_NF_TARGET_REDIRECT=m (строчка из конфига)

 

Премного благодарен!

Удачи!

Ссылка на сообщение
Поделиться на других сайтах

Спасибо, ужеразобрался через iptables -t nat -L -n.

Да, еще один симптом. Когда в настройках прокси клиентского браузера рисую порт 80 - интернет у клиента есть. Но трафик СГ тем не менее считает локальный и все... При этом по прежнему, с отключением доступа через прокси в клиенстком браузере, интернет по прежнему не работает, при этом сообщение "Could not locate remote server" выскакивает просто моментально... Подскажите, хотя бы, куда копать...

Удачи!

Ссылка на сообщение
Поделиться на других сайтах

я об этом спрашивал тут http://local.com.ua/forum/index.php?showtopic=3989&hl= , но в конце концов отказался от этого гемора со сквидом!

Ссылка на сообщение
Поделиться на других сайтах

Fly48, как решилась проблема? Поделитесь, если не жаль.

Сейчас поставил более старую версию сквида, пытаюсь запустить через него...

 

Товарищи, а есть ли какая команда вроде top для процессов, только для сети. Очень помогло бы поглядеть, где же эти пакеты тормозятся...

 

Спасибо.

Удачи!

Ссылка на сообщение
Поделиться на других сайтах
.....только для сети. Очень помогло бы поглядеть, где же эти пакеты тормозятся...

TCPdump )

 

По делу, принцип следующий:

1. перенаправить все запросы сети 80-го порт на скуид (прозрачное проксирование, документации куча!)

2. расказать скуиду, кто может (имеет право, т.е. авторизованные юзера в стг - ОНЛАЙН) - директива в squid.conf:

acl allowed_hosts src "/var/stargazer/online.users"

где /var/stargazer/online.users должен иметь такое формат записи:

127.0.0.1/255.255.255.255
192.168.1.1/255.255.255.255
192.168.1.31/255.255.255.255

(содержимое его - генерю скриптами: OnConnect, OnDisconnect)

в этом случае получаю: кто онлайн - прозначно проксируется, кто оффлайн - страница ошибки, где написано, что неавторизованный ты)

Ссылка на сообщение
Поделиться на других сайтах

keshaLG, большая просьба глянуть мой первый пост и сказать, что я забыл, почему не работает. Принцип работы через прозрачный прокси вроде бы вполне понятен.

Хочу все-таки начать с самого начала. Порамблил, погуглил и поапортил, но ничего толкового найти не смог, возможно, искал плохо или просто немного подустал.

Прихожу к мысли, что ни сквид, ни старгейзер тут ни при чем, может дело в другом? Уже бы давно попробовал ядро из исходников собрать, да вот нет у меня их и достать не предвидется. Тем не менее, в конфиге все опции, которые требуются выставлены "@=m"

Товарищи, подскажите,

Как настроить общий выход в интернет без использования прокси. Можно ли это сделать используя только iptables.

Как быть, если айпишник провайдер дает через dhcp.

 

Большое спасибо!

 

Удачи!

 

Да, у меня eth0 смотрит в локальную сеть, запросы от клиентских машин приходят, имена резолвятся... Но, не работает.... Попробовал squid 2.5 stable 6, ведет себя несколько по другому, но все равно не цепляется...

Ссылка на сообщение
Поделиться на других сайтах

Ну, наконец-то!!!

Можно немного вздохнуть, завелось практически все.

Грабли рассказываю.

Во-первых, и это, наверное самое главное, при каждом изменении настроек файрвола связанным с таблицей нат надо перегружать сеть. Заодно и рассказывает что не так с натом (MASQUERADE: no route: Rusty's brain broke - что это значит - без малейшего понятия...).

В настройках сквида нужно включить cache_peer, адрес машины-шлюза, порт хттп , 0-й порт для ицп. always_ newer_direct-ы все выключил, с ними не работало, может проехал в настройке. Знаю, это было в форуме, и Den_LocalNet (кроме того, спасибо тебе за скрипт обновления и нормализации списка украинских сетей) об этом писал, но когда сперва пробовал - не выходило, и решил, что не надо этого делать. НАДО!

 

Теперь есть проблема. Как-то очень медленно сайты стали открываться. Точнее не открываться, а искать адрес. Не могу понять, что за дрянь... Копаю ДНС, но там вроде все хорошо.

 

И еще одна проблема. Не получается сделать так, чтоб нельзя было на 3128 порт зайти, в этом случае весь трафик считается как локальный, что, по сути катастрофа. Ставил в сквидовых настрйках http_port 127.0.0.1:3128, пробовал ставить "внутренний адрес машины-шлюза":3128. В первом случае интернет вообще не работает, во втором проблема не решается.

Если кто может что сказать по существу проблем - буду очень благодарен.

 

В любом случае, авторам огромнейшее спасибо за программу, а всем отвечавшим за поддержку и терпение!

 

Удачи!

Ссылка на сообщение
Поделиться на других сайтах

Для того чтобы считало трафик сквида в инет в рулесах напиши:

TCP адрес_сервера:3128 DIR1

UDP адрес_сервера:3128 DIR1

это при условии что у тебя инет на направлении DIR1

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

iptables -t filter -A INPUT -d адрес_сервера -p tcp --dport 3128 -j DROP

iptables -t filter -A OUTPUT -d адрес_сервера -p tcp --dport 3128 -j DROP

Ссылка на сообщение
Поделиться на других сайтах
Для того чтобы считало трафик сквида в инет в рулесах напиши:

TCP адрес_сервера:3128 DIR1

UDP адрес_сервера:3128 DIR1

 

Логично, спасибо. Юзеров уже предупредил, что приму меры, то есть трафик с прямого к сквиду обращения будет считаться как зарубежный, пусть боятся и ручками шаловливыми в настройки не лазят, им с виндовз это не обязательно )))

 

в правила фаервола добавь:

iptables -t filter -A INPUT -d адрес_сервера -p tcp --dport 3128 -j DROP

iptables -t filter -A OUTPUT -d адрес_сервера -p tcp --dport 3128 -j DROP

 

Так политика запрещено по умолчанию, или я чего-то пока не понимаю?

 

Удачи!

 

А, дошло! Да, спасибо, так и сделаю. В скриптах же юзеру добавляется доступ ко всему.

Изменено пользователем li$ergin
Ссылка на сообщение
Поделиться на других сайтах

Опять очень нужна ваша помощь. Новую ветку не хочу открывать, дабы воздух зря не портить :loop: .

 

Дело вот в чем. Поставил frox, настроил, работает.

Работать-то работает, но трафик считает как локальный. В тэйблзах стоит редирект 21-го порта на 2121 на котором висит фрокс, настроенный на работу со сквидом. Со сквидом фишка такая прокатила, не пойму вообще в какую сторону рыть. Направте на путь истинный, плиз.

 

Заранее спасибо, удачи!

Ссылка на сообщение
Поделиться на других сайтах

Может, немного неточно рассказал. Софтина Frox - ФТП прокси, который умеет общаться с другим прокси. Висит на порту 2121, соответственно в файрволе все что приходит на 21-й порт заворачивается на 2121-й где его уже ждет фрокс, он же в свою очередь, взаимодействует со сквидом. Не помню где прочитал рекомендации делать именно так (может, в старых сообщениях этого форума), но когда пытался просто завернуть 21-й ТСП и 22-й УДП на сквид - не работало.

 

Вообще, дико прошу прощения, ибо сам гусь. Только что посмотрел конфиги тотал командера - явно стоит обращение к прокси, понятно чего как локаль считает. Удивительно то, что порт 3128 закрыт в файрволе, тем не менее доступ есть.

Так что вопрос несколько поменялся :)

Строчки из скрипта, который запускается при загрузке и служит для инициализации файрвола.

iptables -A INPUT -p tcp -s 192.168.0.0/24 --sport 3128 -j DROP

iptables -A FORWARD -p tcp -s 192.168.0.0/24 --sport 3128 -j DROP

iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 3128 -j DROP

iptables -A INPUT -p tcp -d 192.168.0.0/24 --dport 3128 -j DROP

 

Впрочем, вопрос не совсем по теме, просто буду очень признателен за помощь

XoRe, огромное спасибо за помощь и разъяснения (в другом посте).

Ссылка на сообщение
Поделиться на других сайтах

iptables -A INPUT -p tcp -s 192.168.0.0/24 --sport 3128 -j DROP

iptables -A FORWARD -p tcp -s 192.168.0.0/24 --sport 3128 -j DROP

iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 3128 -j DROP

iptables -A INPUT -p tcp -d 192.168.0.0/24 --dport 3128 -j DROP

вот это не совсем правильно для того чтобы закрыть потр 3128 нужно писать IP адрес сервра а не подсеть

если адрес сервера 192.168.0.1 то достаточно правила

iptables -A INPUT -p tcp -s 192.168.0.1 --dport 3128 -j DROP

после того как выполниш это набери nmap 192.168.0.1

 

iptables -A FORWARD -p tcp -s 192.168.0.0/24 --sport 3128 -j DROP

iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 3128 -j DROP

это я так понял ты запрещаеш клиентам ходит через любые другие прокси...

 

покажи как заворачиваеш 21-й на 2121-й порт?

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за участие, Slava.

 

вот это не совсем правильно для того чтобы закрыть потр 3128 нужно писать IP адрес сервра а не подсеть

 

Да, я то уж посчитал, что расчехлился с файрволом. Какая разница, закрывать порт на(с) одну машину или весь диапазон?

 

это я так понял ты запрещаеш клиентам ходит через любые другие прокси...

 

Да. Одна машина в сети все время бомбит сервер какими-то непонятными запросами, большинство из которых фигачат на ДНСы, причем не мои и моего провайдера, а куда-то далеко-далеко )). Пока не могу на него воздействовать - закрываю файрволом все на свете.

 

покажи как заворачиваеш 21-й на 2121-й порт?

 

iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 -i eth0 --dport 21 -j REDIRECT --to-ports 2121

 

Удачи!

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...
По делу, принцип следующий:

1. перенаправить все запросы сети 80-го порт на скуид (прозрачное проксирование, документации куча!)

2. расказать скуиду, кто может (имеет право, т.е. авторизованные юзера в стг - ОНЛАЙН) - директива в squid.conf:

acl allowed_hosts src "/var/stargazer/online.users"

где /var/stargazer/online.users должен иметь такое формат записи:

127.0.0.1/255.255.255.255
192.168.1.1/255.255.255.255
192.168.1.31/255.255.255.255

(содержимое его - генерю скриптами: OnConnect, OnDisconnect)

в этом случае получаю: кто онлайн - прозначно проксируется, кто оффлайн - страница ошибки, где написано, что неавторизованный ты)

Выложи этот скрипт глянуть.. очень интересно...

Как в OnConnect я доганяю, а как в OnDisconnect?

 

И еще вопросик, при стандартных скриптах fw (iptables) по умолчанию все запрещаеться, а прокси должно выпускать на www порты, как выпустить прокси если он на шлюзе? че-то ни че не получаеться...

 

типо так работает

iptables -t filter -A INPUT -p tcp -d $server --sport 80 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -d $server --sport 80 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -s $server --dport 80 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp -s $server --dport 80 -j ACCEPT

если $server - внешний ip

Ссылка на сообщение
Поделиться на других сайтах
  • 4 weeks later...

Значит так

в OnConnect дописываем

echo "$IP/255.255.255.255">> /var/stargazer/online.users

а в OnDisconnect

while [ -a /var/tmp/stgusers.tmp ];
   do {
 sleep 1 && continue
};
done
cat /var/stargazer/online.users | grep -v $2/255.255.255.255 >> /var/tmp/stgusers.tmp
rm -f /var/stargazer/online.users >/dev/null 2>/dev/null
mv /var/tmp/stgusers.tmp /var/stargazer/online.users >/dev/null 2>/dev/null
/usr/sbin/squid -k reconfigure >/dev/null 2>/dev/null

в squid.conf

acl mmm src "/var/stragazer/online.users"
http_access allow mmm

Огромное спасибо keshaLG

Изменено пользователем Vasilich
Ссылка на сообщение
Поделиться на других сайтах

по идее СТГ считает пакеты ДО редиректа.

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

 

<IP адрес твоего сервера>:21 и тут в какое направление считать

0.0.0.0:21 и тут направление - МИР

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...