Дорогие господа и дамы,
спасибо за то, что вы это замечательное сообщество, в котором вы помогаете везде, где можете! Я так многому у вас научился, но я не могу настроить прокси-сервер 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-карты:
- Eth1 192.168.0.100 Huawei E3372h (версия hilink)
- 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)