KsI-wiki online documents

Squid 2 chans

Материал из Ksimute

Перейти к: навигация, поиск

Коробанов Сергей
Октябрь 21, 2003

Понадобилось мне поднимать прокси сервер squid с балансировкой нагрузки между двумя каналами. Толкового HowTo не нашел. После прочтения mailng list на http://www.squid-cache.org/ и общения с коллегами, родилось следующее решение его и предоставлю на суд общественности.

Содержание

Исходная задача

2 канала к провайдеру.
Машина со squid (proxy) ip:192.168.250.67, 192.168.250.72 шлюз 192.168.250.65
250.67 роутится через одного провайдера.
250.72 через другого.

Дистрибутив gentoo (что неважно). Работает Squid Cache: Version 2.5.STABLE1 На машине поднимается 3 сквида 1,2 parent proxy 3 кэширующий.

делаем 2 дополнительных конфига.

squid1.conf,squid2.conf
Изменения в squid1.conf

 http_port 3129
 icp_port 3131
 cache_dir ufs /var/cache/squid1 100 16 256
 cache_access_log /var/log/squid1/access.log
 cache_log /var/log/squid1/cache.log
 cache_store_log /var/log/squid1/store.log
 pid_filename /var/run/squid1.pid
 tcp_outgoing_address 192.168.250.67
 coredump_dir /var/cache/squid1
 
 acl all_url urlpath_regex .
 no_cache deny all_url


Изменения в squid2.conf

 http_port 3127
 icp_port 3129
 cache_dir ufs /var/cache/squid2 100 16 256
 cache_access_log /var/log/squid2/access.log
 cache_log /var/log/squid2/cache.log
 cache_store_log /var/log/squid2/store.log
 pid_filename /var/run/squid2.pid
 tcp_outgoing_address 192.168.250.72
 coredump_dir /var/cache/squid2
 
 acl all_url urlpath_regex .
 no_cache deny all_url

изменения в squid.conf

 cache_peer 127.0.0.1        parent 3127 3129 round-robin
 cache_peer 127.0.0.1        parent 3129 3131 round-robin


Создаем необходимые папки,

 /var/log/squid1
 /var/log/squid2
 /var/cache/squid1
 /var/cache/squid2

Squid мoжно настроить не кэшировать что и делается строчками

 acl all_url urlpath_regex .
 no_cache deny all_url

но без папок он работать не будет. Раздаем права. owner squid group squid.


стартуем сквиды

1. Cоздаем swap directories

 squid -z -f /etc/squid/suid1.conf
 squid -z -f 
 /etc/squid/squid2.conf
 squid -z

2. Стартуем сквиды

 squid -f /etc/squid/suid1.conf
 squid -f 
 /etc/squid/squid2.conf

squid прописываю на своем хосте (192.168.250.70) в браузере proxy 192.168.250.67
смотрим в tcpdump на r1-mj (шлюз) заходим на lrn.ru Видим на одном интерфейсе

 r1-mj:~# tcpdump -i eth2 host 192.168.250.72
 tcpdump: listening on eth2
 19:13:09.933638 192.168.250.72.38451 > linux.ru.net.www: S 4283721038:4283721038(0) 
 win 5840 <mss 1460,sackOK,timestamp 2262363[|tcp]> (DF) [tos 0xf6]
 19:13:09.950518 arp who-has 192.168.250.72 tell 192.168.250.65
 19:13:09.950703 arp reply 192.168.250.72 is-at 0:10:dc:f2:54:b5
 19:13:09.950722 linux.ru.net.www > 192.168.250.72.38451: S 2074568879:2074568879(0) ack 4283721039 win 
 32120 <mss 1460,nop,nop,sackOK,nop,wscale 0> (DF) [tos 0xf6] 
 19:13:09.950935 192.168.250.72.38451 > linux.ru.net.www: . ack 1 in 5840 (DF) [tos 0xf6]
 19:13:09.951568 192.168.250.72.38451 > linux.ru.net.www: P 1:684(683) ack 1 win 5840 (DF) [tos 0xf6]
 19:13:09.981105 linux.ru.net.www > 192.168.250.72.38451: . ack 684 win 31437 (DF) [tos 0xf6]
 19:13:15.333050 linux.ru.net.www > 192.168.250.72.38451: P 1:1461(1460) ack 684 win 32120 (DF) [tos 0xf6]
 19:13:15.333935 192.168.250.72.38451 > linux.ru.net.www: . ack 1461 win 8760 (DF) [tos 0xf6]

Видим на втором интерфейсе

 r1-mj:~# tcpdump -i eth2 host 192.168.250.67
 tcpdump: listening on eth2
 19:13:15.925545 ns0.trancom.ru.domain > 192.168.250.67.32902: 2 2/6/0 (178) (DF) [tos 0xf6]
 19:13:15.925917 192.168.250.67.38452 > 194.67.45.100.www: S 5220073:5220073(0) win 5840 <mss
 1460,sackOK,timestamp 2262962[|tcp]> (DF) [tos 0xf6]
 19:13:15.926038 ns0.trancom.ru.domain > 192.168.250.67.32902: 3 1/2/0 (91) (DF) [tos 0xf6]
 19:13:15.926316 192.168.250.67.38453 > counter.rambler.ru.www: S 4293433428:4293433428(0) 
 win 5840 <mss 1460,sackOK,timestamp 2262962[|tcp]> (DF) [tos 0xf6]
 19:13:15.926987 ns0.trancom.ru.domain > 192.168.250.67.32902: 4 1/2/2 (128) (DF) [tos 0xf6]
 19:13:15.927285 192.168.250.67.38454 > linux.ru.net.www: S 3373178:3373178(0) win 5840 
 <mss 1460,sackOK,timestamp 2262962[|tcp]> (DF)   [tos 0xf6]
 19:13:15.393655 linux.ru.net.www > 192.168.250.72.38451: P 1461:2921(1460) ack 684 win 32120 (DF) [tos 0

Работает round-robin!


Дальше добавляем старт сквидов в init скрипты, настраиваем source routing на маршрутизаторе, секурим ACL и наслаждаемся работой через 2 канала.

Предложения и дополнения

Буду рад и благодарен. Присылайте на

ksi_korobanov@mail.ru

Благодарности

Спасибо bass c #lrn сказал куда копать. :)

Ссылки

http://www.squid-cache.org/