Squid Reverse Proxy with multiple WAN-Interfaces

У меня следующая настройка:

  • две линии WAN, каждая со статическим общедоступным IP-адресом, обе подключены к отдельному маршрутизатору, обеспечивая две внутренние сети (net1 и net2 )
  • один сервер Ubuntu 14.04 LTS с установленным squid 3.3.8 (скомпилированный с помощью --enable-ssl), имеющий два интерфейса, расположенных в каждой сети, с net1 в качестве шлюза по умолчанию
  • squid выполняет обратное проксирование для некоторых серверов, являющихся расположены в двух поддоменах net1 или net2
  • с A-записями на каждом WAN-IP
  • , переадресация портов для портов 80 и 443 на обоих маршрутизаторах указывает на соответствующий IP-адрес сервера squid

Для лучшего понимания: sub1.domain.tld -> WAN1 - ROUTER1 - net1 - SERVER1 | КАЛЬМАР | sub2.domain.tld -> WAN2 - ROUTER2 - net2 - SERVER2


Вот соответствующий конфиг:

/ etc / network / interfaces сервера squid:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.1.123
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 192.168.1.1

    auto eth1
    iface eth1 inet static
        address 192.168.2.123
        netmask 255.255.255.0
        dns-nameservers 192.168.2.1

/etc/squid3/squid.conf

# define some ACL aliases
acl localnet1 src 192.168.1.0/24
acl localnet2 src 192.168.2.0/24
acl allsrc src all
acl safeports port 80 443
acl sslports port 443  
acl purge method PURGE
acl connect method CONNECT
acl HTTP proto HTTP
acl HTTPS proto HTTPS

# restrict management options
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge

# block non-safe ports
http_access deny !safeports
http_access deny CONNECT !sslports

# define ports and certs
http_port 80 accel defaultsite=sub1.domain.tld
https_port 443 accel cert=/etc/ssl/certs/domain.tld.crt key=/etc/ssl/private/domain.tld.key defaultsite=sub1.domain.tld

# define peers
cache_peer 192.168.1.234 parent 443 0 proxy-only no-query no-digest originserver login=PASSTHRU connection-auth=on ssl sslflags=DONT_VERIFY_PEER front-end-https=on name=server1
cache_peer 192.168.2.234 parent 443 0 proxy-only no-query no-digest originserver login=PASSTHRU connection-auth=on ssl sslflags=DONT_VERIFY_PEER front-end-https=on name=server2

# define uris
acl server1_acl url_regex -i ^https://sub1.domain.tld/*$
acl server2_acl url_regex -i ^https://sub2.domain.tld/*$

# bind peers to acls and block direct access
never_direct allow server1_acl 
http_access allow server1_acl  
cache_peer_access server1 allow server1_acl

never_direct allow server2_acl 
http_access allow server2_acl  
cache_peer_access server2 allow server2_acl

# handle unhandled connections
deny_info TCP_RESET allsrc
http_access allow localnet1
http_access allow localnet2
http_access deny allsrc
1
задан 3 December 2015 в 17:01
1 ответ

Хорошо, проблема обнаружена: проблема с маршрутизацией ...

Как я и думал все исходящие пакеты отправляются через eth0. Это можно исправить, установив дополнительные маршруты:

Добавить новую таблицу маршрутизации:

echo 1 rt2 >> >> /etc/iproute2/rt_tables

Настроить новый маршрут:

ip route add 192.168.2.0/24 dev eth1 src 192.168.178.123 table rt2
ip route add default via 192.168.2.1 dev eth1 table rt2
ip rule add from 192.168.2.123/32 table rt2
ip rule add to 192.168.2.123/32 table rt2

Чтобы сделать это постоянным, включить в / etc / network / interfaces для eth1

post-up ip route add 192.168.2.0/24 dev eth1 src 192.168.178.123 table rt2
post-up ip route add default via 192.168.2.1 dev eth1 table rt2
post-up ip rule add from 192.168.2.123/32 table rt2
post-up ip rule add to 192.168.2.123/32 table rt2

Кредиты на:

1
ответ дан 3 December 2019 в 23:55

Теги

Похожие вопросы