Squid IPv6 always_direct

есть squid 3.5.28

dns_v4_first off
acl to_ipv4 dst ipv4
acl to_ipv6 dst ipv6

http_access allow to_ipv4 !all
http_access allow to_ipv6 !all

always_direct allow to_ipv6 C0NNECT
always_direct deny to_ipv6 !C0NNECT
never_direct allow to_ipv6 !C0NNECT
never_direct deny to_ipv6 C0NNECT

dns прописанный в конфиге отдает нормально и A и AAAA
но часть доменов где есть и IPv6 и IPv4 почемуто соединяется по IPv4
TCP_TUNNEL/200 HIER_DIRECT/update.jdownloader.org\136.243.5.58
TCP_TUNNEL/200 HIER_DIRECT/egress.yandex.net\87.250.251.42

хотя по старым логам
HIER_DIRECT/update.jdownloader.org\2a01:4f8:211:1e8d::2
HIER_DIRECT/egress.yandex.net\2a02:6b8::299

пытался добавить
tcp_outgoing_address 192.168.1.111 to_ipv4
tcp_outgoing_address 192.168.1.111 !to_ipv6

не помогло

1 Like

удивительное рядом. не знаю помогло ли реально или временно “как надо” заработало. пока что в HIER_DIRECT только IPv6 адреса серверов как и задумывалось

стало
dns_nameservers ::1 fe80::111

было
dns_nameservers 127.0.0.1 ::1 192.168.1.111 fe80::111

да они издеваются ;)))
называется отключил IPv6 пока с роутером проблемы

p.s. fe80:: нужны. так что не могу отключить IPv6 “совсем”

dns_v4_first on

dns_nameservers 127.0.3.1 127.0.0.1

acl to_ipv4 dst ipv4
acl to_ipv6 dst ipv6

http_access deny to_ipv4 !all
http_access deny to_ipv6 !all

# я уже реально не знаю что ему "надо" .....
tcp_outgoing_address 192.168.1.111
tcp_outgoing_address 192.168.1.111 to_ipv6
tcp_outgoing_address 192.168.1.111 all

never_direct allow to_ipv6
always_direct deny to_ipv6

# здесь как раз ya.ru / yandex.ru / yandex.net / etc
always_direct allow proxy3direct C0NNECT
never_direct deny proxy3direct C0NNECT

это было

2025.04.10/00:08:56 192.168.1.111 TCP_TUNNEL/200 HIER_DIRECT/ya.ru\2a02:6b8::2:242 ya.ru:443 CONNECT 39195(ms) 39(byte)

