DanielLavrushin 说明 b4 在 MikroTik 容器方案下域名学习失效的原因与 1.83.1 修复

解释 www.formula1.com 为何时而走代理时而直连:MikroTik 容器方案中只有客户端发往外部地址的 IPv4 流量进入容器,发往路由器的 DNS 请求与全部 IPv6 流量都绕过 b4,因此 b4 看不到 DNS 响应,域名只能从首次连接的 SNI 学习;而首次连接已直连(CloudFront 对俄罗斯返回 403 地理封锁)后会中断,下一次才走代理。CloudFront 每次返回 4 个地址、TTL 60 秒且频繁更换,故出现时通时不通。另外 1.83.0 中已学习地址会在首次添加一小时后被删除,该问题在近期的 1.83.1 已修复。建议:升级到 1.83.1 以上、开启“将域名传递给 upstream”、暂时禁用 IPv6;为可靠完成首次加载可在 Set 中加入 CloudFront 网段(13.32.0.0/15、13.224.0.0/14、3.164.128.0/17、65.9.128.0/18、18.164.0.0/15、2600:9000:2000::/36)。他同时请对方提供 Proxy 集合的 JSON 与 FORMULA1.COM passthrough 源地址。

作者原文

www.formula1.com обслуживает CloudFront, и из России он отвечает 403 (гео-блок), поэтому сайт работает только через прокси.

В схеме для MikroTik в контейнер попадает только IPv4-трафик клиентов к внешним адресам: DNS-запросы к роутеру и весь IPv6 идут мимо. Поэтому b4 не видит DNS-ответов ПК, и домен в сете учит адрес только по SNI первого соединения. Но это соединение уже ушло напрямую (403), а когда адрес попадает в сет, оно обрывается; через прокси идёт следующее. CloudFront отдаёт по 4 адреса с TTL 60 секунд и часто их меняет, отсюда «то через прокси, то напрямую». Кроме того, в 1.83.0 выученные адреса удалялись через час после первого добавления; кста это пофикшено было в недавней 1.83.1.

«(no domain)»: соединение через прокси записывается один раз, и имя в нём есть, только если в сете включено «Передавать имя домена в upstream». Скорее всего, оно у вас выключено. Включение IPv6 и перехвата DNS over TCP здесь ничего не меняет.

Че пока можно сделать: обновиться до 1.83.1+, включить «Передавать имя домена в upstream», желательно рубануть пока IPv6. Для надёжной первой загрузки можно добавить в сет диапазоны CloudFront, адреса formula1.com отсюда попадают в 13.32.0.0/15, 13.224.0.0/14, 3.164.128.0/17, 65.9.128.0/18, 18.164.0.0/15 и 2600:9000:2000::/36. Это уже, чем весь AS16509.

Скинь плз, JSON сета Proxy и адрес источника строк FORMULA1.COM passthrough.

@AlexTransit ASN работает, потому что его префиксы попадают в сет сразу для обоих семейств адресов. Домен учится только из DNS-ответов, которые видит b4, или из первого ClientHello.