RPi - Squid Proxy: назначение портов Squid для использования определенных сетевых интерфейсов для исходящего трафика.

Дорогие господа и дамы,

спасибо за то, что вы это замечательное сообщество, в котором вы помогаете везде, где можете! Я так многому у вас научился, но я не могу настроить прокси-сервер squid (классический) с двумя сетевыми интерфейсами, подключенными к моему RPi, каждый из которых только проксирует трафик, когда используется определенный порт. После нескольких недель чтения и попыток я сдалась и ищу помощи.

Чего я пытаюсь достичь

С моего ноутбука я хочу получить доступ к интернет-соединению нескольких сетевых устройств, подключенных к моему RPi. В идеале я хочу использовать несколько портов (моего RPi), и с каждым конкретным портом squid должен проксировать запросы на указанный сетевой интерфейс. Если я подключаюсь к прокси-серверу RPi: 3128, он передает запросы через eth1, а если я подключаюсь к прокси-серверу RPi: 3129, он передает запросы через eth2.

Над чем я работаю

Я работаю над Raspberry Pi 3B + с Raspbian GNU / Linux 10 (buster) и Squid версии 4.6 (об этом говорит squid -v).

Мои сетевые адаптеры - это две SIM-карты:

  1. Eth1 192.168.0.100 Huawei E3372h (версия hilink)
  2. Eth2 192.168.0.101 ZTE MF667

В чем моя проблема

Теперь, когда я пытаюсь подключиться к своему RPi через порт 3128 из моей сети (с моего ноутбука), прокси работает нормально. Я получаю общедоступный IP-адрес (IPv4 и IPv6) моего eth1 (192.168.0.100 Ethernet-устройства). Но: Когда я пытаюсь подключиться через 3129, я получаю IP-адрес моего eth1 (192.168.0.100 Ethernet-устройство) вместо eth2 (192.168.0.101). Поэтому я не могу получить доступ к eth2.

Что я проверял

Curl-запросы для IP-адресов работают для них обоих без каких-либо проблем с моим RPi, и я получаю два разных IP-адреса. С помощью ifconfig я даю им их локальный IP-адрес.

Netstat -plant говорит, что кальмар слушает.

Что я безуспешно пробовал

Я пробовал это: Squid - прослушивание нескольких портов и вперед на другой прокси, но это не совсем верное направление.

Пытался назначить окончательный tcp_outgoing_address для порта (полный squid.conf в конце): http_port 3129 acl port_name localport 3129 tcp_outgoing_address 192.168.0.101 port_name #tcp_outgoing_address fe62 :: d11e: 6206: e32: ipv6 port_name изменено (ipv6 port_name изменено это из вывода ifconfig и eth2) Но, похоже, это не работает, я не могу подключиться к eth2.

И, честно говоря, я новичок в RPi / Squid / Proxying, поэтому я был бы очень признателен за вашу помощь в этом. Заранее спасибо!

Squid.conf и netstat -plant

Мой squid.conf выглядит так и (немного адаптирован) из: https://github.com/serverok/squid-proxy-installer/blob/master/squid.conf

http_port 3128
cache deny all
hierarchy_stoplist cgi-bin ?
    
access_log none
cache_store_log none
cache_log /dev/null
    
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
    
http_port 3129
acl port_name localport 3129
tcp_outgoing_address 192.168.0.101 port_name
#tcp_outgoing_address fe62::d11e:6206:e32:f82b port_name
#http_access 192.168.0.100 deny port_name
    
acl localhost src 127.0.0.1/32 ::1
#acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
   
acl SSL_ports port 1-65535
acl Safe_ports port 1-65535
acl CONNECT method CONNECT
acl siteblacklist dstdomain "/etc/squid/blacklist.acl"
http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny siteblacklist
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
http_access allow localhost
http_access allow password
http_access deny all

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

Netstat -plant сообщает, что squid прослушивает 3128 и 3129:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      389/cupsd               
tcp6       0      0 ::1:631                 :::*                    LISTEN      389/cupsd           
tcp6       0      0 :::3128                 :::*                    LISTEN      564/(squid-1)       
tcp6       0      0 :::3129                 :::*                    LISTEN      564/(squid-1)    

person Kominau    schedule 13.06.2021    source источник