НАстройки IPtables для Squid

Аватар пользователя goav

Без IPtables squid работает, а как только включаешь фаер то в браузере просто висит соединение типа 0%.Такое ощущение что он вроде как соединяетсяно, но никак не соединиться.

СОДЕРЖИМОЕ ЛОГОВ
ACCESS.LOG
1177408590.468 78 192.168.7.131 TCP_IMS_HIT/304 278 GET http://www.ya.ru/ - NONE/- text/html

STORE.LOG
1177408590.468 RELEASE -1 FFFFFFFF 379FB306FC929A4431948ECF64D7558A 304 1177332598 1168870059 -1 text/html -1/0 GET http://www.ya.ru/

CASHE.LOG
2007/04/24 13:55:40| Preparing for shutdown after 1 requests
2007/04/24 13:55:40| Waiting 30 seconds for active connections to finish
2007/04/24 13:55:40| FD 11 Closing HTTP connection
2007/04/24 13:55:40| Closing Pinger socket on FD 13
2007/04/24 13:55:42| Shutting down...
2007/04/24 13:55:42| FD 12 Closing ICP connection
2007/04/24 13:55:42| Closing unlinkd pipe on FD 9
2007/04/24 13:55:42| storeDirWriteCleanLogs: Starting...
2007/04/24 13:55:42| Finished. Wrote 11 entries.
2007/04/24 13:55:42| Took 0.0 seconds (6984.1 entries/sec).
CPU Usage: 0.402 seconds = 0.257 user + 0.145 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Memory usage for squid via mallinfo():
total space in arena: 2120 KB
Ordinary blocks: 2047 KB 24 blks
Small blocks: 0 KB 6 blks
Holding blocks: 200 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 72 KB
Total in use: 2247 KB 106%
Total free: 72 KB 3%
2007/04/24 13:55:42| Squid Cache (Version 2.5.STABLE6): Exiting normally.
2007/04/24 13:55:43| Starting Squid Cache version 2.5.STABLE6 for i386-redhat-linux-gnu...
2007/04/24 13:55:43| Process ID 8533
2007/04/24 13:55:43| With 1024 file descriptors available
2007/04/24 13:55:43| DNS Socket created at 0.0.0.0, port 32849, FD 4
2007/04/24 13:55:43| Adding nameserver 212.X.X.X from squid.conf
2007/04/24 13:55:43| Adding nameserver 212.X.X.X from squid.conf
2007/04/24 13:55:43| User-Agent logging is disabled.
2007/04/24 13:55:43| Referer logging is disabled.
2007/04/24 13:55:43| Unlinkd pipe opened on FD 9
2007/04/24 13:55:43| Swap maxSize 1024000 KB, estimated 78769 objects
2007/04/24 13:55:43| Target number of buckets: 3938
2007/04/24 13:55:43| Using 8192 Store buckets
2007/04/24 13:55:43| Max Mem size: 32768 KB
2007/04/24 13:55:43| Max Swap size: 1024000 KB
2007/04/24 13:55:43| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2007/04/24 13:55:43| Rebuilding storage in /var/spool/squid (CLEAN)
2007/04/24 13:55:43| Using Least Load store dir selection
2007/04/24 13:55:43| Set Current Directory to /var/spool/squid
2007/04/24 13:55:43| Loaded Icons.
2007/04/24 13:55:43| Accepting HTTP connections at 0.0.0.0, port 3128, FD 11.
2007/04/24 13:55:43| Accepting ICP messages at 0.0.0.0, port 3130, FD 12.
2007/04/24 13:55:43| WCCP Disabled.
2007/04/24 13:55:43| Pinger socket opened on FD 14
2007/04/24 13:55:43| Ready to serve requests.
2007/04/24 13:55:43| Done reading /var/spool/squid swaplog (11 entries)
2007/04/24 13:55:43| Finished rebuilding storage from disk.
2007/04/24 13:55:43| 11 Entries scanned
2007/04/24 13:55:43| 0 Invalid entries.
2007/04/24 13:55:43| 0 With invalid flags.
2007/04/24 13:55:43| 11 Objects loaded.
2007/04/24 13:55:43| 0 Objects expired.
2007/04/24 13:55:43| 0 Objects cancelled.
2007/04/24 13:55:43| 0 Duplicate URLs purged.
2007/04/24 13:55:43| 0 Swapfile clashes avoided.
2007/04/24 13:55:43| Took 0.4 seconds ( 24.7 objects/sec).
2007/04/24 13:55:43| Beginning Validation Procedure
2007/04/24 13:55:43| Completed Validation Procedure
2007/04/24 13:55:43| Validated 11 Entries
2007/04/24 13:55:43| store_swap_size = 52k
2007/04/24 13:55:44| storeLateRelease: released 0 objects

