iptables + squid не могу разобраться

Форум предназначен для новичков. В нем предполагается рассматривать вопросы, которые встают на первых этапах освоения Linux
Аватара пользователя
SemKA
Заглянувший
Сообщения: 13
Зарегистрирован: 18 янв 2006, 23:41
Контактная информация:

iptables + squid не могу разобраться

Сообщение SemKA »

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

проблема вот какая, есть шлюз:
eth0 - 192.168.0.204 (смотрит в сторону другого шлюза и там инет)
eth1 - 10.50.0.1 (внутреняя сеть)

есть задумка организовать NAT, SQUID (прозрачный), возможно DHCP
SQUID настроен
DHCP пока отключён.
осталось разобраться с iptables, и тут то как раз не могу разобраться.

Код: Выделить всё

*nat
:PREROUTING ACCEPT [267:25908]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [38:2072]
-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -s 10.0.0.0/255.0.0.0 -j SNAT --to-source 10.50.0.1

*filter
:INPUT ACCEPT [164:18324]
:FORWARD ACCEPT [58:7324]
:OUTPUT ACCEPT [34:1824]
и вот что тут, через 3128 бегаю по HTTP/HTTPS а вот через 80 нет =(
не подскажите что тут изменить и добавить?
и ещё я так полагаю что по правилам лучше делать так,

Код: Выделить всё

*filter
:INPUT DROP [164:18324]
:FORWARD DROP [58:7324]
:OUTPUT DROP [34:1824]
но я не знаю пока какие там правила надо писать.

P.S. и в догонку ещё вопрос о SQUID. В инете лежит много материала в котором описывают как
настроить SQUID в качестве прозрачного и вот указывается такая опция

Код: Выделить всё

httpd_accel_port 80
нужна ли она если я организую через iptables редирект на 3128?

P.P.S. Дистрибутив: Mandriva 2005 (10.2) [kernel 2.6.11-6mdk], iptables v1.2.9

Аватара пользователя
kae
Неотъемлемая часть форума
Сообщения: 318
Зарегистрирован: 26 янв 2003, 03:53
Откуда: Дзержинск, РБ.
Контактная информация:

Сообщение kae »

1. Для прозрачного прокси нужно:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on

при этом нужен редирект на порт, на котором сквид принимает запросы . По умолчанию это 3128 (при желании можно изменить, но зачем?)

2. Если шлюз находится в приватной сети (192.168.x.y), то, очевидно он уже делает NAT или маскарад. Зачем это тебе делать еще раз? Настроить маршрутизацию и усё. Ну, на крайняк, если в той сетке (192.168.0.) не принимают из твоей (10.50. ), то сделать SNAT --to-source192.168.0.204

ЗЫ: Кстати, http://www.asmodeus.com.ua/library/soft ... squid2.htm
Будем же учиться хорошо мыслить — вот основной принцип морали
— Паскаль

Аватара пользователя
SemKA
Заглянувший
Сообщения: 13
Зарегистрирован: 18 янв 2006, 23:41
Контактная информация:

Сообщение SemKA »

при этом нужен редирект на порт, на котором сквид принимает запросы . По умолчанию это 3128 (при желании можно изменить, но зачем?)
да, я так и сделал, но не пашет через 80-й порт, а через 3128 всё тип-топ

Код: Выделить всё

-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128 
Если шлюз находится в приватной сети (192.168.x.y), то, очевидно он уже делает NAT или маскарад. Зачем это тебе делать еще раз?
вот это честно говоря не понял (я только учусь :( ), но на всяк случай опишу структуру
internet --- (X.X.X.X) gateway (192.168.0.1) --- (192.168.0.204) gateway (10.50.0.1) --- (10.50.0.X) компы
Ну, на крайняк, если в той сетке (192.168.0.) не принимают из твоей (10.50. ), то сделать SNAT --to-source192.168.0.204
ага, то есть не тот адресок я прописал, завтра попробую, спасибо!
и спасибо за ссылку на squid, уже изучаю :wink:

Аватара пользователя
kae
Неотъемлемая часть форума
Сообщения: 318
Зарегистрирован: 26 янв 2003, 03:53
Откуда: Дзержинск, РБ.
Контактная информация:

Сообщение kae »

SemKA писал(а):...да, я так и сделал, но не пашет через 80-й порт, а через 3128 всё тип-топ

Код: Выделить всё

-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128 
Все правильно, так и должно быть, а порт 80 относится к режиму http-акселератора, а не прокси.
SemKA писал(а): но на всяк случай опишу структуру
internet --- (X.X.X.X) gateway (192.168.0.1) --- (192.168.0.204) gateway (10.50.0.1) --- (10.50.0.X) компы
Дело в том, что адреса 192.168.*.* и 10.*.*.* - это спец диапазон для локальных сетей и в Инете не маршрутизируются (это "серые" или "private" адреса). Реальный адрес имеет (наверное) другой шлюз (192.168.0.1), и пакеты в инет длжны уходить, имея "на борту" обратный адрес этого шлюза. Значит он обязан делать SNAT, иначе не получит ответы для компов из локалки.
SemKA писал(а):
Ну, на крайняк, если в той сетке (192.168.0.) не принимают из твоей (10.50. ), то сделать SNAT --to-source192.168.0.204
ага, то есть не тот адресок я прописал, завтра попробую, спасибо!
и спасибо за ссылку на squid, уже изучаю :wink:
Кстати, это нужно сделать или на шлюзе (192.168.0.1) прописать твой адрес (192.168.0.204) как шлюз для сетки 10.50.0.0, иначе тот комп (192.168.0.1) не будет знать, куда слать пакеты для твоей сетки. (Я на это как-то не обратил внимания сразу... )
Будем же учиться хорошо мыслить — вот основной принцип морали
— Паскаль

Аватара пользователя
SemKA
Заглянувший
Сообщения: 13
Зарегистрирован: 18 янв 2006, 23:41
Контактная информация:

Сообщение SemKA »

Ура! заработало спасибо за помощь! :) сейчас через проксю пишу.
как и было сказано, всё поправил

Код: Выделить всё

*nat
...
-A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -s 10.0.0.0/255.0.0.0 -j SNAT --to-source 192.168.0.204
и сделал следующие правила

Код: Выделить всё

*filter
:INPUT DROP [164:18324]
:FORWARD DROP [58:7324]
:OUTPUT DROP [34:1824]

-A INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT
-A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -i eth1 -p udp --dport 53 -j ACCEPT
-A FORWARD -i eth1 -p tcp -m multiport --dport 443,5190 -s 10.0.0.0/255.0.0.0 -j ACCEPT
-A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

-A OUTPUT -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
Кстати, это нужно сделать или на шлюзе (192.168.0.1) прописать твой адрес (192.168.0.204) как шлюз для сетки 10.50.0.0, иначе тот комп (192.168.0.1) не будет знать, куда слать пакеты для твоей сетки. (Я на это как-то не обратил внимания сразу... )
не, там шлюз работает как часы, это ещё до меня настраивалось.

так что всё супер, жизнь налаживается :) осталось ещё попробовать https через проксю пустить, и с icmp разобраться.
P.S. Хотя если есть какие-нибудь замечания, с удовольствием выслушаю и приму к сведению.
P.P.S. вот блин, после того как шлюз немного поработает при ребуте/выключении named всё стопорит. будем рыть.

