Tsarneba
Ноя. 22, 2016 20:16:00
Здравствуйте друзья.Помогите пожалуйста новичку справиться с непростой задачей. Добавить в прикрепленный файлик “Черный” список доменных имен.
Основная задача стоит в следующем:
Написать DNS прокси-сервер с поддержкой “черного” списка доменных имен.
Для параметров используется конфигурационный файл, считывающийся при запуске сервера;
“Черный” список доменных имен находится в конфигурационном файле;
Адрес вышестоящего сервера также находится в конфигурационном файле;
Сервер принимает запросы DNS-клиентов на стандартном порту;
Если запрос содержит доменное имя, включенное в “черный” список, сервер возвращает клиенту ответ, заданный конфигурационным файлом (варианты: not resolved, адрес в локальной сети, …).
Если запрос содержит доменное имя, не входящее в “черный” список, сервер перенаправляет запрос вышестоящему серверу, дожидается ответа и возвращает его клиенту.
ПРОШУ Вас помочь. Спасибо.
ZerG
Ноя. 23, 2016 08:06:47
прежде всего один вопрос…
почему не использовать для блек листа готовые варианты?
Tsarneba
Ноя. 23, 2016 10:59:11
ZerG
Здравствуйте. “Вы написали- Почему не использовать готовые варианты?”.
Для меня это сложная задачка,не подскажите что конкретно имеете в виду? Может быть подскажите конкретные примеры? По гуглу,похожего я ничего не нашел, Для меня это направление новое,но пытаюсь разобраться.
Спасибо.
PS: Очень важно выполнить “Основную задачу” использую Python.
ZerG
Ноя. 23, 2016 11:04:28
Ну основная задача как раз для нас остается загадкой!
Вы опишите пожалуйста суть задачи - ос на которой нужно это сделать а так же работать оно должно в локальной сети или локально на ПК. Без привязки к питону. Возможно есть готовые решения
например
https://github.com/gophergala/dnsp
Tsarneba
Ноя. 23, 2016 12:03:25
Написать DNS прокси-сервер с поддержкой “черного” списка доменных имен.
Для параметров используется конфигурационный файл, считывающийся при запуске сервера;
“Черный” список доменных имен находится в конфигурационном файле;
Адрес вышестоящего сервера также находится в конфигурационном файле;
Сервер принимает запросы DNS-клиентов на стандартном порту;
Если запрос содержит доменное имя, включенное в “черный” список, сервер возвращает клиенту ответ, заданный конфигурационным файлом (варианты: not resolved, адрес в локальной сети, …).
Если запрос содержит доменное имя, не входящее в “черный” список, сервер перенаправляет запрос вышестоящему серверу, дожидается ответа и возвращает его клиенту.
Язык разработки: Python
Использование готовых библиотек: без ограничений.
Использованный чужой код должен быть помечен соответсвующими копирайтами, нарушать авторские права запрещено.
Остальные условия/допущения - на усмотрение кандидата.
Tsarneba
Ноя. 23, 2016 13:29:55
ZerG
Ну основная задача как раз для нас остается загадкой!Вы опишите пожалуйста суть задачи - ос на которой нужно это сделать а так же работать оно должно в локальной сети или локально на ПК. Без привязки к питону. Возможно есть готовые решения например https://github.com/gophergala/dnsp
Даже если это будет локальная сеть на 2 компьютера-такая программа подойдет. Основная задача для меня-простой код,с выполненными выше условиями….я тогда смогу в нем разобраться и каждую составную кода понять…
ps^ мне нужно выполнить это задание,для того чтобы получить возможность обучиться питону и проффисионала. Это тестовое задание.
Спасибо.
VadimK
Ноя. 23, 2016 15:09:41
Первая же ссылка в гугле -
https://gist.github.com/andreif/6069838Черный список и чтение думаю дописать можно и самому, что бы в будущем не разочаровать наставника профессионала
Tsarneba
Ноя. 23, 2016 16:40:22
Документ прикрепленный ничем не отличается от
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
Ноя. 23, 2016 19:01:19
Убрать “try:”, вывести ошибку полностью на экран, поискать в гугле по ошибке. Нужная библиотека будет так же на первой странице поиска.
JOHN_16
Ноя. 23, 2016 21:22:34
VadimK
не убрать try, а в except в конце дописать raise