2025.04.10/00:29:04 127.0.0.1 TCP_TUNNEL/200 HIER_DIRECT/yandex.ru\2a02:6b8:a::a yandex.ru:443 CONNECT 14996(ms) 39(byte

это стало

2025.04.10/00:38:12 127.0.0.1 TCP_TUNNEL/200 HIER_DIRECT/2ip.ru\188.40.167.82 2ip.ru:443 CONNECT 546(ms) 3940(byte)

2025.04.10/00:38:20 127.0.0.1 TCP_TUNNEL/200 FIRSTUP_PARENT/Warp\192.168.0.111 yandex.ru:443 CONNECT 349(ms) 6155(byte)

2025.04.10/00:38:23 127.0.0.1 TCP_TUNNEL/200 FIRSTUP_PARENT/Warp\192.168.0.111 ya.ru:443 CONNECT 362(ms) 6120(byte)

для разных тестов/скриптов

“C:\ProgramData\chocolatey\bin\dig.exe” @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6

dig @ns1.google.com TXT o-o.myaddr.l.google.com +short -6

dig @2606:4700:4700::1111 whoami.cloudflare ch txt -6 +short

curl
https://ipv6.2ip.io/
https://api6.ipify.org/
https://6.ident.me/
https://ipv6.icanhazip.com/

1 Like

@nicolasDmit

не знаю как у других. у меня на https://packages.diladele.com/squid/4.14/squid.msi
(хотя мой версии 3.5.28)
2+ прокси (только http/https. privoxy как раз стоит для http->socks5 VPN)
всё что RU IPv4 напрямую. остальное через opera-proxy и privoxy (vpn)

cache_peer 127.0.0.1 parent 8118 0 no-query no-digest no-netdb-exchange connect-fail-limit=10 max-conn=256 name=Privoxy proxy-only

cache_peer 192.168.1.111 parent 18080 0 no-query no-digest no-netdb-exchange connect-fail-limit=10 max-conn=256 name=Opera proxy-only

acl CONNECT method CONNECT
acl C0NNECT method CONNECT

acl RU1_IP dst “/etc/squid/_RU.txt”

always_direct allow RU1_IP
never_direct deny RU1_IP

cache_peer_access Opera allow C0NNECT
cache_peer_access Privoxy allow !C0NNECT

never_direct allow all
always_direct deny all

_ru.txt список “рф” чтото вроде

https://github.com/herrbischoff/country-ip-blocks/raw/master/ipv4/ru.cidr
или
curl "https://stat.ripe.net/data/country-resource-list/data.json?resource=RU" | jq-windows-amd64.exe -r ".data.resources.ipv4 | .[]" > ru.txt

но как минимум все забаненые РФ ресурсы тоже будут ломится через РКН бан
так что надо добавлять еще что то вроде
(перед RU IP)

acl proxy8PKH dstdomain “/etc/squid/_8_PKH.LST”

cache_peer_access Opera allow proxy8PKH C0NNECT
cache_peer_access Privoxy allow proxy8PKH !C0NNECT

never_direct allow proxy8PKH
always_direct deny proxy8PKH

PKH листы разные
пример

curl --etag-compare ETAG_etag_antizapret.txt --etag-save ETAG_etag_antizapret.txt^
–output PKH2.txt https://p.thenewone.lol:8443/domains-export.txt

curl --etag-compare ETAG_etag_bolvan.txt --etag-save ETAG_etag_bolvan.txt^
–output PKH4.txt https://raw.githubusercontent.com/bol-van/rulist/main/reestr_hostname_resolvable.txt

curl --etag-compare ETAG_etag_PKH8.txt --etag-save ETAG_etag_PKH8.txt^
–output PKH8.txt https://raw.githubusercontent.com/1andrevich/Re-filter-lists/refs/heads/main/domains_all.lst

@KDS
как временный вариант.

всё что ресолвит ДНС и совпадает с DST (CIDR)
попадает или в любые http прокси (warp/etc)
или Privoxy - Home Page

forward-socks5 		/ 		127.0.0.1:9090 .
forward-socks5 		:443 		127.0.0.1:9090 .
forward-socks5 		:80 		127.0.0.1:9090 .

forward-socks5 		.ru/		127.0.0.1:9090 .
forward			.ru:443 	.
forward-socks5 		.ru:80 		127.0.0.1:9090 .

#      To chain Privoxy and Tor, both running on the same system, you
#      would use something like:
#        forward-socks5t   /               127.0.0.1:9050 .

squid.conf


cache_peer 127.0.0.1 parent 8118 0 name=Privoxy no-query no-digest no-netdb-exchange connect-fail-limit=10 max-conn=256 proxy-only

#acl PKH_IP dst "/etc/squid/_cloudflare_IPv4.txt"
#acl PKH_IP dst "/etc/squid/_cloudflare_IPv6.txt"
acl PKH_IP dst "/etc/squid/_cloudflare_AS13335.txt"

cache_peer_access Privoxy allow PKH_IP

never_direct allow PKH_IP
always_direct deny PKH_IP

always_direct allow all
never_direct deny all

prefer_direct on
balance_on_multiple_ip on
dns_v4_first on

# нужны dnscrypt / Technitum / dnsproxy(adguard) / etc
# для DoT/DoH//dnscrypt
# squid только UDP умеет.
dns_nameservers 127.0.3.1 127.0.0.1

вроде как 2ip.ru // ipv6.2ip.io “починили” (они были за CloudFlare и выдавали простыню HTML вместо IP)

gocurl 2ip.ru
94.242.171.
gocurl ipv6.2ip.io
2a00:62c0:

а вот ident.me под вопросом. или Warp что то чудит.

curl -s --connect-timeout 10 -x socks5h://192.168.1.111:800
 https://api4.ipify.org/
curl -s --connect-timeout 10 -x socks5h://192.168.1.111:800
 https://4.ident.me/
curl -s --connect-timeout 10 -x 192.168.1.111:808
 https://ipv4.icanhazip.com/

104.28.198.242
104.28.230.247
104.28.198.242
с остальными серверами и прокси такого не замечаю

 IPv4 direct
94.242.171.
94.242.171.
94.242.171.

 via IPv6 Warp 192.168.1.111
104.28.198.242
104.28.230.247
104.28.198.242

2a09:bac5:51ac:2373::
2a09:bac5:51ac:2373::
2a09:bac5:51ac:2373::

 via IPv4 gool Warp 192.168.0.111
104.28.230.246
104.28.230.246
104.28.230.246

 via IPv6 Usque
104.28.198.245
104.28.198.245
104.28.198.245

 via IPv6 Psiphon (Warp)
178.79.148.8
178.79.148.8
178.79.148.8
1 Like

Ростелеком “научился” проверять SNI/TLS1.3 в IPv6 ?

gocurl -6 -x “” --head https://ntc.party/ Failed to make request: read tcp [2a00:62c0:cb5:bc00:9471:53a0:be26:dff1]:55328->[2a02:e00:ffec:4b8::1]:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

curl.exe --connect-timeout 30 -x “” -6 --tlsv1.3 --http2 -o x:\NUL -k --connect-to ::speedtest.selectel.ru https://ntc.party/10MB -w %{speed_download}

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0
curl: (35) TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version

curl.exe --connect-timeout 30 -x “” -6 --tlsv1.3 --http2 -o x:\NUL https://speedtest.selectel.ru/10MB -w %{speed_download}

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0
curl: (35) TLS connect error: error:1400442E:SSL routines:CONNECT_CR_SRVR_HELLO:tlsv1 alert protocol version
0

curl.exe --connect-timeout 30 -x “” -6 –tlsv1.2 --http2 -o x:\NUL https://speedtest.selectel.ru/10MB -w %{speed_download}
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

8 10.0M 8 879k 0 0 639k 0 0:00:16 0:00:01 0:00:15 640k

curl.exe --connect-timeout 30 -x “” -6 –tlsv1.2 --http2 -o x:\NUL https://ntc.party/10MB -w %{speed_download}

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed

100 18416 0 18416 0 0 34265 0 --:–:-- --:–:-- --:–:-- 34422

который раз пробую “объединить” необъятное
всё бы ничего. но тем или иным сайтам не нравятся РАЗНЫЕ прокси (разным сайтам.)
кому то Warp (DME/RU или вообщe) ктото через Opera EU/USA не работает.
раньше ВНП умел IPv6 и работал “стабильно”, но РКН последнее время душит :frowning:

списки direct // IPv4/IPv6 // РКН/noRU
через opera-proxy // warp IPv4/IPv6//cfon(Psiphon)//usque // VPN(socks5)

  1. squid
    вроде всё умеет что надо. хотя логика та еще в правилах.
    НО windows билды слишком старые. не умеет ASN. какие то левые глюки например c windowsupdate которых нет на том же Privoxy
    для “unix” надо VMWare/etc что не совсем удобно (WSL2 не заводится. старый ПК)

  2. Privoxy
    вообще не понимает у меня правила [::]/0 [2000::]/3 etc
    странная логика работы forward-socks5/socks5t и не совсем понятные проблемы c “пробросом” прокси через прокси особенно если есть IPv6 сайт а прокси (например warp-CFON или даже АдГуардВПН “не совсем дружат” с ИП6)

  3. 3proxy
    у меня вообще не получилось подружить c ipv6.2ip.io/6tor.org т.п. ipv6-only. да и просто с https://[2606:4700:4700::1111]/cdn-cgi/trace

  4. PD/COW тоже свои заморочки особенно если каскад прокси
    вот сделать несколько копий и рулить через ZeroOmega//SmartProxy то более или менее работает. но хочется “всё в одном” для разных ПК и браузеров (и не только. тотже ProxyDroid на адроиде). иначе сам ZeroOmega разрастается куча правил. а разные ПК/браузеры тот еще гимор отслеживать//проверять//настраивать

  5. пробовал всякое “новомодное” JSON/etc из разных тем (Clash / V2Ray / Xray / gost)
    не моё (я вообще не понимаю что там и как)
    логи в JSON :open_mouth: как то привык tail -F | grep -E логике

https://ntc.party/t/cow-pd-etc/7982

проверка 1.1.1.1 / ::1111 // one.one.one.one через мой зоопарк
http 192.168.1.111:18080  | 77.111.247.44  | 2001:67c: :39e   | IPv6 | NL  | Frankfurt, Germany
http 192.168.0.111:18080  | 77.111.246.28  | 2001:67c: :367   | IPv6 | US  | Washington, USA

socks5 192.168.1.111:800  | 104.28.198. | 2a09:bac5: :1b7  | IPv6 | RU  | Moscow, Russia
socks5h 192.168.1.111:800 | 104.28.198. | 2a09:bac5: :1b7  | IPv6 | RU  | Moscow, Russia
http 192.168.1.111:808    | 104.28.198. | 2a09:bac5: :1b7  | IPv6 | RU  | Moscow, Russia

socks5 192.168.0.111:800  | 104.28.230. | 2a09:bac1: :84   | IPv6 | RU  | Moscow, Russia
socks5h 192.168.0.111:800 | 104.28.230. | 2a09:bac1: :84   | IPv6 | RU  | Moscow, Russia
http 192.168.0.111:808    | 104.28.230. | 2a09:bac1: :84   | IPv6 | RU  | Moscow, Russia

socks5 127.0.0.1:800      | 104.28.198. | 2a09:bac5: :252  | IPv6 | RU  | Moscow, Russia
socks5h 127.0.0.1:800     | 104.28.198. | 2a09:bac5: :252  | IPv6 | RU  | Moscow, Russia
http 127.0.0.1:808        | 104.28.198. | 2a09:bac5: :252  | IPv6 | RU  | Moscow, Russia

socks5 127.0.0.1:8086     | 57.128.140. | 2001:41d0: :4aed | IPv6 | GB  | London, UK
socks5h 127.0.0.1:8086    | 57.128.140. | 2001:41d0: :4aed | IPv4 | GB  | London, UK
http 127.0.0.1:8680       | 57.128.140. | CONN_CLOSED      | IPv4 | GB  | London, UK

socks5 127.0.0.1:9696     | 149.22.90.113  | 2a02:6ea0: :1    | IPv6 | BE  | Brussels, Belgium
socks5h 127.0.0.1:9696    | 149.22.90.113  | 2a02:6ea0: :1    | IPv4 | BE  | Brussels, Belgium
http 127.0.0.1:9898       | 149.22.90.113  | 2a02:6ea0: :1    | IPv4 | BE  | Brussels, Belgium

Если у вас linux-маршрутизатор (или просто linux как система), то приоритет что будет первым ipv4 или ipv6, можно задать в файле /etc/gai.conf
По поводу списков, у меня например такая схема (маршрутизатор): privoxy (вышестоящий) - фильтрует весь трафик (от рекламы, правит залоговки на лету, ловит редиректы и т.д.) в том числе и шифрованный, он же перенаправляет сайты по спискам заблокированных на другое прокси, обычно локальные (tor, yggdrasil, i2p, opera-proxy, xray и т.д). После него идёт squid (директива cache_peer 127.0.0.1 parent 8118…) в прозрачном режиме (80, 443 плюс какие-нибудь не стандартные порты). У Privoxy есть веб-интерфейс, т.е. можно настроить не логинясь в маршрутизатор вбив в браузере config.privoxy.org. Squid ещё немного подтюнингован для разных смарт тв, телефонов/планшетов без root, они не хотя работать через такую систему, мол mitm осуществляется :). Но в первую очередь zapret, а потом всё остальное.

