Я бы хотел использовать Squid для прокси-запросов из нескольких сетевых интерфейсов, подключенных к Интернету. Я намерен замаскировать исходный IP-адрес, поскольку каждый сетевой адаптер имеет уникальный внешний IP-адрес. В идеале запросы будут передаваться через прокси на основе входящего порта, например
- порт 3128 на локальном хосте до 192.168.1.100
- порт 3129 на локальном хосте до 192.168.2.100
К сожалению, запросы ко второму сетевому адаптеру не выполняются, хотя моя конфигурация squid выглядит корректно:
http_port 3128
http_port 3129
acl ip1 myportname 3128
acl ip2 myportname 3129
tcp_outgoing_address 192.168.1.100 ip1
tcp_outgoing_address 192.168.2.100 ip2
http_access allow ip1
http_access allow ip2
http_access allow localhost
http_access deny all
#...
Мои IP-маршруты следующие:
$ ip route
default via 192.168.1.1 dev eth1 src 192.168.1.100 metric 211
default via 192.168.2.1 dev eth2 src 192.168.2.100 metric 212
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.100 metric 211
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.100 metric 212
Я написал скрипт, чтобы проверить, проходят ли мои запросы на порт 3129:
eth1=`sudo curl --interface eth1 ipv4.canhazip.com -s`
eth2=`sudo curl --interface eth2 ipv4.canhazip.com -s`
proxy1=`curl -x localhost:3128 ipv4.canhazip.com -s`
proxy2=`curl -x localhost:3129 ipv4.canhazip.com -s`
echo "port 3128: $proxy1, expected: $eth1"
echo "port 3129: $proxy2, expected: $eth2"
Обратите внимание, что мои запросы curl, направленные на каждый интерфейс, работают должным образом, однако я получаю сообщение об ошибке от Squid для второго интерфейса:
port 3128: 77.136.201.254, expected: 77.136.201.254
port 3129: [error] , expected: 77.136.19.52
Где [ошибка] - это вывод html-кода squid с заголовком «ОШИБКА: запрошенный URL-адрес не может быть получен», а тело содержит ошибку: «Ошибка подключения к 2606: 4700: 7 :: a29f: 8605 «. и sysmsg: «Система вернула: (101) Сеть недоступна».
Мой сетевой навык немного слаб: мои попытки настроить пользовательские правила / маршруты IP не помогли. Мне интересно, если запросы не маршрутизируются из-за использования интернет-провайдерами NAT операторского уровня?
Моя попытка упростить конфигурацию для указания одного порта и одного tcp_outgoing_address тоже не удалась: (