LinuxForum.Fans
Тема

Вопрос по iptables

Автор: Cruiser78 3 сообщений 1731 просмотров
#48302

Привет всем!

Нужна небольшая помощь. А именно в настройке iptables. Или как закрутить гайку.

Дано:
1. сеть небольшой фирмы в которой все компьютеры имеют неограниченнный выход в интернет.
2. в этой сети есть _несколько_ технологических компьютеров, выход в инет с которых надо ограничить только _несколькими_ сайтами.
3. Шлюз - федора+squid.

Принимаю решение крутить гайку на iptables, так как его правила отрабатывают раньше сквидовых.
Пишу следующий код:

text

for i in $LOCAL_TORGS
do
 for j in $TORG_PLACES
 do
  $IPT -t nat -A PREROUTING -s $i -d $j -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
  $IPT -A FORWARD -s $i -d $j -p tcp -m multiport --destination-port 443,5190 -j ACCEPT
  $IPT -A FORWARD -s $i -d $j -p icmp -j ACCEPT
 done
#-------------------------------------------------------------
 $IPT -t nat -A PREROUTING -s $i -p tcp -m multiport --dport 80 -j DROP
#-------------------------------------------------------------
 $IPT -A FORWARD -s $i -j DROP
done
########## Перенаправляем 80й порт всего остального на squid ########################
$IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128

То есть перенаправляю явно на сквид трафик с выделенных хостов только на выделенные сайты. А весь остальной трафик с выделенных хостов пытаюсь сбросить. Увы, но если написать так, как приведено выше (отмечено комментом #-------), то iptables ругается следующим образом

text

The "nat" table is not intended for filtering, the use of DROP is therefore inhibited

И правило не подхватывает. Если убрать из правила "--t nut", то правило подхватывается, но... В результате отрабатывает следующее правило, "всем перераправить на squid" и разрешает перенаправление и моим выделенным хостам.

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

#48343

ИМХО лучше исправить сам подход к решению с учетом того, что squid может фильтровать доступ к сайтам в зависимости от url regexp и ip, с которого идет обращение на squid.
А $IPT -t nat -A PREROUTING -s $i -p tcp -m multiport --dport 80 -j DROP не верно, потому что -j DROP не работает в nat.

#48592
Macumazan написал:
ИМХО лучше исправить сам подход к решению с учетом того, что squid может фильтровать доступ к сайтам в зависимости от url regexp и ip, с которого идет обращение на squid.
А $IPT -t nat -A PREROUTING -s $i -p tcp -m multiport --dport 80 -j DROP не верно, потому что -j DROP не работает в nat.

Про фильтацию в сквиде я знаю. Но это - не спортивно. :-) А вот как отфильтровать в iptables такое дело? Причем фильтровать надо на уровне PREROUTING'а, так как именно на нем происходит заворот на сквид.

Войдите или зарегистрируйтесь, чтобы ответить.