ну Privoxy несколько вопросов.

  1. работает
    {+forward-override{forward 192.168.0.111:9898}}
    0.0.0.0/0 # тут не уверен. отдельно это правило не проверял
    :80
    :443
    <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> # это как раз https://[2606:4700:4700::1111]/
  1. не работают
    {+forward-override{forward 127.0.0.1:808}}
    [::]/0
    [2000::]/3

  2. privoxy → pproxy → socks5 (ибо не только сам привокси к ним коннектится но и squid и другой софт. а он (squid и не только) не умеют socks. если делать цепочку squid->privoxy еще больше глюков/лагов.) причем на разных сайтах и НЕ ВСЕГДА.
    причем добавлял privoxy → PD → разные pproxy там вообще были какие то “странные” ошибки прокси EOF / чтото там “не получен TLS” / etc
    когда несколько ПК/браузеров/софта не поймат что конкретно и куда лезет. если все отключать или пытаться руками через curl что то дергать особых проблем не находит

Спойлер

2025-07-19 10:01:53.469: http 192.168.0.111:5399 → socks5 127.0.0.1:9696 → go-updater.brave.com:443
2025-07-19 10:02:12.200: Unknown remote protocol from 192.168.0.111
2025-07-19 10:02:12.200: Unknown remote protocol from 192.168.0.111
2025-07-19 10:02:12.200: Unknown remote protocol from 192.168.0.111
2025-07-19 10:02:12.202: Unknown remote protocol from 192.168.0.111
2025-07-19 10:02:12.202: Unknown remote protocol from 192.168.0.111
2025-07-19 10:02:50.824: http 192.168.0.111:5490 → socks5 127.0.0.1:9696 → c.pki.goog:80

