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

Исходное сообщение
"squid: cache_peer совместно с tcp_outgoing_address"

Отправлено ALex_hha , 22-Апр-13 02:38 
Итак есть связка из двух прокси. главный squid запущен в transparent режиме. Пакеты заварачиваются через iptables + DNAT. У данного сквида указан cache_peer

cache_peer 192.168.220.2 sibling 3128 3130

И правила, по которым необходимо обращаться к соседу


acl AMAZON dstdom_regex -i (.*)s3\.amazonaws\.com
cache_peer_access 192.168.220.2 allow AMAZON

acl RACKSPACE dstdom_regex -i (.*)rackcdn\.com
cache_peer_access 192.168.220.2 allow RACKSPACE

И все классно работает, до тех пор пока я на основном сквиде не задаю параметр tcp_outgoing_address. Как только я там прописываю один из внеш ip адресов, то в логах я получаю ошибку и закачка после задержки 5-7 секунд начинается напрямую.


2013/04/22 00:26:58| TCP connection to 192.168.220.2/3128 failed

Собственно как победить данную проблему?


Содержание

Сообщения в этом обсуждении
"squid: cache_peer совместно с tcp_outgoing_address"
Отправлено PavelR , 22-Апр-13 09:33 

> И все классно работает, до тех пор пока я на основном сквиде
> не задаю параметр tcp_outgoing_address.
> Собственно как победить данную проблему?

1) Если всё классно работает, то зачем что-то менять :-)
1.1) Особенно, зачем прописывать внешний IP для доступа к внутреннему вышестоящему прокси
1.2) Пропиши правильную маршрутизацию в ip ru
1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси
2) Разъясни еще раз, что есть основной сквид, что не основной, где что прописывается, а то твоя терминология - она у тебя в голове и только тебе понятна, ИМХО.


"squid: cache_peer совместно с tcp_outgoing_address"
Отправлено ALex_hha , 22-Апр-13 10:01 
>> И все классно работает, до тех пор пока я на основном сквиде
>> не задаю параметр tcp_outgoing_address.
>> Собственно как победить данную проблему?
> 1) Если всё классно работает, то зачем что-то менять :-)
> 1.1) Особенно, зачем прописывать внешний IP для доступа к внутреннему вышестоящему прокси

tcp_outgoing_address используется для маршрутизации трафика по соотв каналу в соотв с правилами в ip ru sh

> 1.2) Пропиши правильную маршрутизацию в ip ru

правильную это какую? На данный момент правила следующие


# ip ru sh
0:      from all lookup local
1000:   from all fwmark 0x3e8 lookup ISP1
2000:   from all fwmark 0x7d0 lookup ISP2
3011:   from all fwmark 0xbc3 lookup ISP3
32762:  from xxx.xxx.xxx.xxx lookup ISP1
32763:  from yyy.yyy.yyy.yyy lookup ISP2
32764:  from zzz.zzz.zzz.zzz lookup ISP3
32765:  from all lookup main
32767:  from all lookup default

> 1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси

пробовал так

acl squid_sibling dst 192.168.220.2
tcp_outgoing_address 192.168.220.1 squid_sibling

не помогает, ошибка та же. Может имеет значение порядок описания tcp_outgoing_address  в squid.conf?

> 2) Разъясни еще раз, что есть основной сквид, что не основной, где
> что прописывается, а то твоя терминология - она у тебя в
> голове и только тебе понятна, ИМХО.

как то так - http://i.piccy.info/i7/67e000ae268a9c8d8ad7a71ea67f3fdc/4-57...

основной squid стоит на дефолтном шлюзе, с соседом соединяется напрямую витой парой. У соседа свой выделенный канал.


"squid: cache_peer совместно с tcp_outgoing_address"
Отправлено PavelR , 22-Апр-13 11:25 