Что нужно разрешить в Iptables для работы squid

#!/bin/bash

iptables="/sbin/iptables"

$iptables -F
$iptables -X
$iptables -t nat -F

$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

#INPUT цепочка
$iptables -A INPUT -m state --state ESTABLISHED,RELATED
$iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
$iptables -A INPUT -p icmp -j ACCEPT
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A INPUT -p tcp --sport 80 -j ACCEPT
$iptables -A INPUT -p udp --dport 53 -j ACCEPT
$iptables -A INPUT -p tcp --dport 53 -j ACCEPT
$iptables -A INPUT -p udp -i eth1 --sport 137 -j ACCEPT
$iptables -A INPUT -p tcp -i eth1 -m multiport --sport 445,139 -j ACCEPT
$iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

#FORWARD цепочка

$iptables -A FORWARD -p icmp -j ACCEPT

#OUTPUT цепочка
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED
$iptables -A OUTPUT -d 127.0.0.1/24 -j ACCEPT
$iptables -A OUTPUT -p icmp -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
$iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p udp -o eth1 --dport 137 -j ACCEPT
$iptables -A OUTPUT -p tcp -o eth1 -m multiport --dport 445,139 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT

#ТАБЛИЦА NAT

#POSTROUTING
$iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 212.x.X.x
#PREROUTING
$iptables -t nat -A PREROUTING -i eth1 -s 192.168.7.131 -p tcp --dport 80 -j REDIRECT --to-port 3128

Аватар пользователя Meloman

НАстройки IPtables для Squid

goav писал(а):
1177408590.468 78 192.168.7.131 TCP_IMS_HIT/304 278 GET http://www.ya.ru/ - NONE/- text/html

Вроде как сквид не может определить днс. Попробуйте отключить сквид, подключиться к инету, включить сквид.
И еще. Очень трудно догадаться, но: зачем nat? Такая строгая необходимость? Я бы начал проверку с nat'a - отключил бы сперва его.
И еще куча вопросов о сетке: компы друг друга видят, с этим все нормально? На каком компе соединение не идет? На всех в сети? Даже из сервера?

Аватар пользователя goav

НАстройки IPtables для Squid

1 Врооде как сквид не может определить днс.

Что сделать чтобы определил ДНС?

2Попробуйте отключить сквид, подключиться к инету, включить сквид.

Инет идет по отдельному проводу прям к сетевухе так что он всегда есть.

3 И еще. Очень трудно догадаться, но: зачем nat? Такая строгая необходимость? Я бы начал проверку с nat'a - отключил бы сперва его.

Я не знаю как без NATa
Snat -использование единственного реального IP адреса несколькими компьютерами для выходы в Инетрнет

4И еще куча вопросов о сетке: компы друг друга видят, с этим все нормально? На каком компе соединение не идет? На всех в сети? Даже из сервера?

Компы др др видят, соединение через форвад идет на всех компах, а через SQUID нигде.
Если делать ФОРВАД, то всё прекрасно работает
И если выключить iptables через squid тоже всё работает.

Аватар пользователя Meloman

Re: НАстройки IPtables для Squid

goav писал(а):
Что сделать чтобы определил ДНС?

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

goav писал(а):
использование единственного реального IP адреса несколькими компьютерами для выходы в Инетрнет

Я NAT использовал только для того, что бы дать доступ к почте. В остальном же сквид вполне справлялся.
Отвлеченный вопрос: Вы статью читали? Обратите внимание на порты 32768:65535. Сейчас по-внимательнее посмотрел Ваши настройки iptables - что-то не вижу, где Вы объявляете маскард (подробнее). Объяснять эту статью не буду (сам не знаю почему), лучше самому прочесть и применить на практике.
Ну, а если хотите, могу дать два нехороших совета.
1) Как я открывал почту на другом компе

Цитата:
[root@meloman log]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
[root@meloman log]# iptables -P FORWARD DROP
[root@meloman log]# iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
[root@meloman log]# iptables -A FORWARD -p tcp --dport 110 -i eth0 -j ACCEPT
[root@meloman log]# iptables -A FORWARD -p tcp --dport 25 -i eth0 -j ACCEPT

Пользоваться этим не нужно. Это всего-навсего небольшая иллюстрация к статье, которую необходимо прочесть.
2)

Цитата:
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -F -t nat

