Автор Тема: IPTABLES+SQUID прозрачный прокси (старая песня)  (Прочитано 173252 раз)

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

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
Мои правила в rc.firewall
#!/bin/sh 


IF_INT="eth0"
IF_EXT="eth1"
IPT="/sbin/iptables"


$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X


$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

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


$IPT -A FORWARD -i $IF_INT -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


$IPT -A FORWARD -i $IF_EXT -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT


#SNAT - local user to out internet
#$IPT -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j ACCEPT
#$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp -s 192.168.1.0/24 --dport 80 -j DNAT --to-destination 192.168.1.5:3128
#
#$IPT -t nat -A PREROUTING -i $IF_EXT ! -d 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPT -t nat -A PREROUTING -i $IF_INT -p tcp  -m multiport --dport 80,8080 -j REDIRECT --to-port 3128
#$IPT -t nat -A OUTPUT -p tcp -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.1.5:3128
#$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp -s 192.168.1.0/24 -m multiport --dport 80,8080 -j DNAT --to 192.168.1.5:3128
#$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE


$IPT -t nat -A POSTROUTING -p tcp -o $IF_EXT -j SNAT --to-source 11.22.33.44



$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $IF_INT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $IF_INT -p icmp -j ACCEPT

Пробовал завернуть http-трафик на сквид всеми возможными способами, которые только нашел в сети, а в access.log пусто и трафик нейдет. Подскажите, что нужно убрать, добавить или переписать, чтобы хотя бы до сквида достучаться?

P.S.: система Debian 6.0 Squeeze, squid 3.1.14
Добрых дел мастер...

Оффлайн Pascal

  • Начинающий
  • *
  • Сообщений: 44
  • Рейтинг: 5
  • Пол: Мужской
    • Просмотр профиля
    • UNIXDEV
Re: IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #1 : 27 Сентября 2011, 09:12:32 »
А что говорит iptables -L -t nat и sysctl net.ipv4.ip_forward
слабоумие и отвага!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
Re: IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #2 : 27 Сентября 2011, 09:26:46 »
iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       tcp  --  anywhere             anywhere            to:11.22.33.44

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

net.ipv4.ip_forward = 1

На данный момент такие...
Добрых дел мастер...

Оффлайн Pascal

  • Начинающий
  • *
  • Сообщений: 44
  • Рейтинг: 5
  • Пол: Мужской
    • Просмотр профиля
    • UNIXDEV
Re: IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #3 : 27 Сентября 2011, 09:44:12 »
antiroot, а почему все правила редиректа закоментированны?

$IPTABLES -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-ports 3128

И настроен ли сам сквид на transparent?
слабоумие и отвага!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
Re: IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #4 : 27 Сентября 2011, 09:56:34 »
Потому что ни одно из них не работало, по крайней мере z не видел никаких последствий работы в access.log
Сейчас раскоментировал и подправил до такого:
$IPT -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.5 --dport 80 -j REDIRECT --to-ports 3128
и получил
iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  localnet/24          srv-proxy           tcp dpt:www redir ports 3128

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       tcp  --  anywhere             anywhere            to:11.22.33.44

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Правда в access.log до сих пор ничего
Сквид настроен
http_port 192.168.1.5:3128 intercept
Добрых дел мастер...

Оффлайн Pascal

  • Начинающий
  • *
  • Сообщений: 44
  • Рейтинг: 5
  • Пол: Мужской
    • Просмотр профиля
    • UNIXDEV
Re: IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #5 : 27 Сентября 2011, 13:26:26 »
http_port 192.168.1.5:3128 intercept
Я полагал, что оно выглядит так:
http_port 192.168.1.5:3128 transparent
слабоумие и отвага!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #6 : 27 Сентября 2011, 14:42:10 »
Так выглядел до squid 3.1, а что по правилам можете сказать?
Добрых дел мастер...

Оффлайн Flyer_SPb

  • Модераторы
  • Старожил
  • *****
  • Сообщений: 967
  • Рейтинг: 25
  • Пол: Мужской
  • Ветеран войны с Kilrathi
    • Просмотр профиля
  • Откуда: 2:5030
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #7 : 27 Сентября 2011, 17:25:37 »
antiroot, странные какие-то правила!
Дропаются (политикой) все входящие, кроме ssh и icmp.
И, так же политикой, дропаются _вообще_ все исходящие!
Т.е., там и ssh работать не должен.
Только пропуск в инет исходящих пакетов и из инета - ответных.
They stole my gun, my beautiful Steltek gun!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #8 : 27 Сентября 2011, 18:40:41 »
Flyer_SPb, я этот конфиг в инете нашел, если не сложно подскажите, что еще прописать дополнительно, чтобы файервол правильно работал? Просто я с iptables сталкиваюсь впервые, пару лет назад делал прозрачное проксирование, но на фряхе и с ipfw и с тех пор как-то сталкиваться с этим не приходилось... В общем цель связки, проксить http-трафик и натить все остальное, помогите, а то я уже неделю над этим сижу, думал сам по манам разобраться, но как-то тяму не хватает...
Добрых дел мастер...

