Найти - Пользователи
Полная версия: Dns proxy serever с поддержкой "черного" списка доменных имен
Начало » Network » Dns proxy serever с поддержкой "черного" списка доменных имен
1 2
Tsarneba
Здравствуйте друзья.Помогите пожалуйста новичку справиться с непростой задачей. Добавить в прикрепленный файлик “Черный” список доменных имен.

Основная задача стоит в следующем:
Написать DNS прокси-сервер с поддержкой “черного” списка доменных имен.
Для параметров используется конфигурационный файл, считывающийся при запуске сервера;
“Черный” список доменных имен находится в конфигурационном файле;
Адрес вышестоящего сервера также находится в конфигурационном файле;
Сервер принимает запросы DNS-клиентов на стандартном порту;
Если запрос содержит доменное имя, включенное в “черный” список, сервер возвращает клиенту ответ, заданный конфигурационным файлом (варианты: not resolved, адрес в локальной сети, …).
Если запрос содержит доменное имя, не входящее в “черный” список, сервер перенаправляет запрос вышестоящему серверу, дожидается ответа и возвращает его клиенту.

ПРОШУ Вас помочь. Спасибо.
ZerG
прежде всего один вопрос…
почему не использовать для блек листа готовые варианты?
Tsarneba
ZerG
Здравствуйте. “Вы написали- Почему не использовать готовые варианты?”.
Для меня это сложная задачка,не подскажите что конкретно имеете в виду? Может быть подскажите конкретные примеры? По гуглу,похожего я ничего не нашел, Для меня это направление новое,но пытаюсь разобраться.
Спасибо.

PS: Очень важно выполнить “Основную задачу” использую Python.
ZerG
Ну основная задача как раз для нас остается загадкой!
Вы опишите пожалуйста суть задачи - ос на которой нужно это сделать а так же работать оно должно в локальной сети или локально на ПК. Без привязки к питону. Возможно есть готовые решения
например
https://github.com/gophergala/dnsp
Tsarneba
Написать DNS прокси-сервер с поддержкой “черного” списка доменных имен.
Для параметров используется конфигурационный файл, считывающийся при запуске сервера;
“Черный” список доменных имен находится в конфигурационном файле;
Адрес вышестоящего сервера также находится в конфигурационном файле;
Сервер принимает запросы DNS-клиентов на стандартном порту;
Если запрос содержит доменное имя, включенное в “черный” список, сервер возвращает клиенту ответ, заданный конфигурационным файлом (варианты: not resolved, адрес в локальной сети, …).
Если запрос содержит доменное имя, не входящее в “черный” список, сервер перенаправляет запрос вышестоящему серверу, дожидается ответа и возвращает его клиенту.

Язык разработки: Python
Использование готовых библиотек: без ограничений.
Использованный чужой код должен быть помечен соответсвующими копирайтами, нарушать авторские права запрещено.
Остальные условия/допущения - на усмотрение кандидата.
Tsarneba
ZerG
Ну основная задача как раз для нас остается загадкой!Вы опишите пожалуйста суть задачи - ос на которой нужно это сделать а так же работать оно должно в локальной сети или локально на ПК. Без привязки к питону. Возможно есть готовые решения например https://github.com/gophergala/dnsp
Даже если это будет локальная сеть на 2 компьютера-такая программа подойдет. Основная задача для меня-простой код,с выполненными выше условиями….я тогда смогу в нем разобраться и каждую составную кода понять…


ps^ мне нужно выполнить это задание,для того чтобы получить возможность обучиться питону и проффисионала. Это тестовое задание.
Спасибо.
VadimK
Первая же ссылка в гугле - https://gist.github.com/andreif/6069838
Черный список и чтение думаю дописать можно и самому, что бы в будущем не разочаровать наставника профессионала
Tsarneba
Документ прикрепленный ничем не отличается от
VadimK
Первая же ссылка в гугле - https://gist.github.com/andreif/6069838Черный список и чтение думаю дописать можно и самому, что бы в будущем не разочаровать наставника профессионала
Загвозка в блеклисте.
 import dns.resolver
 
bls = ["zen.spamhaus.org", "spam.abuse.ch", "cbl.abuseat.org", "virbl.dnsbl.bit.nl", "dnsbl.inps.de", 
    "ix.dnsbl.manitu.net", "dnsbl.sorbs.net", "bl.spamcannibal.org", "bl.spamcop.net", 
    "xbl.spamhaus.org", "pbl.spamhaus.org", "dnsbl-1.uceprotect.net", "dnsbl-2.uceprotect.net", 
    "dnsbl-3.uceprotect.net", "db.wpbl.info"]
 
if len(sys.argv) != 2:
    print 'Usage: %s <ip>' %(sys.argv[0])
    quit()
 
myIP = sys.argv[1]
 
for bl in bls:
    try:
        my_resolver = dns.resolver.Resolver()
        query = '.'.join(reversed(str(myIP).split("."))) + "." + bl
        answers = my_resolver.query(query, "A")
        answer_txt = my_resolver.query(query, "TXT")
        print 'IP: %s IS listed in %s (%s: %s)' %(myIP, bl, answers[0], answer_txt[0])
    except dns.resolver.NXDOMAIN:
        print 'IP: %s NOT resolved %s' %(myIP, bl)
dns.resolver- ошибка не находит библиотеку…
Для меня это все ново )))))

VadimK
Убрать “try:”, вывести ошибку полностью на экран, поискать в гугле по ошибке. Нужная библиотека будет так же на первой странице поиска.
JOHN_16
VadimK
не убрать try, а в except в конце дописать raise
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB