Создать пользовательский DNS-сервер имен в C - PullRequest
3 голосов
/ 23 октября 2009

Необходимо создать собственный сервер DNS-имен с использованием C, который будет проверять наличие базы данных mysql, чтобы определить, нужно ли направлять IP-адрес клиента на другой сервер. Использование этого для тестовой сети, поэтому запросы к foo.com будут отправляться туда, только если включен истинный поиск, в противном случае запросы будут направлены в среду разработки. Любые предложения / рекомендации?

В настоящее время смотрит на libevent с помощью чего-то вроде ldns или c-ares

Ответы [ 4 ]

2 голосов
/ 23 октября 2009

BIND уже имеет расширение mySQL (с использованием динамически загружаемых зон). Все, что вам нужно сделать, это создать таблицу адресов с переводами и определить запросы, которые строят правильные записи DNS, используя таблицу.

Для полной документации см .: http://bind -dlz.sourceforge.net /

1 голос
/ 30 октября 2009

Я закончил тем, что перешел на libevent 1.4, который содержит свои собственные функции для обработки DNS-запросов. Функции evdns, которые содержит libevent, довольно просты, и где именно то, что мне нужно для создания q собственного сервера DNS. Я рассмотрел использование bind, но не хотел иметь дело с настройкой зон и дополнительной конфигурацией, evdns позволил мне использовать существующий resolv.conf для пересылки любых DNS-запросов на реальные серверы имен и для изменения ответов по мере необходимости на основе информации. содержится в таблице MySQL.

1 голос
/ 25 октября 2009

Боб, я уже написал набор из ldns и libevent, который должен дать вам хорошее начало, чтобы вы могли делать именно то, что вы хотите.

Посмотрите на http://code.google.com/p/evldns/

1 голос
/ 23 октября 2009

Очень похоже на то, над чем я сейчас работаю, за исключением того, что в моем случае я должен заставить DNS-сервер возвращать сообщения об ошибках, отличные от нормальных, чтобы учесть тот факт, что он работает в частной сети.

Я решил просто скачать исходный код BIND и написать свои модификации в качестве патча к этому. Затем для развертывания мы можем загрузить последний источник BIND, который будет включать новые исправления безопасности, применить наше исправление настройки и собрать его.

Я рекомендую вам сделать то же самое, просто получить BIND и изменить его по мере необходимости. Вы можете получить BIND и всю документацию здесь, на ISC.ORG .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...