Оффлайн Flyer_SPb

  • Модераторы
  • Старожил
  • *****
  • Сообщений: 967
  • Рейтинг: 25
  • Пол: Мужской
  • Ветеран войны с Kilrathi
    • Просмотр профиля
  • Откуда: 2:5030
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #9 : 27 Сентября 2011, 19:32:26 »
antiroot, очень рекомендую классическую доку: http://www.frozentux.net/documents/iptables-tutorial/
В частности, картинку


Для начала:
надо пропустить нужные пакеты (с учётом того, что они преобразованы в nat PREPOUTING) через filter INPUT и выпустить ответные (удобно с помощью --state ESTABLISHED,RELATED) через filter OUTPUT.

Чтобы понять, что не так с
$IPT -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.5 --dport 80 -j REDIRECT --to-ports 3128
, поразмышляй, откуда и куда пойдут пакеты, и куда их завернуть.

Ещё хинт: для отладки (и не только) удобно пользовать таргет LOG
Также: с ключом -L стОит пользовать ещё -nv, чтобы видеть, на скольких пакетах это правило сработало.

They stole my gun, my beautiful Steltek gun!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #10 : 28 Сентября 2011, 07:20:20 »
Flyer_SPb, спасибо большое за помощь,  с редиректом разобрался еще вчера, а со всем остальным сегодня с утра! Ваши советы очень помогли!  :good:
Добрых дел мастер...

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #11 : 28 Сентября 2011, 07:24:52 »
Выложу получившийся в итоге конфиг, может кому-нибудь в будущем поможет:
#!/bin/sh
IF_INT="eth0"
IF_EXT="eth1"
IPT="/sbin/iptables"

$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

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

$IPT -t nat -A PREROUTING -i $IF_INT -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128

$IPT -A FORWARD -i $IF_INT -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -i $IF_EXT -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -t nat -A POSTROUTING -p tcp -o $IF_EXT -j SNAT --to-source 11.22.33.44

$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $IF_INT -p tcp --dport 3128 -j ACCEPT
$IPT -A INPUT -i $IF_INT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $IF_INT -p icmp -j ACCEPT

$IPT -A OUTPUT -m state --state  NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $IF_INT -p tcp --dport 3128 -m state --state ESTABLISHED,RELATED -j ACCEPT
Как-то так... ::)
Добрых дел мастер...

Оффлайн Flyer_SPb

  • Модераторы
  • Старожил
  • *****
  • Сообщений: 967
  • Рейтинг: 25
  • Пол: Мужской
  • Ветеран войны с Kilrathi
    • Просмотр профиля
  • Откуда: 2:5030
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #12 : 28 Сентября 2011, 09:36:10 »
$IPT -A OUTPUT -m state --state  NEW,ESTABLISHED,RELATED -j ACCEPT
Уж если так (практически, разрешаются _все_ исходящие), то есть ли смысл указывать state?

$IPT -A OUTPUT -o $IF_INT -p tcp --dport 3128 -m state --state ESTABLISHED,RELATED -j ACCEPT
1. Предыдущее правило пропустит пакеты, предполагаемые для этого правила
2. Это правило вообще не будет работать как задумано (подумай на тему --sport и --dport в ответных пакетах).

icmp снаружи тоже надо бы принимать, хотя бы ответы на пинги (type 0) и type3, т.к. именно с icmp на
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
можно полагаться не всегда.
They stole my gun, my beautiful Steltek gun!

Оффлайн antiroot

  • Начинающий
  • *
  • Сообщений: 22
  • Рейтинг: 0
  • Пол: Мужской
    • osipov_ba
    • Просмотр профиля
  • Откуда: Волгоград
IPTABLES+SQUID прозрачный прокси (старая песня)
« Ответ #13 : 28 Сентября 2011, 18:05:11 »
ОК, будет время, допилю все до корректного вида...
Добрых дел мастер...