URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 66274
[ Назад ]

Исходное сообщение
"iptables+squid ---> 127.0.0.1:3128"

Отправлено freeman , 15-Май-06 15:04 
Проблема, как с помощью iptables осуществить прозрачное проксирование HTTP если squid слушает только 127.0.0.1:3128. Во фре без проблем делал правилом типа: "01000 fwd 127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80" а вот в линуксе получается только если squid слушает какой нибудь локальный фейс например 192.168.0.1:3128 тогда правило типа этого срабатывает: "iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128" а вот правило типа этого никак: "iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,8080 -j DNAT --to 127.0.0.1:3128" Возможно ли это осуществить в линуксе?

Содержание

Сообщения в этом обсуждении
"iptables+squid ---> 127.0.0.1:3128"
Отправлено daff , 15-Май-06 16:47 
>Проблема, как с помощью iptables осуществить прозрачное проксирование HTTP если squid слушает
>только 127.0.0.1:3128. Во фре без проблем делал правилом типа: "01000 fwd
>127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80" а вот в линуксе
>получается только если squid слушает какой нибудь локальный фейс например 192.168.0.1:3128
>тогда правило типа этого срабатывает: "iptables -t nat -A PREROUTING -p
>tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128" а вот
>правило типа этого никак: "iptables -t nat -A PREROUTING -p tcp
>-m multiport --dport 80,8080 -j DNAT --to 127.0.0.1:3128" Возможно ли это
>осуществить в линуксе?

насколько я понимаю с какой то версии ядра такое поведение считается аномальным,
смори лог с включенным sysctl -w net.ipv4.conf.all.log_martians=1


"iptables+squid ---> 127.0.0.1:3128"
Отправлено freeman , 15-Май-06 17:04 
>>Проблема, как с помощью iptables осуществить прозрачное проксирование HTTP если squid слушает
>>только 127.0.0.1:3128. Во фре без проблем делал правилом типа: "01000 fwd
>>127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80" а вот в линуксе
>>получается только если squid слушает какой нибудь локальный фейс например 192.168.0.1:3128
>>тогда правило типа этого срабатывает: "iptables -t nat -A PREROUTING -p
>>tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128" а вот
>>правило типа этого никак: "iptables -t nat -A PREROUTING -p tcp
>>-m multiport --dport 80,8080 -j DNAT --to 127.0.0.1:3128" Возможно ли это
>>осуществить в линуксе?
>
>насколько я понимаю с какой то версии ядра такое поведение считается аномальным,
>
>смори лог с включенным sysctl -w net.ipv4.conf.all.log_martians=1


Версия 2.6.16, это можно как нибудь исправить? Интересно почему это считается аномальным?


"iptables+squid ---> 127.0.0.1:3128"
Отправлено daff , 15-Май-06 17:48 
>Версия 2.6.16, это можно как нибудь исправить? Интересно почему это считается аномальным?

насколько я помню нет,
пакет вида a.b.c.d -> 127.0.0.1 пришедший с >внешнего< интерфейса являтеся аномальным по определению,
то DNAT правило пораждает такие пакеты т.к. интерфейс при трансляции адреса не менятся, а tcp/ip стек линукса не делает исключений для транслированных соединений :(

во фре на скока я помню даже nat-а как такового нет fwd на локал адрес это сингал tcp/ip стеку принять соединение на чужой адрес! (поле Local address в netstat выглядит забавно)

вобщем проблему можно попробовать решить так:

iptables -A INPUT -p tcp --dport 3128 -m conntrack --ctstate DNAT -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j REJECT

а если очень хочется на 127.0.0.1 то можно поиратся с чем то вроде

iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 80,8080 -j ROUTE --iif lo

может даже поможет хотя маловероятно


"iptables+squid ---> 127.0.0.1:3128"
Отправлено freeman , 15-Май-06 17:57 
>>Версия 2.6.16, это можно как нибудь исправить? Интересно почему это считается аномальным?
>
>насколько я помню нет,
>пакет вида a.b.c.d -> 127.0.0.1 пришедший с >внешнего< интерфейса являтеся аномальным по определению,
>то DNAT правило пораждает такие пакеты т.к. интерфейс при трансляции адреса не
>менятся, а tcp/ip стек линукса не делает исключений для транслированных соединений
>:(
>
>во фре на скока я помню даже nat-а как такового нет fwd
>на локал адрес это сингал tcp/ip стеку принять соединение на чужой
>адрес! (поле Local address в netstat выглядит забавно)
>
>вобщем проблему можно попробовать решить так:
>
>iptables -A INPUT -p tcp --dport 3128 -m conntrack --ctstate DNAT -j
>ACCEPT
>iptables -A INPUT -p tcp --dport 3128 -j REJECT
>
>а если очень хочется на 127.0.0.1 то можно поиратся с чем то
>вроде
>
>iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 80,8080 -j
>ROUTE --iif lo
>
>может даже поможет хотя маловероятно

да уж... не получается.


"iptables+squid ---> 127.0.0.1:3128"
Отправлено freeman , 15-Май-06 17:26 
>>Проблема, как с помощью iptables осуществить прозрачное проксирование HTTP если squid слушает
>>только 127.0.0.1:3128. Во фре без проблем делал правилом типа: "01000 fwd
>>127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80" а вот в линуксе
>>получается только если squid слушает какой нибудь локальный фейс например 192.168.0.1:3128
>>тогда правило типа этого срабатывает: "iptables -t nat -A PREROUTING -p
>>tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128" а вот
>>правило типа этого никак: "iptables -t nat -A PREROUTING -p tcp
>>-m multiport --dport 80,8080 -j DNAT --to 127.0.0.1:3128" Возможно ли это
>>осуществить в линуксе?
>
>насколько я понимаю с какой то версии ядра такое поведение считается аномальным,
>
>смори лог с включенным sysctl -w net.ipv4.conf.all.log_martians=1


действительно в логах:
May 15 17:19:30 serv2006 martian destination 127.0.0.1 from 192.168.128.10, dev ppp0
а что делать?


"iptables+squid ---> 127.0.0.1:3128"
Отправлено demping , 23-Янв-07 16:31 
>>>Проблема, как с помощью iptables осуществить прозрачное проксирование HTTP если squid слушает
>>>только 127.0.0.1:3128. Во фре без проблем делал правилом типа: "01000 fwd
>>>127.0.0.1,3128 tcp from 192.168.0.0/16 to any 80" а вот в линуксе
>>>получается только если squid слушает какой нибудь локальный фейс например 192.168.0.1:3128
>>>тогда правило типа этого срабатывает: "iptables -t nat -A PREROUTING -p
>>>tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128" а вот
>>>правило типа этого никак: "iptables -t nat -A PREROUTING -p tcp
>>>-m multiport --dport 80,8080 -j DNAT --to 127.0.0.1:3128" Возможно ли это
>>>осуществить в линуксе?
>>
>>насколько я понимаю с какой то версии ядра такое поведение считается аномальным,
>>
>>смори лог с включенным sysctl -w net.ipv4.conf.all.log_martians=1
>
>
>действительно в логах:
>May 15 17:19:30 serv2006 martian destination 127.0.0.1 from 192.168.128.10, dev ppp0
>а что делать?


ifconfig dummy0 127.0.0.2 netmask 255.255.255.0
и пусть squid слушает н.р. 127.0.0.2:3128 (или 1.2.3.4).
туда натить надеюсь можно (сам не проверял).