Простой DNS сервер, реализованный на Python, который принимает DNS запросы, разрешает доменные имена путем итеративного запроса к DNS серверам и возвращает ответы клиентам.
- Прием DNS запросов на порту 8880
- Итеративный запрос к DNS серверам для разрешения имен
- Парсинг DNS сообщений
- Поддержка запросов A записей
- Специальная обработка доменов с ".multiply." для вычисления произведения чисел в домене
python -m venv .venv
source .venv/bin/activate
pip install poetryЗапустите сервер:
python src/main.pyСервер слушает на порту 8880. Для тестирования используйте инструменты вроде dig, nslookup или host, указывая порт 8880:
dig @127.0.0.1 -p 8880 example.com
nslookup example.com 127.0.0.1 -port=8880src/main.py- Точка входаsrc/dns_resolver.py- Основная логика resolver'аsrc/network.py- Сетевое взаимодействиеsrc/parse.py- Парсинг DNS сообщенийsrc/utils.py- Вспомогательные функции- Много классов для представления DNS сообщений