iplist icon indicating copy to clipboard operation
iplist copied to clipboard

iplist.ERROR: Giving up resolution of 'example.org', too many redirects ["X.X.X.X:53"] []

Open mnsold opened this issue 1 year ago • 4 comments

Добрый день!

Раскройте пожалуйста ошибку, пробую запустить сервис в докере, но в логах получаю ошибку: iplist.ERROR: Giving up resolution of 'discord.com', too many redirects ["192.168.1.1:53"] []

Конфиг простой, для теста взял discord:

{
    "domains": [
        "discord.com"
    ],
    "dns": [
        "192.168.1.1:53"
    ],
    "timeout": 30,
    "ip4": [],
    "ip6": [],
    "cidr4": [],
    "cidr6": [],
    "external": {}
}

Почти сразу конфиг подтягивает часть разрешенных адресов

{
    "domains": [
        "discord.com"
    ],
    "dns": [
        "192.168.1.1:53"
    ],
    "timeout": 30,
    "ip4": [
        "162.159.128.233",
        "162.159.135.232",
        "162.159.136.232",
        "162.159.137.232",
        "162.159.138.232"
    ],
    "ip6": [],
    "cidr4": [
        "162.158.0.0/15"
    ],
    "cidr6": [],
    "external": {}
}

Но дальше не меняется

Сам лог, в соответствии с настройками каждые 30 сек выдает ошибку:

[2024-10-17T11:38:27.907199+03:00] iplist.DEBUG: External reloaded for discord.com [] []
[2024-10-17T11:38:27.907291+03:00] iplist.NOTICE: Reloading for discord.com ["started"] []
[2024-10-17T11:38:28.183074+03:00] iplist.ERROR: Giving up resolution of 'discord.com', too many redirects ["192.168.1.1:53"] []
[2024-10-17T11:38:28.183150+03:00] iplist.DEBUG: resolve: discord.com [5,0] []
[2024-10-17T11:38:28.183961+03:00] iplist.NOTICE: Reloaded for discord.com ["finished",1] []
...
[2024-10-17T11:38:58.186051+03:00] iplist.DEBUG: External reloaded for discord.com [] []
[2024-10-17T11:38:58.186146+03:00] iplist.NOTICE: Reloading for discord.com ["started"] []
[2024-10-17T11:38:58.446604+03:00] iplist.ERROR: Giving up resolution of 'discord.com', too many redirects ["192.168.1.1:53"] []
[2024-10-17T11:38:58.446713+03:00] iplist.DEBUG: resolve: discord.com [5,0] []
[2024-10-17T11:38:58.446945+03:00] iplist.NOTICE: Reloaded for discord.com ["finished",0] []

Для теста внутри контейнера docker exec -ti iplist bash выполнил dig/curl

Результат dig:

root@iplist:/app# dig discord.com 192.168.1.1#53

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> discord.com 192.168.1.1#53
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35984
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;discord.com.                   IN      A

;; ANSWER SECTION:
discord.com.            179     IN      A       162.159.138.232
discord.com.            179     IN      A       162.159.137.232
discord.com.            179     IN      A       162.159.128.233
discord.com.            179     IN      A       162.159.136.232
discord.com.            179     IN      A       162.159.135.232

;; Query time: 68 msec
;; SERVER: 127.0.0.11#53(127.0.0.11) (UDP)
;; WHEN: Thu Oct 17 11:43:10 MSK 2024
;; MSG SIZE  rcvd: 120

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 51272
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;192.168.1.1#53.                        IN      A

;; AUTHORITY SECTION:
.                       86400   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2024101700 1800 900 604800 86400

;; Query time: 25 msec
;; SERVER: 127.0.0.11#53(127.0.0.11) (UDP)
;; WHEN: Thu Oct 17 11:43:10 MSK 2024
;; MSG SIZE  rcvd: 118

Результат curl (немного сократил вывод):

root@iplist:/app# curl -LI discord.com
HTTP/1.1 301 Moved Permanently
Date: Thu, 17 Oct 2024 08:43:24 GMT
Content-Type: text/html
Content-Length: 167
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Thu, 17 Oct 2024 09:43:24 GMT
Location: https://discord.com/
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=..."}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
X-Content-Type-Options: nosniff
Set-Cookie: __cfruid=...; path=/; domain=.discord.com; HttpOnly
Set-Cookie: _cfuvid=...; path=/; domain=.discord.com; HttpOnly
Server: cloudflare
CF-RAY: 8d3f00330c4fa076-FRA
alt-svc: h3=":443"; ma=86400

HTTP/2 200
date: Thu, 17 Oct 2024 08:43:24 GMT
content-type: text/html
cf-ray: 8d3f00343e7d9030-FRA
cf-cache-status: HIT
cache-control: no-cache
last-modified: Thu, 17 Oct 2024 08:00:18 GMT
set-cookie: __dcfduid=...; Expires=Tue, 16 Oct 2029 08:43:24 GMT; Max-Age=157680000; Path=/; Secure; HttpOnly; SameSite=Lax
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: Accept-Encoding
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'nonce-...' ...
permissions-policy: interest-cohort=()
surrogate-control: max-age=2147483647
surrogate-key: prod-wf1.discord.com ... pageId:...
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?..."}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
set-cookie: __sdcfduid=...; Expires=Tue, 16 Oct 2029 08:43:24 GMT; Max-Age=157680000; Path=/; Secure; HttpOnly; SameSite=Lax
set-cookie: __cfruid=...; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None
set-cookie: _cfuvid=...; path=/; domain=.discord.com; HttpOnly; Secure; SameSite=None
server: cloudflare
alt-svc: h3=":443"; ma=86400

С виду dig/curl отрабатывает нормально.

Не могли пояснить, что за ошибка too many redirects и как ее обойти?

Заранее спасибо!

mnsold avatar Oct 17 '24 08:10 mnsold

Проблема связана с тем, что для домена было получено ноль записей (типа AAAA и\или A), но механизм редиректов продолжает пытаться их получить, вместо того чтобы сразу прерываться. Это проблема в amphp\dns клиенте. К сожалению настроить принцип под этот обход через конфигурацию dnsResolver-а пока нельзя. https://github.com/amphp/dns/blob/b7515c1c41e12cbd09b1ab76872bf0b04e949142/src/Rfc1035StubDnsResolver.php#L95C4-L210C6

По этому поправил проблему пока что так.

rekryt avatar Oct 17 '24 11:10 rekryt

Создал issue по этому вопросу.

rekryt avatar Oct 17 '24 11:10 rekryt

домена было получено ноль записей (типа AAAA и\или A)

Получается, исходя из моего примера, похоже правильный предлог будет ИЛИ, т.е. AAAA или A, т.к. у меня нет IPv6 или по ним записи не приходят, но по IPv4 резолвятся исправно.

Спасибо за разъяснения и внесенное исправление, хотя бы понятно, что данная ошибка при отстутсвии IPv6 ни на что не влияет.

mnsold avatar Oct 17 '24 12:10 mnsold

image https://github.com/amphp/dns/commit/f2ed903c0a522593c7c552fa5b1e20dfe7ba1ec6 в новой версии amphp/dns исправили этот баг

rekryt avatar Dec 21 '24 12:12 rekryt