Python
11 Mar 2009 HTML Text
 
 
 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