Аватара пользователя
kae
Неотъемлемая часть форума
Сообщения: 318
Зарегистрирован: 26 янв 2003, 03:53
Откуда: Дзержинск, РБ.
Контактная информация:

Сообщение kae »

С ICMP можно так:

Код: Выделить всё

/sbin/iptables -A INPUT -p icmp --icmp-type 5 -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type 13/255 -j DROP

/sbin/iptables -A FORWARD -p icmp --icmp-type 5 -j DROP
/sbin/iptables -A FORWARD -p icmp --icmp-type 13/255 -j DROP

# Все прочие ICMP разрешаем
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A FORWARD -p icmp -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -j ACCEPT
А можно и такое добавить:

Код: Выделить всё

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Типа "защита от ping of death", хотя имхо это их области мифологии...
Будем же учиться хорошо мыслить — вот основной принцип морали
— Паскаль

Аватара пользователя
SemKA
Заглянувший
Сообщения: 13
Зарегистрирован: 18 янв 2006, 23:41
Контактная информация:

Сообщение SemKA »

пока вроде всё работает (тьфу-тьфу-тьфу) :D но выявилась вот какая проблема, при загрузке сервак не загружает мои правила в iptables а загружает свои какие то дефолтовые. как только я делаю
# service iptables restart
то всё нормально загружаются мои правила. как бы это автоматизаровать, что бы при старте сервака сразу загружались мои правила?

P.S. в /etc/rc.d/init.d/iptables переменная IPTABLES_CONFIG содержит правильный путь к файлу с правилами iptables.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

SemKA, посмотрите в init.d - может там какой firewall есть ? + Носмотрите в самом mandrake - может там есть что-то на эту тему. Я думаю, имеет место быть некий user-frendly firewall.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
SemKA
Заглянувший
Сообщения: 13
Зарегистрирован: 18 янв 2006, 23:41
Контактная информация:

Сообщение SemKA »

пока нашёл такое решение:
пропишите в файл /etc/rc.d/rc.local две строки:

Код: Выделить всё

modprobe iptable_filter
iptables-restore /root/sysconfig/iptables
источник.

работает, но всё же продолжаются поиски на тему "а почему само не хочет?" :wink:

Ответить