Не так давно передо мной встала задача установить 5 squid -ов на сервер при том что у каждого squida должен быть свой независиммый список разрешенных ip адресов.
Например: Squid1 пиринг + доступ на сайт однокласников
Squid2 пиринг + доступ на сайт в контакте
Squid3 пиринг + возможность качать с rutracker.org и.т.д.
Зная что в squid можно создать список ip адресов и прописать путь до файла в конфиге что б пользватели прокси ходили только по разрешенным ип адресам (даже если внешка на сервере открыта). Я не долго думая создал список ip и в конфиге прописал путь..... но увы облом squid напрочь отказывался так работать он прост напросто игнорировал этот список.
Привожу его пример для наглядности но он у меня не заработал:visible_hostname proxy-server
https_port 3128
tcp_outgoing_address 178.124.129.1
cache_mem 4 MB
maximum_object_size 0 KB
maximum_object_size_in_memory 0 KB
high_memory_warning 70 MB
ipcache_size 24096
ftp_passive on
ftp_sanitycheck on
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100%
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
access_log /dev/null
cache_log /dev/null
cache_store_log /dev/null
dns_nameservers 82.209.240.241 82.209.243.241
hosts_file /etc/hosts
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm proxy-server cache
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl maxuser max_user_ip -s 2
acl all src 0.0.0.0/0.0.0.0
acl gst src 1.0.0.0/255.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl _iplist src "/etc/squid/ip.txt"
https_access allow _iplist
acl ncsa_users proxy_auth REQUIRED
acl Safe_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # https-mgmt
acl Safe_ports port 488 # gss-https
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling https
acl CONNECT method CONNECT
https_access deny maxuser
https_access allow localhost
https_access allow ncsa_users
https_access deny CONNECT !Safe_ports
https_access allow ncsa_users
https_access allow allowed_iplist
https_access deny all
cache_effective_group proxy
coredump_dir /var/spool/squid
cache_effective_user proxy
client_persistent_connections off
server_persistent_connections off
cache_dir null /tmp
где acl _iplist src "/etc/squid/ip.txt" файл со списком Ip адресов.
Повозившись с десятком таких конфигов и недобившсь результата я решил пойти инным путем.
И так как запусить десяток разных конфигов из одного squida!!!???....
Выполняем стандартную установку:
apt-get install squid
по у молчанию наш squid установился в папку /etc/squid
а теперь начнем создавать наши конфиги:
удаляем стандартный конфиг
rm /etc/squid/squid.conf
Создадим наш первый конфиг squid.conf:
nano /etc/squid/squid.conf
за основу конфига можно взять здесь https://forum.besthost.by/viewtopic.php?t=944
А теперь доработаем его внесем новое правило после строки
acl localhost src 127.0.0.1/255.255.255.255
добавим
acl goodhost dst 1.0.0.0/8
acl goodhost dst 82.209.192.0/18
acl goodhost dst 86.57.128.0/17
acl goodhost dst 93.84.0.0/15
acl goodhost dst 178.120.0.0/13
acl goodhost dst 194.158.192.0/19
acl goodhost dst 194.226.120.0/22
acl goodhost dst 194.226.124.0/23
acl goodhost dst 193.232.248.0/22
acl goodhost dst 46.28.96.0/21
acl goodhost dst 46.53.128.0/17
acl goodhost dst 46.56.0.0/16
acl goodhost dst 46.191.0.0/17
acl goodhost dst 46.216.0.0/16
acl goodhost dst 77.74.32.0/21
acl goodhost dst 79.170.104.0/21
acl goodhost dst 79.98.48.0/21
acl goodhost dst 80.249.80.0/20
acl goodhost dst 80.94.160.0/20
acl goodhost dst 80.94.224.0/20
acl goodhost dst 81.25.32.0/20
acl goodhost dst 81.30.80.0/20
acl goodhost dst 84.201.224.0/20
acl goodhost dst 87.252.224.0/19
acl goodhost dst 91.149.128.0/18
acl goodhost dst 91.187.0.0/19
acl goodhost dst 93.125.0.0/17
acl goodhost dst 93.191.96.0/21
acl goodhost dst 95.128.64.0/21
acl goodhost dst 95.130.80.0/21
acl goodhost dst 109.126.128.0/18
acl goodhost dst 109.232.112.0/21
acl goodhost dst 178.154.0.0/17
acl goodhost dst 178.159.240.0/21
acl goodhost dst 178.163.128.0/17
acl goodhost dst 178.168.128.0/17
acl goodhost dst 178.172.128.0/17
acl goodhost dst 178.238.0.0/20
acl goodhost dst 193.17.173.0/24
acl goodhost dst 193.58.255.0/24
acl goodhost dst 193.151.40.0/22
acl goodhost dst 193.232.92.0/24
acl goodhost dst 195.50.0.0/19
acl goodhost dst 195.137.180.0/24
acl goodhost dst 195.222.64.0/19
acl goodhost dst 212.98.160.0/19
acl goodhost dst 213.184.224.0/19
acl goodhost dst 217.21.32.0/19
acl goodhost dst 217.23.112.0/20
Это список разрешенных подсетей по которым ваши юзеры смогут ходить в нет.
Далее разрешим исполнение этого правила
https_access allow goodhost
но на этом ещо не все для того чтоб мы могли запускать несколько конфигов нужно внести ещо одну переменную
а именно указать отдельный pid файл.
PID (сокращение от англ. Process ID) — в системах класса UNIX — идентификатор процесса, уникальный номер, который система класса назначает каждому активному процессу.Иначе при запуске второго конфига ваша ось пошлет вас лесом и у вас ни чего не выйдет.
Ищем в конфиге строку
cache_store_log /dev/null
и после неё добавляем новую строку
pid_filename /var/run/squid.pid
В итоге у вас должен был получится такой конфиг:
visible_hostname proxy-server
https_port 3128
tcp_outgoing_address 178.124.129.1
cache_mem 4 MB
maximum_object_size 0 KB
maximum_object_size_in_memory 0 KB
high_memory_warning 70 MB
ipcache_size 24096
ftp_passive on
ftp_sanitycheck on
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100%
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
access_log /dev/null
cache_log /dev/null
cache_store_log /dev/null
pid_filename /var/run/squid.pid
dns_nameservers 82.209.240.241 82.209.243.241
hosts_file /etc/hosts
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm proxy-server cache
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl maxuser max_user_ip -s 2
acl all src 0.0.0.0/0.0.0.0
acl gst src 1.0.0.0/255.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl goodhost dst 1.0.0.0/8
acl goodhost dst 82.209.192.0/18
acl goodhost dst 86.57.128.0/17
acl goodhost dst 93.84.0.0/15
acl goodhost dst 178.120.0.0/13
acl goodhost dst 194.158.192.0/19
acl goodhost dst 194.226.120.0/22
acl goodhost dst 194.226.124.0/23
acl goodhost dst 193.232.248.0/22
acl goodhost dst 46.28.96.0/21
acl goodhost dst 46.53.128.0/17
acl goodhost dst 46.56.0.0/16
acl goodhost dst 46.191.0.0/17
acl goodhost dst 46.216.0.0/16
acl goodhost dst 77.74.32.0/21
acl goodhost dst 79.170.104.0/21
acl goodhost dst 79.98.48.0/21
acl goodhost dst 80.249.80.0/20
acl goodhost dst 80.94.160.0/20
acl goodhost dst 80.94.224.0/20
acl goodhost dst 81.25.32.0/20
acl goodhost dst 81.30.80.0/20
acl goodhost dst 84.201.224.0/20
acl goodhost dst 87.252.224.0/19
acl goodhost dst 91.149.128.0/18
acl goodhost dst 91.187.0.0/19
acl goodhost dst 93.125.0.0/17
acl goodhost dst 93.191.96.0/21
acl goodhost dst 95.128.64.0/21
acl goodhost dst 95.130.80.0/21
acl goodhost dst 109.126.128.0/18
acl goodhost dst 109.232.112.0/21
acl goodhost dst 178.154.0.0/17
acl goodhost dst 178.159.240.0/21
acl goodhost dst 178.163.128.0/17
acl goodhost dst 178.168.128.0/17
acl goodhost dst 178.172.128.0/17
acl goodhost dst 178.238.0.0/20
acl goodhost dst 193.17.173.0/24
acl goodhost dst 193.58.255.0/24
acl goodhost dst 193.151.40.0/22
acl goodhost dst 193.232.92.0/24
acl goodhost dst 195.50.0.0/19
acl goodhost dst 195.137.180.0/24
acl goodhost dst 195.222.64.0/19
acl goodhost dst 212.98.160.0/19
acl goodhost dst 213.184.224.0/19
acl goodhost dst 217.21.32.0/19
acl goodhost dst 217.23.112.0/20
acl ncsa_users proxy_auth REQUIRED
acl Safe_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # https-mgmt
acl Safe_ports port 488 # gss-https
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling https
acl CONNECT method CONNECT
https_access deny maxuser
https_access allow ncsa_users
https_access deny CONNECT !Safe_ports
https_access allow ncsa_users
https_access allow localhost
https_access allow goodhost
https_access deny all
cache_effective_group proxy
coredump_dir /var/spool/squid
cache_effective_user proxy
client_persistent_connections off
server_persistent_connections off
cache_dir null /tmp
Теперь создадим файл, в котором будут хранится логины и соответственно пароли прокси-аккаунтов командой:
touch /etc/squid/passwd
С первым конфигом поконченно приступим к созданию второго конфига
nano /etc/squid/squid1.conf
Если вы втором конфиге вы хотите добавить новые ip адреса то просто добавте строку
acl goodhost dst xxx.xxx.xxx.xxx
где - xxx.xxx.xxx.xxx новый Ip адрес и.т.д.
что ещо нужно изменить в кофиге ????
Ип адрес 178.124.129.2
порт например 3129
Pid файл должен выглядеть так
pid_filename /var/run/squid1.pid
Теперь создадим второй файл, в котором будут хранится логины и соответственно пароли прокси-аккаунтов командой:
touch /etc/squid/passwd1
и незабудте его указать в конфиге
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd1
В итоге у вас должен был получится такой конфиг :
visible_hostname proxy-server
https_port 3129
tcp_outgoing_address 178.124.129.2
cache_mem 4 MB
maximum_object_size 0 KB
maximum_object_size_in_memory 0 KB
high_memory_warning 70 MB
ipcache_size 24096
ftp_passive on
ftp_sanitycheck on
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100%
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
access_log /dev/null
cache_log /dev/null
cache_store_log /dev/null
pid_filename /var/run/squid1.pid
dns_nameservers 82.209.240.241 82.209.243.241
hosts_file /etc/hosts
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd1
auth_param basic children 5
auth_param basic realm proxy-server cache
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl maxuser max_user_ip -s 2
acl all src 0.0.0.0/0.0.0.0
acl gst src 1.0.0.0/255.0.0.0
acl goodhost dst 1.0.0.0/8
acl goodhost dst 82.209.192.0/18
acl goodhost dst 86.57.128.0/17
acl goodhost dst 93.84.0.0/15
acl goodhost dst 178.120.0.0/13
acl goodhost dst 194.158.192.0/19
acl goodhost dst 194.226.120.0/22
acl goodhost dst 194.226.124.0/23
acl goodhost dst 193.232.248.0/22
acl goodhost dst 46.28.96.0/21
acl goodhost dst 46.53.128.0/17
acl goodhost dst 46.56.0.0/16
acl goodhost dst 46.191.0.0/17
acl goodhost dst 46.216.0.0/16
acl goodhost dst 77.74.32.0/21
acl goodhost dst 79.170.104.0/21
acl goodhost dst 79.98.48.0/21
acl goodhost dst 80.249.80.0/20
acl goodhost dst 80.94.160.0/20
acl goodhost dst 80.94.224.0/20
acl goodhost dst 81.25.32.0/20
acl goodhost dst 81.30.80.0/20
acl goodhost dst 84.201.224.0/20
acl goodhost dst 87.252.224.0/19
acl goodhost dst 91.149.128.0/18
acl goodhost dst 91.187.0.0/19
acl goodhost dst 93.125.0.0/17
acl goodhost dst 93.191.96.0/21
acl goodhost dst 95.128.64.0/21
acl goodhost dst 95.130.80.0/21
acl goodhost dst 109.126.128.0/18
acl goodhost dst 109.232.112.0/21
acl goodhost dst 178.154.0.0/17
acl goodhost dst 178.159.240.0/21
acl goodhost dst 178.163.128.0/17
acl goodhost dst 178.168.128.0/17
acl goodhost dst 178.172.128.0/17
acl goodhost dst 178.238.0.0/20
acl goodhost dst 193.17.173.0/24
acl goodhost dst 193.58.255.0/24
acl goodhost dst 193.151.40.0/22
acl goodhost dst 193.232.92.0/24
acl goodhost dst 195.50.0.0/19
acl goodhost dst 195.137.180.0/24
acl goodhost dst 195.222.64.0/19
acl goodhost dst 212.98.160.0/19
acl goodhost dst 213.184.224.0/19
acl goodhost dst 217.21.32.0/19
acl goodhost dst 217.23.112.0/20
acl ncsa_users proxy_auth REQUIRED
acl Safe_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # https-mgmt
acl Safe_ports port 488 # gss-https
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling https
acl CONNECT method CONNECT
https_access deny maxuser
https_access allow ncsa_users
https_access deny CONNECT !Safe_ports
https_access allow ncsa_users
https_access allow goodhost
https_access deny all
cache_effective_group proxy
coredump_dir /var/spool/squid
cache_effective_user proxy
client_persistent_connections off
server_persistent_connections off
cache_dir null /tmp
И.т.д. по аналогии создаете нужное количество конфигов
Далее squid мы будем запускать первый конфиг командой
squid -f /etc/squid/squid.conf
Второй конфиг командой
squid -f /etc/squid/squid1.conf
И.т.д. если вы запустили squid а после этого внесли изменеия в конфиг и хотите применить новый конфиг не останваливая squid выполните команду
squid -k reconfigure /etc/squid/squid.conf
или
squid -k reconfigure /etc/squid/squid1.conf
и.т.д.
Ну на этом вроде все если возникунут вопросы пишите их в этом топике. 8)
Удачи вам в построении ваших идей.