Запускаем в CentOS 7 одновременно несколько экземпляров Squid, связанных с интерфейсами из различных подсетей


сохраняем общую для обоих экземпляров конфигурацию в файл /etc/squid/main.conf

сохраняем конфигурацию первого экземпляра в файл /etc/squid/squid1.conf

visible_hostname proxy1
http_port 192.168.100.254:3128
tcp_outgoing_address 192.168.100.254
udp_outgoing_address 192.168.100.254
pid_filename /var/run/squid/squid1.pid
coredump_dir /var/spool/squid/squid1
access_log /var/log/squid/access_squid1.log
cache_log /var/log/squid/cache_squid1.log

include /etc/squid/main.conf

сохраняем конфигурацию второго экземпляра в файл /etc/squid/squid2.conf

visible_hostname proxy2
http_port 192.168.200.254:3128
tcp_outgoing_address 192.168.200.254
udp_outgoing_address 192.168.200.254
pid_filename /var/run/squid/squid2.pid
coredump_dir /var/spool/squid/squid2
access_log /var/log/squid/access_squid2.log
cache_log /var/log/squid/cache_squid2.log

include /etc/squid/main.conf

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

mkdir /var/spool/squid/{squid1,squid2}
chown squid:squid /var/spool/squid/*
chmod 750 /var/spool/squid/*

создаем unit-файл /usr/lib/systemd/system/squid1.service для первого экземпляра

[Unit]
Description=Squid caching proxy (squid1)
After=syslog.target network.target nss-lookup.target

[Service]
Type=forking
LimitNOFILE=16384
ExecStart=/usr/sbin/squid -n squid1 -f /etc/squid/squid1.conf
ExecReload=/usr/sbin/squid -n squid1 -k reconfigure -f /etc/squid/squid1.conf
ExecStop=/usr/sbin/squid -n squid1 -k shutdown -f /etc/squid/squid1.conf
TimeoutSec=0

[Install]
WantedBy=multi-user.target

создаем unit-файл /usr/lib/systemd/system/squid2.service для второго экземпляра

[Unit]
Description=Squid caching proxy (squid2)
After=syslog.target network.target nss-lookup.target

[Service]
Type=forking
LimitNOFILE=16384
ExecStart=/usr/sbin/squid -n squid2 -f /etc/squid/squid2.conf
ExecReload=/usr/sbin/squid -n squid2 -k reconfigure -f /etc/squid/squid2.conf
ExecStop=/usr/sbin/squid -n squid2 -k shutdown -f /etc/squid/squid2.conf
TimeoutSec=0

[Install]
WantedBy=multi-user.target

создаем файл /etc/sysconfig/network-scripts/rule-lo с дополнительными правилами маршрутизации

priority 10100 from 192.168.100.254 table 100
priority 10200 from 192.168.200.254 table 200

создаем файл /etc/sysconfig/network-scripts/route-lo с дополнительными маршрутами

default via 192.168.100.1 table 100
default via 192.168.200.1 table 200

перезагружаемся

У этой записи 2 комментариев

  1. wer

    Спасибо.
    Однако у сквида есть возможность крутить столько сетей, сколько надо и на единственном интерфейсе

    В squid'е есть директива tcp_outgoing_address вот с помощью неё и можно указать исходящий адрес для конкретного адреса

    acl ACL_NAME src 192.168.100.1 10.0.3.0/24
    tcp_outgoing_address GATEWAY_IP ACL_NAME

    Перечисляем клиентов: хосты или сети
    acl acl_wan2 src 192.168.1.5 192.168.1.20 192.168.1.21 192.168.1.23 192.168.1.24

    Указываем шлюз
    tcp_outgoing_address 5.255.255.5 acl_wan2
    где 5.255.255.5 - это внешний IP адрес от провайдера (соединение
    предварительно настроено)

    ЗЫ. Пользую сквид на pfsense \ opnsense

    1. Alexander

      Согласен, в случаях с одним интерфейсом направить трафик с определенных адресов можно директивой tcp_outgoing_address. Однако, если нужно использовать интерфейсы из различных подсетей, то без дополнительных правил и таблиц маршрутизации трафик будет уходить только с одного интерфейса, вне зависимости от используемых в директиве tcp_outgoing_address адресов, поскольку для шлюзов по умолчанию в основную таблицу маршрутизации добавляются различные маршруты с различными метриками

      Конфигурация с несколькими интерфейсами может понадобиться тогда, когда Squid функционирует не на маршрутизаторе, но подключен к подсетям, глобальный трафик которых уходит различными маршрутами, например, напрямую через Интернет-провайдера и через VPN-соединение

Добавить комментарий