>[оверквотинг удален]
> 0:      from all lookup local
> 1000:   from all fwmark 0x3e8 lookup ISP1
> 2000:   from all fwmark 0x7d0 lookup ISP2
> 3011:   from all fwmark 0xbc3 lookup ISP3
> 32762:  from xxx.xxx.xxx.xxx lookup ISP1
> 32763:  from yyy.yyy.yyy.yyy lookup ISP2
> 32764:  from zzz.zzz.zzz.zzz lookup ISP3
> 32765:  from all lookup main
> 32767:  from all lookup default
>

кроме правил, важно еще и то, что у тебя в ISP\d

Правильную - это такую:

http://www.opennet.me/tips/2009_policy_route_linux.shtml

как у тебя трафик с xxx.x.x.x.x.x найдет путь к серверу в локалке, если ты его на провайдера отправляешь?

>> 1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси
> пробовал так
> acl squid_sibling dst 192.168.220.2
> tcp_outgoing_address 192.168.220.1 squid_sibling

и не должно помочь, с какого перепугу dst внезапно стало 220.2, если это .amazonaws\.com или rackcdn\.com ?

> не помогает, ошибка та же. Может имеет значение порядок описания tcp_outgoing_address  
> в squid.conf?

конечно имеет.



"squid: cache_peer совместно с tcp_outgoing_address"
Отправлено ALex_hha , 22-Апр-13 13:46 
>[оверквотинг удален]
>> 1000:   from all fwmark 0x3e8 lookup ISP1
>> 2000:   from all fwmark 0x7d0 lookup ISP2
>> 3011:   from all fwmark 0xbc3 lookup ISP3
>> 32762:  from xxx.xxx.xxx.xxx lookup ISP1
>> 32763:  from yyy.yyy.yyy.yyy lookup ISP2
>> 32764:  from zzz.zzz.zzz.zzz lookup ISP3
>> 32765:  from all lookup main
>> 32767:  from all lookup default
>>
> кроме правил, важно еще и то, что у тебя в ISP\d

в ISP шлюз провайдера

# ip ro sh table ISP1
xxx.xxx.xxx.xxx/30 dev bond1.1000  scope link  src xxx.xxx.xxx.xxx
default via xxx.xxx.xxx.254 dev bond1.1000

> Правильную - это такую:
> http://www.opennet.me/tips/2009_policy_route_linux.shtml
> как у тебя трафик с xxx.x.x.x.x.x найдет путь к серверу в локалке,
> если ты его на провайдера отправляешь?
>>> 1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси
>> пробовал так
>> acl squid_sibling dst 192.168.220.2
>> tcp_outgoing_address 192.168.220.1 squid_sibling
> и не должно помочь, с какого перепугу dst внезапно стало 220.2, если
> это .amazonaws\.com или rackcdn\.com ?

потому что на amazon и rackcdn у меня есть ACL

cache_peer_access 192.168.220.2 allow AMAZON
cache_peer_access 192.168.220.2 allow RACKCDN

и на эти домены обращение будет через 220.2. Или я что то не так понял?

>> не помогает, ошибка та же. Может имеет значение порядок описания tcp_outgoing_address
>> в squid.conf?
> конечно имеет.

тогда понятно, у меня первым стояло

tcp_outgoing_address xxx.xxx.xxx.xxx local_net

где local_net это 192.168.0.0/16


"squid: cache_peer совместно с tcp_outgoing_address"
Отправлено ALex_hha , 17-Май-13 15:20 
>[оверквотинг удален]
> если ты его на провайдера отправляешь?
>>> 1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси
>> пробовал так
>> acl squid_sibling dst 192.168.220.2
>> tcp_outgoing_address 192.168.220.1 squid_sibling
> и не должно помочь, с какого перепугу dst внезапно стало 220.2, если
> это .amazonaws\.com или rackcdn\.com ?
>> не помогает, ошибка та же. Может имеет значение порядок описания tcp_outgoing_address
>> в squid.conf?
> конечно имеет.

более правильным будет использование acl peername, которая доступна начиная со squid-3.1