Commit 4191b8cc authored by Vitaly Lipatov's avatar Vitaly Lipatov

Replace dig/massdns CNAME fallback with dnsx for parallel DNS resolution

dnsx resolves CNAME chains natively and runs 50 threads in parallel. Whatsapp (2097 CNAME domains): 74 minutes → 0.06 seconds. Co-Authored-By: 's avatarClaude Opus 4.6 (1M context) <noreply@anthropic.com>
parent 357eb383
......@@ -164,14 +164,15 @@ get_ipv4_list_bulk()
print $2
}'
# Fallback for CNAME domains: parallel dig
# Fallback for CNAME domains via dnsx (fast parallel resolver)
local cname_domains=$(mktemp)
grep "^;" "$adns_out" | grep -v 'nxdomain\|nodata\|timeout\|querydomaintoolong' | \
awk '{ for(i=4;i<=NF;i++) if($i ~ /^[a-z0-9].*\.[a-z]/) { print $i; break } }' | \
sort -u > "$cname_domains"
if [ -s "$cname_domains" ] ; then
xargs -P 20 -I{} dig +short {} A < "$cname_domains" 2>/dev/null
[ -n "$EXTRA_DNS" ] && xargs -P 20 -I{} dig @$EXTRA_DNS +short {} A < "$cname_domains" 2>/dev/null || true
local resolvers="$(awk '/^nameserver/ {print $2}' /etc/resolv.conf | paste -sd,)"
[ -n "$EXTRA_DNS" ] && resolvers="$resolvers,$EXTRA_DNS"
dnsx -a -resp-only -silent -r "$resolvers" -t 50 < "$cname_domains" 2>/dev/null
fi
rm -f "$cname_domains"
}
......@@ -209,18 +210,15 @@ get_ipv6_list_bulk()
print $2
}'
# Fallback for CNAME domains via massdns (fast parallel resolver)
# Fallback for CNAME domains via dnsx (fast parallel resolver)
local cname_domains=$(mktemp)
grep "^;" "$adns_out" | grep -v 'nxdomain\|nodata\|timeout\|querydomaintoolong' | \
awk '{ for(i=4;i<=NF;i++) if($i ~ /^[a-z0-9].*\.[a-z]/) { print $i; break } }' | \
sort -u > "$cname_domains"
if [ -s "$cname_domains" ] ; then
local resolvers=$(mktemp)
awk '/^nameserver/ {print $2}' /etc/resolv.conf > "$resolvers"
[ -n "$EXTRA_DNS" ] && echo "$EXTRA_DNS" >> "$resolvers"
massdns -r "$resolvers" -t AAAA -o S --quiet < "$cname_domains" 2>/dev/null | \
awk '/ AAAA / { sub(/\.$/, "", $3); print $3 }'
rm -f "$resolvers"
local resolvers="$(awk '/^nameserver/ {print $2}' /etc/resolv.conf | paste -sd,)"
[ -n "$EXTRA_DNS" ] && resolvers="$resolvers,$EXTRA_DNS"
dnsx -aaaa -resp-only -silent -r "$resolvers" -t 50 < "$cname_domains" 2>/dev/null
fi
rm -f "$cname_domains"
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment