Простой итеративный сервер, работает по UDP, умеет находить A записи.
Критерии:
- Ручное формирование пакетов (20 баллов)
- Одновременное обслуживание нескольких пользователей (многопоточность) (+3 балла)
- Кеширование ответов с учетом ttl (+3 балла) (Кеширование происходит не только по итоговым записям, но и по зонам)
Usage:
- Запустите сервер:
python dns.py --bind {server bind host} --port {server port} --timeout {timeout in seconds} --retry_count {retry count answer dns servers} --max_hops {max hops for ask dns servers}
Все параметры необязательны. По умолчанию сервер будет слушать 0.0.0.0:53
- Отправьте DNS запрос:
dig @127.0.0.1 domain.com
or (windows)
nslookup
> server 127.0.0.1
> set type=A
> domain.com