Собственно есть сервер, на нем скуид. Хочу завернуть весь трафик в скуид, но не трфик, который идет на апач (а так же в свои подсети), стоящий на этом же сервере (т.е. это адреса 192.168.0.0/24 из локалки, 10.0.1.0/24 из VPN подсети и так же 10.0.2.0 подсеть т.к. в ней находится web управляемый маршрутизатор)ю Не знаю как бы сделать множемтвенные -d. Если написать -d ! 10.0.2.0/24,10.0.1.0/24,192.168.0.0/24 - то ругается, что и понятно. Вот так удалось исключить 10.0.2.0 подсеть:
$IPTABLES -t nat -A PREROUTING -p TCP -s $VPN_IP_RANGE -d ! 10.0.2.0/24 -m multiport --dport 80,88,8000,8080,8888 -j REDIRECT --to-port 3128
Т.е. надо как-то добвать к 10.0.2.0 еще и 10.0.1.0 и 192.168.0.0 сети.
Не вышло :( Сделал вот так:
$IPTABLES -N try_squid_redirect
$IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j try_squid_rediret
$IPTABLES -t nat -A PREROUTING -p UDP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j try_squid_rediret
$IPTABLES -A try_squid_resirect -d $LAN_IP_RANGE -j RETURN
$IPTABLES -A try_squid_resirect -d $VPN_IP_RANGE -j RETURN
$IPTABLES -A try_squid_resirect -d $INET_IP_RANGE -j RETURN
$IPTABLES -A try_squid_resirect -j REDIRECT --to-port 3128
А он мне в ответ:
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `SQUID_CHAIN':/lib/iptables/libipt_SQUID_CHAIN.so: cannot open shared object file: No such file or directory
1. У тебя в некий момент в try_squid_reditect опечатка вкралась
2. Напихай перед правилами echo, чтобы было понятно, на какой именно строке оно ругается
Ругается он на первую же строчку
$IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j try_squid_rediret
Ошибка действительно не от этих правил. Дело в том, что в своем скрипте правило try_squid_redirrect обзывается именно так, как в ошибке, но суть от этого не меняется, ни действией -j try_squid_redirect ни -j SQUID_CHAUN емму не зивестно.
Документация внимательнее нужно читать все же Вам, уважаемый sergio_nsk, т.к. опция --dpor у ключа multiport как раз таки есть.
Более того, нижеслудующее правило работает замечательно:
Неуважаемый ананимус, ещё раз повторяю, ни --dpor, ни --dport у модуля mulitport нету. А своими примерами вы уже показывали примеры одних строк и сообщения об ошибках в другим строках. Точно так же нет у меня вам веры вашему утверждению, что работает строчка:
"--dport" нет, есть во множественном числе - "--dports"
# iptables -m multiport --help|tail
multiport v1.3.5 options:
--source-ports [!] port[,port:port,port...]
--sports ...
match source port(s)
--destination-ports [!] port[,port:port,port...]
--dports ...
match destination port(s)
--ports [!] port[,port:port,port]
match both source and destination port(s)
Автору обсуждения - 2 балла за разговор ни о чем: неужели так трудно вставлять копию именно вашего скрипта,
а не какую-то там подправленную ее версию ?
Как можно говорить об ошибках в скрипте, когда не видно что там реально написано ???
Неуважаемый господин sergio_nsk, искренне советую вам заглянуть в туториал http://gazette.linux.ru.net/rus/articles/iptables-tutorial.html и, предварительно обратившись к окулисту, внимательно присмотреться к пункту "6.4.3.4. Критерий Multiport", вот как раз критерия "--dports" там нет нигде. Более того, советую вам не ограничиваться прочтением этого туториала, а попробовать ввести у себя команду
iptables -A INPUT -p TCP -m multiport --dport 11,22,33 -j DROP
и возможно тогда вы поймете, что iptables проглатывают её ровно с таким же успехом, как и
iptables -A INPUT -p TCP -m multiport --dports 11,22,33 -j DROP
А раздавать советы налево и направо - кому куда сходить - это мы все гаразды. Если бы вы удосужились проверить, работает ли этот злополучный --dport перед тем как столь критично утвержать что такого критерия нет - вопзможно сейчас бы не было бы этого флэйма.
А действительно дельные коментарии дал увожаемый госодин gruy, потому как после
$IPTABLES -t nat -N SQUID_REDIRECT
С именно "-t nat" оно и заработало, конечный вариант выглядит так:
$IPTABLES -t nat -N SQUID_REDIRECT
$IPTABLES -A TCP_PACKETS -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE --dport 3128 -j ACCEPT # SQUID direct access
$IPTABLES -A TCP_PACKETS -p UDP -i $VPN_IFACE -s $VPN_IP_RANGE --dport 3128 -j ACCEPT # SQUID direct access
Да, я забыл казать, вышепреведенная "полная версия" _РАБОТАЕТ_ на iptables 1.3.5, редиректит с этими портами и не редиректит если трафик идет в локальные подсети.
Да полиси на все DROP. Об этом я как-то и не подумал, если честно. В моем понимании к скуиду должны иметь доступ только клиенты из VPN с интерфейсами ppp+ и соответствующими source адресами. Я что-то пропустил/недоглядел/переборщил?