LINUX.ORG.RU
ФорумAdmin

iptables и множественныек -d


0

0

Собственно есть сервер, на нем скуид. Хочу завернуть весь трафик в скуид, но не трфик, который идет на апач (а так же в свои подсети), стоящий на этом же сервере (т.е. это адреса 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 -m multiport --dport 80,88,8000,8080,8888 -j try_squid_redirect
iptables -A try_squid_redirect -d 10.0.2.0/24 -j RETURN
iptables -A try_squid_redirect -d 192.168.0.0/16 -j RETURN
# ...et cetera
iptables -A try_squid_redirect -j REDIRECT --to-port 3128

bakagaijin
()
Ответ на: комментарий от anonymous

Не вышло :( Сделал вот так:

$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

cz0
() автор топика
Ответ на: комментарий от cz0

Кроме того, что у тебя опечатки в правилах, так ещё и ошибку ты сюда скопировал не от этих правил... Может, всё-таки документацию помучаешь? :-)

Anoxemian ★★★★★
()
Ответ на: комментарий от cz0

1. У тебя в некий момент в try_squid_reditect опечатка вкралась 2. Напихай перед правилами echo, чтобы было понятно, на какой именно строке оно ругается

bakagaijin
()
Ответ на: комментарий от bakagaijin

Ругается он на первую же строчку
$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

anonymous
()
Ответ на: комментарий от anonymous

Ошибка действительно не от этих правил. Дело в том, что в своем скрипте правило try_squid_redirrect обзывается именно так, как в ошибке, но суть от этого не меняется, ни действией -j try_squid_redirect ни -j SQUID_CHAUN емму не зивестно.

anonymous
()
Ответ на: комментарий от anonymous

Блин, ананимус... Ну прочти же ты, наконец, документацию! Нету ключа --dport у модуля multiport. И нету у тебя цепочки try_squid_rediret!

sergio_nsk
()
Ответ на: комментарий от sergio_nsk

Документация внимательнее нужно читать все же Вам, уважаемый sergio_nsk, т.к. опция --dpor у ключа multiport как раз таки есть. Более того, нижеслудующее правило работает замечательно:

$IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -d ! $INET_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j REDIRECT --to-port 3128

anonymous
()
Ответ на: комментарий от cz0

Ты хоть проверяешь что пишешь?

try_squid_redirect, try_squid_rediret, try_squid_resirect

gruy ★★★★★
()
Ответ на: комментарий от cz0

Кстати, ты забываешь указывать везде таблицу nat:

$IPTABLES -t nat -N try_squid_redirect

$IPTABLES -t nat -A try_squid_redirect

gruy ★★★★★
()
Ответ на: комментарий от anonymous

Неуважаемый ананимус, ещё раз повторяю, ни --dpor, ни --dport у модуля mulitport нету. А своими примерами вы уже показывали примеры одних строк и сообщения об ошибках в другим строках. Точно так же нет у меня вам веры вашему утверждению, что работает строчка:

$IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -d ! $INET_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j REDIRECT --to-port 3128

А может, вам надо к окулисту, а не на этот форум?

sergio_nsk
()
Ответ на: комментарий от gruy

"--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 балла за разговор ни о чем: неужели так трудно вставлять копию именно вашего скрипта,
а не какую-то там подправленную ее версию ?
Как можно говорить об ошибках в скрипте, когда не видно что там реально написано ???

spirit ★★★★★
()
Ответ на: комментарий от gruy

Неуважаемый господин 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

# Squid transparent mode $IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j SQUID_REDIRECT $IPTABLES -t nat -A PREROUTING -p UDP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j SQUID_REDIRECT $IPTABLES -t nat -A SQUID_REDIRECT -d $LAN_IP_RANGE -j RETURN $IPTABLES -t nat -A SQUID_REDIRECT -d $VPN_IP_RANGE -j RETURN $IPTABLES -t nat -A SQUID_REDIRECT -d $INET_IP_RANGE -j RETURN $IPTABLES -t nat -A SQUID_REDIRECT -p TCP -j REDIRECT --to-port 3128 $IPTABLES -t nat -A SQUID_REDIRECT -p UDP -j REDIRECT --to-port 3128

Под INET_IP_RANGE в данному случае подразумевается подсеть 10.0.2.0/24 между сервером в dDSL модемом.

cz0
() автор топика
Ответ на: комментарий от cz0

К сожалению возможности отредактировать добавленный после неверной проверки кода текст со сбросившимся "Proformated text" нет, так что доавляю еще раз:

$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 UDP_PACKETS -p UDP -i $VPN_IFACE -s $VPN_IP_RANGE --dport 3128 -j ACCEPT            # SQUID direct access
# Squid transparent mode
$IPTABLES -t nat -A PREROUTING -p TCP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j SQUID_REDIRECT
$IPTABLES -t nat -A PREROUTING -p UDP -i $VPN_IFACE -s $VPN_IP_RANGE -m multiport --dport 80,88,8000,8080,8888 -j SQUID_REDIRECT
$IPTABLES -t nat -A SQUID_REDIRECT -d $LAN_IP_RANGE -j RETURN
$IPTABLES -t nat -A SQUID_REDIRECT -d $VPN_IP_RANGE -j RETURN
$IPTABLES -t nat -A SQUID_REDIRECT -d $INET_IP_RANGE -j RETURN
$IPTABLES -t nat -A SQUID_REDIRECT -p TCP -j REDIRECT --to-port 3128
$IPTABLES -t nat -A SQUID_REDIRECT -p UDP -j REDIRECT --to-port 3128

cz0
() автор топика
Ответ на: комментарий от bakagaijin

Да, я забыл казать, вышепреведенная "полная версия" _РАБОТАЕТ_ на iptables 1.3.5, редиректит с этими портами и не редиректит если трафик идет в локальные подсети.

cz0
() автор топика
Ответ на: комментарий от cz0

[Brainwave receiver engaged]

А policy на INPUT у Вас DROP?

После редиректа трафик направляется в цепочку INPUT, и разрешений на доступ к порту 3128 кроме как для клиентов из ВПН Вы по крайней мере не привели

bakagaijin
()
Ответ на: комментарий от bakagaijin

Да полиси на все DROP. Об этом я как-то и не подумал, если честно. В моем понимании к скуиду должны иметь доступ только клиенты из VPN с интерфейсами ppp+ и соответствующими source адресами. Я что-то пропустил/недоглядел/переборщил?

cz0
() автор топика
Ответ на: комментарий от cz0

Значит, я не понял, что Вас не устраивает в текущей версии.

Политика "редиректит с этими портами и не редиректит если трафик идет в локальные подсети" Вас устраивает?

bakagaijin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.