FakeDNS
بلوک fakeDns یک یا چند استخر IP مصنوعی پیکربندی میکند که توسط مسیریابی آگاه از اسنیف استفاده میشوند. سرور DNS برای هر دامنهٔ جستوجوشده یک آدرس از استخر تحویل میدهد و موتور مسیریابی هنگام دیدن اتصال، آدرس را به دامنهٔ اصلیاش بازنگاشت میکند.
شکل
fakeDns دارای شکل JSON چندریختی است: یا یک شیء استخر واحد است یا آرایهای از اشیاء استخر.
// Single pool:
{
"fakeDns": { "ipPool": "198.18.0.0/15", "poolSize": 65535 }
}
// Multiple pools (most common — one for v4, one for v6):
{
"fakeDns": [
{ "ipPool": "198.18.0.0/15", "poolSize": 32768 },
{ "ipPool": "fc00::/18", "poolSize": 32768 }
]
}فیلدهای عنصر استخر:
| فیلد | نوع | پیشفرض | توضیح |
|---|---|---|---|
ipPool | string (CIDR) | (الزامی) | بلوک CIDR که آدرسهای جعلی از آن تحویل داده میشوند. |
poolSize | int64 | (الزامی) | تعداد آدرسهایی که از CIDR استفاده میشود (اندازهٔ LRU). |
پُرسازی خودکار
Xray همچنین در صورتی که بخش DNS شما به سرور خاص fakedns ارجاع دهد ولی بلوک fakeDns وجود نداشته باشد، یک بلوک FakeDNS پیشفرض بهطور خودکار اضافه میکند — به FakeDNSPostProcessingStage.Process در infra/conf/fakedns.go:73 رجوع کنید. پیشفرضها 198.18.0.0/15 برای IPv4 و fc00::/18 برای IPv6 هستند که در حالت دو پشتهای هرکدام به اندازهٔ 32768 و در حالت تکپشتهای 65535 تعیین میشوند.
نکات
- شکلهای قانونی JSON با آزمایش unmarshal در
UnmarshalJSON(infra/conf/fakedns.go:36-47) تشخیص داده میشوند. ورودی ترکیبی (مثلاً یک شیء با فیلد فهرستی نامرتبط) در زمان تحلیل خطا تولید میکند. - برای آنکه موتور مسیریابی واقعاً به دامنهٔ اصلی بازنویسی کند، ورودی متناظر باید اسنیف را با
destOverrideشامل"fakedns"یا"fakedns+others"فعال کرده باشد — اگر چنین ورودیای یافت نشود، Xray در راهاندازی هشدار چاپ میکند (infra/conf/fakedns.go:128-139).
منبع: infra/conf/fakedns.go:13-48 · v1.260327.0 (d2758a0)