2025-07-18 23:41:37.688: http 192.168.0.111:38285 → socks5 127.0.0.1:9696 → ocsp.sectigo.com:80
2025-07-18 23:41:40.894: Unknown remote protocol from 192.168.0.111
2025-07-18 23:41:40.894: Unknown remote protocol from 192.168.0.111
2025-07-18 23:41:40.895: Unknown remote protocol from 192.168.0.111
2025-07-18 23:41:40.895: Unknown remote protocol from 192.168.0.111
2025-07-18 23:41:40.895: Unknown remote protocol from 192.168.0.111
2025-07-18 23:41:42.996: http 192.168.0.111:38304 → socks5 127.0.0.1:9696 → waa-pa.clients6.google.com:443

2025-07-18 22:42:53.347: http 192.168.0.111:35240 → socks5 127.0.0.1:9696 → waa-pa.clients6.google.com:443
2025-07-18 22:43:12.611: Unknown remote protocol from 192.168.0.111
2025-07-18 22:43:12.638: http 192.168.0.111:35257 → socks5 127.0.0.1:9696 → waa-pa.clients6.google.com:443
2025-07-18 22:43:31.896: Unknown remote protocol from 192.168.0.111
2025-07-18 22:43:31.921: http 192.168.0.111:35269 → socks5 127.0.0.1:9696 → waa-pa.clients6.google.com:443

