linux dnsmasq: ttl'yi nasıl arttırabilirim?


5

Çözülmüş girdilerin TTL’ini dikte etmek mümkün müdür? Başka bir deyişle, alınan TTL’yi çözümlenmiş girişler için geçersiz kılmak ve daha yükseğe çıkarmak mümkün müdür?

Sebep: dnsmasq’ın www.google.com’u zevkime göre çok sık çözmeye çalıştığını biliyorum.

Yanıtlar:


7

Kolayca yapabileceğini sanmıyorum. TTL, Google’ın ad sunucuları tarafından belirlenir ve yük dengeleme amacıyla düşük olmasını ister.

Önbellek boyutunun artırılması yardımcı olabilir, ancak Google’ın kullandığı gibi süper kısa TTL'ler için büyük olasılıkla işe yaramaz.

Gayri resmi olarak , TTL geçersiz kılma işlevselliğini sağlamak için birkaç yama vardır. Bunları dnsmasq-think posta listesinde buldum , bu yüzden kendinizin yayınlanmasını istiyorsanız, bunları deneyin (posta listesi arşivlerini daha yeni sürümlere karşı yamalar için kontrol edebilirsiniz):


0

3600 saniye - min-cache-ttl denetimini dnsmasq C kaynak kodunda bir tamsayı taşması hatası kullanarak yeniden derlemeye gerek kalmadan atlayabilirsiniz. İşte işe yarayan bir değer:

CLI ile: --min-cache-ttl = 6442450943

Dnsmasq.conf aracılığıyla: min-cache-ttl = 6442450943

Bu neden işe yarıyor? Eh, dnsmasq C kodu 3600 saniyelik imzalı bir tamsayı değer sabitini belirtir; bu, kullanıcının geçersiz kılma değeri olarak belirlediği ile karşılaştırılır ve kontrol edilir. Değer 3600'den büyükse, kullanıcı girişi dikkate alınmayacak ve bunun yerine 3600 sabiti kullanılacaktır. Bu geçersiz kılma değeri aynı zamanda imzalı bir int'dir, ancak birkaç satır sonra giriş ttl değeri, arka plan programı başlatılırken işaretsiz uzun bir int'ye aktarılır.

İlk bakışta, giriş veya yapılandırma dosyasında sadece değeri -2 milyar olarak belirlemediğimizi merak edebilirsiniz. Eh, erken iptal ve sona erecek bir başlangıç ​​dnsmasq giriş kontrolü var. Bununla birlikte, tamsayıyı +4 milyardan fazla kaydırırsak, sıfırdan başlayacağız. Buna bir +2 milyar + 1 daha eklediğinizde ilk kontrolü geçip geçerken etkin bir negatif sayıya geri dönebiliriz.

Peki, bu neden çalışıyor? Çünkü imzalı tamsayı aralıkları -2 ila +2 milyar arasında değişirken, imzasız tamsayılar 0 ila +4 milyar arasında değişmektedir. Giriş ayrıştırma işleminden sonra dnsmasq kontrolü tarafından negatif bir değer olarak yorumlanacak kabaca +2 milyar işaretinde sarılacak değere ihtiyacımız var. Temelde,> 3600 ttl kontrolü geçerliliğini yitirir çünkü değer -2 milyar olarak yorumlanır. -2 milyar kesinlikle <3600. ^ 31 + 1 (imzalandı).

Elbette, bu şekilde gerçekten büyük ttl değerlerini belirtebilirsiniz ve bu ttl değerleri hiç de makul olmadığı için bu hiç kimseye faydalı olmayabilir. Ama düzgün bir hiledir (dnsmasq böceği). Umarım bu, yalnızca geçici bir çözüm olarak hata ayıklamak veya uğraşmak için yararlı olsa bile birine yardımcı olur. Durumunuz için işe yaramazsa veya çalışmıyorsa yorum yapmaktan çekinmeyin. Keyfini çıkarın! :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.