Почему плохой совет? Потому, что после этого исчезнут все правила для firewall но зато появится форвард. Правда- для абсолютно ВСЕХ. Поэтому от firewall'a у Вас останется простое название (Как Вы пониматее, это тоже- иллюстрация к статье).
Пы.Сы.
eth0 и ppp0 - это все го лишь мои частные случаи, которые от Ваших, вероятно, отличаются.

Аватар пользователя IsakovAN

Re: НАстройки IPtables для Squid

goav писал(а):
#PREROUTING
$iptables -t nat -A PREROUTING -i eth1 -s 192.168.7.131 -p tcp --dport 80 -j REDIRECT --to-port 3128

А как это по вашему должно работать??? Если пакет уходит в инет на порт 80, заменить порт на 3128, но НЕ менять IP назначения?!
Надо по другому:
iptables -t nat -A PREROUTING -s 192.168.7.131 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
И squid перевесить на этот порт.

Аватар пользователя IsakovAN

Re: НАстройки IPtables для Squid

Meloman писал(а):
[root@meloman log]# iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
[root@meloman log]# iptables -A FORWARD -p tcp --dport 110 -i eth0 -j ACCEPT
[root@meloman log]# iptables -A FORWARD -p tcp --dport 25 -i eth0 -j ACCEPT

И что, работает? Улыбка
Что по вашему делает первое правило? Оно пропускает не только пакеты для всех существующих соединений и связанных с ними, но и РАЗРЕШАЕТ ВСЕ ВХОДЯЩИЕ СОЕДИНЕНИЯ(NEW).
Вывод: следующие два правила ничего не дают! Суть фильтрации-то теряется.

Аватар пользователя goav

Re: НАстройки IPtables для Squid

Вы меня запутали.

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

НА сколько я понял надо следующее (дополните или поправьте)
#!/bin/bash

iptables="/sbin/iptables"

$iptables -F
$iptables -X
$iptables -t nat -F

$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

$iptables -A INPUT -m state --state ESTABLISHED,RELATED
$iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
$iptables -A INPUT -p udp --dport 53 -j ACCEPT
$iptables -A INPUT -p tcp --dport 53 -j ACCEPT
$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

#OUTPUT цепочка
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED
$iptables -A OUTPUT -d 127.0.0.1/24 -j ACCEPT
$iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 32768:65535 -j ACCEPT
$iptables -A OUTPUT -p udp --sport 32768:65535 -j ACCEPT

Для прозрачного режима надо
добавить перехват пакетов порта 80 из локальной сети
$iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 #где eth1 сетвуха смотрящая в лок сеть

Аватар пользователя Meloman

НАстройки IPtables для Squid

На первый взгяд все правильно.

Аватар пользователя goav

Re: НАстройки IPtables для Squid

И всё таки с этими правила Squid не пролазеет в инет, а при выключенном iptables всё нормально.
Что-то где-то упустили!

Аватар пользователя Meloman

НАстройки IPtables для Squid

Еще раз :

Цитата:
Часть II
Настройка для работы приложений-клиентов в сети Интернет.
...

(и выше, кстати) это у Вас есть?

Аватар пользователя goav

Re: НАстройки IPtables для Squid

НУ вроде всё есть
1Внутренний интерфейс разрешён
2 Пакеты Эстаблишед и релетед разрешены
3 порты доя прокси и для веб разрешены
4 непрелигированные порты для клиентских приложений разрешены
5 порты днс разрешены
6 icmp разрешено

Чё ему не хвататет

Аватар пользователя IsakovAN

Re: НАстройки IPtables для Squid

goav писал(а):
$iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT
$iptables -A OUTPUT -p tcp --sport 32768:65535 -j ACCEPT
$iptables -A OUTPUT -p udp --sport 32768:65535 -j ACCEPT

sport надо заменить на dport ибо БРЕД!!! Сами подумайте что написали! Улыбка

goav писал(а):
$iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 #где eth1 сетвуха

Я же вам написал, что замена порта ничего не даст! Надо DNATом перенаправлять пакеты на свой комп:
iptables -t nat -A PREROUTING -s 192.168.7.131 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1
И на 80тый порт повесить squid.

Что непонятного?

Аватар пользователя goav

Re: НАстройки IPtables для Squid

Вообщем всем большое спасибо !
Заработало всё вот с таким набором правил почему-то!

$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

#INPUT цепочка
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A INPUT -i lo -j ACCEPT #разрешить внутренний интерфейс
$iptables -A INPUT -p icmp -j ACCEPT #разрешить пинг
$iptables -A INPUT -p tcp -i eth1 --dport 3128 -j ACCEPT #Squid

#OUTPUT цепочка
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
$iptables -A OUTPUT -p icmp -j ACCEPT # Разрешаем пинг
$iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT #Доступ к web
$iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

RSS-материал