2025-07-18 12:12:21.906: http 192.168.1.111:59211 → socks5 127.0.0.1:9696 → www.upload.ee:443
2025-07-18 12:12:33.404: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:33.404: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:33.404: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:33.405: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:33.405: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:36.032: Unknown remote protocol from 192.168.1.111
2025-07-18 12:12:36.032: Unknown remote protocol from 192.168.1.111
2025-07-18 12:12:36.032: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:36.032: Unknown remote protocol from 127.0.0.1
2025-07-18 12:12:36.032: Unknown remote protocol from 192.168.1.111

я наверно утомил ChatGPT/DeepSeek но “сделал” что хотел

PRIVOXY
и apache и VIA и Crunch ошибки

https://gist.github.com/LeonMskRu/c3e0a2223362317eb0232bba7198d61a
есть еще недоработки и сильные :wink: но боюсь опять/снова сломают то что работает вместе с “починкой”

версия 100500 после кучи сломаных версий
https://gist.github.com/LeonMskRu/29604867a3ea42c1b2d4d8e877eb5ee4

Спойлер

на входе

debug 1 # Логирование базовой информации о запросах
debug 2 # show each connection status
debug 512 # Запросы клиента (URL, методы и т.д.)
debug 1024 # Причины блокировки/пропуска запросов
debug 4096 # Правила и действия (actions)
debug 8192 # Подробности маршрутизации (forward / proxy chain)

2025-07-19 22:20:26.967 00001eb0 Connect: via [192.168.0.111]:9898 to: waa-pa.clients6.google.com:443
2025-07-19 22:20:47.031 00003a24 Connect: via [192.168.1.111]:8680 to: ntc.party:443
192.168.1.111 - - [19/Jul/2025:22:20:52 +0300] “CONNECT chat.deepseek.com:443 HTTP/1.1” 200 201775

получаем

В actions для +forward-override обычно используется сайт или домен. Не совсем понимаю, что вы хотите сделать? У меня списки так работает, нужно попасть на заблоченный сайт site.com, такой actions:

+forward-override{forward ip:port}
site.com/

И т.д. В поле url patterns если записывать ipv6 адреса, то их нужно заключать <>.

даже “странный” clash-verge могет ;(

rules:

  • IP-CIDR6,::/0,proxy_list_BACKUP

[TCP] 127.0.0.1:36762 → ipv6.2ip.io:443 match IPCIDR(::/0) using proxy_list_BACKUP[VPN-socks]