DNS-сервер использует scapy - PullRequest
0 голосов
/ 28 декабря 2018

Я написал Python DNS-сервер, используя Scapy, и у меня есть проблема.Я нюхаю пакет DNS (по типу фильтра A или PTR) и затем хочу отправить соответствующий ответ.

Я использую два компьютера, и на одном из них я использую nslookup www.google.com, это показывает мне "ошибка времени ожидания запроса "- время ожидания составило 2 секунды.BYW я получил этот пакет, и я отправил один !!но другой компьютер не получил это вовремя, я думаю.

я пытался изменить время ожидания до 20 секунд, но это просто подождать 20 секунд ... и затем показывает ошибку ... и мой сервер получает пакетчерез эти 20 секунд.

как я могу решить эту проблему и с чем это связано !!

Спасибо заранее:)

вот некоторые из моих кодов (в соответствующих случаях)части):

def filter_dns(packet):
return DNS in packet and packet[DNS].opcode == 0 and (packet[DNSQR].qtype == 1 or packet[DNSQR].qtype == 12)



server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((MY_IP, PORT))
print "Server started successfully! Waiting for data..."

packets = sniff(count=1, lfilter=filter_dns)

def send_typeA(packet, result):
    mypacket = IP(dst=Ip_Client) / DNS() / DNSRR()
    mypacket[DNSRR].rrname = packet[DNSQR].qname
    mypacket[DNSRR].rdata = result   # result is the ip of the domain name
    mypacket[DNSRR].ttl = 100
    print mypacket.show()
    send(mypacket)
...