Discussion

Python ile DNS Resolver Geliştirme

Started by SilentOperator · 22 Jul 2026 13:01 · 2 Views · 0 Replies
Thread Starter #0
DNS (Domain Name System), internet üzerindeki alan adlarını IP adreslerine çeviren kritik bir sistemdir. Bu yazıda, Python kullanarak basit bir DNS resolver geliştirme sürecini ele alacağız. Kendi DNS resolver'ınızı yazmak, ağ programlaması konusunda derinlemesine bilgi edinmenize yardımcı olabilir.

Öncelikle, DNS sorgularını oluşturmak ve yanıt almak için gerekli kütüphaneleri yüklemeniz gerekiyor. Python'da bu amaçla socket ve struct kütüphanelerini kullanacağız. socket kütüphanesi, ağ bağlantıları için temel bir yapı sunarken, struct ise ikili verileri işlemek için kullanılır.

Aşağıda basit bir DNS resolver'ın temel yapısını içeren bir kod örneği bulabilirsiniz:

CODE
123456789101112131415161718192021222324252627282930313233
import socket
import struct

def dns_query(domain):
    # DNS sunucusunun IP adresi
    dns_server = '8.8.8.8'  # Google DNS
    # DNS sorgusu için gerekli yapı
    query = b'\x12\x34'  # Transaction ID
    query += b'\x01\x00'  # Sorgu
    query += b'\x00\x01'  # Soru sayısı
    query += b'\x00\x00'  # Yanıt sayısı
    query += b'\x00\x00'  # Otorite sayısı
    query += b'\x00\x00'  # Ek bilgi sayısı
    
    # Domain adını sorgu formatına dönüştür
    for part in domain.split('.'):
        query += struct.pack('B', len(part)) + part.encode()
    query += b'\x00'  # Sorgunun sonu
    query += b'\x00\x01'  # Sorgu tipi (A kaydı)
    query += b'\x00\x01'  # Sorgu sınıfı (IN)

    # DNS sunucusuna bağlan
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(query, (dns_server, 53))
    
    # Yanıtı al
    response, _ = sock.recvfrom(512)
    return response

[b]Örnek kullanım[/b]
response = dns_query('example.com')
print(response)


Bu kod, DNS sunucusuna basit bir A kaydı sorgusu göndermektedir. İlk olarak, DNS sorgusu için gerekli olan ikili veriler oluşturulmakta ve ardından bu veriler socket üzerinden belirtilen DNS sunucusuna gönderilmektedir. Yanıt alındığında, bu yanıt üzerinde daha fazla işlem yaparak IP adresini çıkarabilirsiniz.

Yazının sonunda, DNS resolver geliştirme deneyimlerinizi ve karşılaştığınız zorlukları paylaşmanızı isterim. Siz de benzer bir uygulama geliştirdiniz mi? Hangi kütüphaneleri kullandınız? Fikirlerinizi ve deneyimlerinizi duymak için sabırsızlanıyorum!

You must be logged in to reply.

0 quotes selected