Итак есть связка из двух прокси. главный 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 AMAZONacl 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Собственно как победить данную проблему?
> И все классно работает, до тех пор пока я на основном сквиде
> не задаю параметр tcp_outgoing_address.
> Собственно как победить данную проблему?1) Если всё классно работает, то зачем что-то менять :-)
1.1) Особенно, зачем прописывать внешний IP для доступа к внутреннему вышестоящему прокси
1.2) Пропиши правильную маршрутизацию в ip ru
1.3) Либо пропиши отдельный tcp_outgoing_address по условию вышестоящего прокси
2) Разъясни еще раз, что есть основной сквид, что не основной, где что прописывается, а то твоя терминология - она у тебя в голове и только тебе понятна, ИМХО.
>> И все классно работает, до тех пор пока я на основном сквиде
>> не задаю параметр 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 стоит на дефолтном шлюзе, с соседом соединяется напрямую витой парой. У соседа свой выделенный канал.
>[оверквотинг удален]
> 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?
конечно имеет.
>[оверквотинг удален]
>> 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
>[оверквотинг удален]
> если ты его на провайдера отправляешь?
>>> 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