Основная идея используем директиву tcp_outgoing_address Пример для дву

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Основная идея: используем директиву tcp_outgoing_address
# Пример для двух адресов:
# Говорим squid слушать нужные порты
# http_port 20000
# http_port 20001
# Создаём ACL правила
# acl p20000 myport 20000
# acl p20001 myport 20001
# С помощью созданных ACL правил выбираем нужный исходящий IP
# tcp_outgoing_address 78.109.20.226 p20000
# tcp_outgoing_address 78.109.20.227 p20001
# Важное замечание: директива tcp_outgoing_address должна быть указана после того
# как был разрешён доступ с помощью http_access правил.
# Проще всего указать вышеописанные правила в конце конфига.
# Для генерации конфига можно воспользоваться скриптом
#!/usr/bin/env python
start_port = 2000
start_ip = (192, 16, 12, 0)
ip_count = 2
chunks = ([], [], [])
for x in xrange(ip_count):
port = start_port + x
ip = list(start_ip)
ip[3] += x
chunks[0].append('http_port %d' % port)
chunks[1].append('acl p%d myport %d' % (port, port))
chunks[2].append('tcp_outgoing_address %s p%d' % ('.'.join(map(str, ip)), port))
for group in chunks:
for line in group:
print line
print