Чи можливо виконання сценаріїв у BIND на основі пошуку


9

Чи можливо встановити BIND як DNS-сервер у моїй локальній мережі та виконувати сценарії, коли він отримує пошук?

Я хотів би виконати сценарій Python або Bash на основі вхідного пошуку DNS, як я можу це вирішити?

Якщо можливо в Bind, будь ласка, скажіть мені, як це можливо, а якщо ні, то скажіть, чи це можливо в інших реалізаціях сервера DNS, які працюють на Ubuntu.

Дуже дякую.


1
Мені це здається трохи дивним, я можу запитати, чого ви намагаєтесь досягти?
sr_

Це може бути дивним;) Що я намагаюся зробити, це пошук у моїй базі даних, якщо IP-адреса призначення в певній іноземній країні, і якщо він є, я хочу встановити маршрут на своєму сервер, який також виконує функцію маршрутизатора, до певного провайдера або в деяких випадках VPN-з'єднання. Я намагався налаштувати багато маршрутів, 99% ніколи не використовуються, а продуктивність дуже погана. Якщо я можу це зробити на вимогу, продуктивність DNS буде поганою, але в моєму випадку це не впливає.
Гуннар

Гм, це може жахливо вийти з ладу, якщо, скажімо, угорський веб-сайт використовує Google Ad-blah, чи не так? (Але я теж не маю альтернативної ідеї, вибачте.)
sr_

Мені досить цікаво, що ви намагаєтеся зробити, оскільки, що трапиться, ви отримаєте запит від IP-адреси, який вам доведеться відповідати географічному розташуванню, яке може бути помилковим, а потім налаштувати маршрут на свій DNS сервер відповідати на цей IP через певний маршрут, що не має сенсу, оскільки запит уже перетворився на BIND?
Карлсон

Якщо я здогадуюсь того, що ви намагаєтеся досягти, є правильним (маршрутизуйте певні з'єднання через нестандартні шлюзи), чи не BIND неправильне місце для цього? Ви вивчали маршрутизацію політики та / або iptables?
Олексій

Відповіді:


1

Я можу придумати два додаткові параметри, які не потребують розбору журналів BIND або взагалі перешкоджають BIND.

1) Дзеркальне відображення порту - копіювання пакетів та відправлення їх на окремий порт, де програма прослуховує, аналізує запити DNS та вживає заходів. dpktабо scapyабо подібні бібліотеки для створення пакетів допоможуть вам розглянути необроблені запити.

2) Використовуйте певний тип бібліотеки нюхання пакетів для пасивного моніторингу запитів. Ось приклад використання scapy:

from scapy.all import *

def handler(req):
    if req.haslayer(DNS) and req.getlayer(DNS).qr == 0:
        ip = req.getlayer(IP)
        dns = req.getlayer(DNS)

        q = dns.qd
        print q.qname # simply print domain name


if __name__ == '__main__':
    sniff(iface="eth0", filter="udp and port 53", prn=handler, store=0)

Очевидно, що це лише примітивний приклад. Він друкує лише ім'я домену, на який було запитано, але ви, звичайно, можете додати багато логіки. Якщо ви посилаєтесь на скапійовану документацію, ви побачите, що всі поля із запиту DNS легко доступні.


Це виглядає цікаво. Я розберуся в цьому. Дякую :-)
Гуннар

0

Це можна зробити, відстежуючи журнал прив'язки-сервера (журнал запитів повинен бути включений). Удачі...


Зауважте, що реєстрація всіх запитів на прив'язку - це серйозне зниження продуктивності. Я б не рекомендував цього на будь -якому авторитетному сервері рівня виробництва.
Шадур

Залежить від завантаження цього bind-сервера. І можна записати журнали на ram-диск, наприклад /dev/shm, теж.
Нілс

журнал, а потім запустіть swatchабо OSSEC в журналах, щоб викликати ваш сценарій. не дуже хороша ідея в довгостроковій перспективі, в будь-якому випадку.
Джоді C

0

Немає таких речей, як події реалізовані в прив'язці, це не потрібно.

Ви можете оглянути додаткові брандмауери, які використовуються в деяких організаціях для обмеження доступу до деяких користувачів. Там у вас буде більше шансів досягти того, що ви хочете.

Налаштування маршрутів теж здається хорошою ідеєю, врешті-решт, те, що ви хочете досягти за допомогою прив'язки та запуску сценарію, буде також неефективним: ви повинні:

for each dest IP 
look up through your database  
if match set the route
then the OS will see and use the root

Налаштування навантажень маршрутів не є проблемою і не вплине на ефективність помітно. Скільки маршрутів, на вашу думку, мають корпоративні маршрутизатори? сотні? Не зовсім ... І вони не обов'язково мають вигадливу конфігурацію обладнання. Якщо серйозно, тобі все добре, серйозні операційні системи спеціально розроблені для обробки багатьох маршрутів та оптимізації пошуку.

Крім того, що ви хотіли зробити в першу чергу, це використання бази даних зверху таблиці маршрутизації, яка була б іншим видом бази даних. Не ускладнювати. На серверах BGP багато маршрутів фактично обрані / бажані з політичних / фінансових причин, кожен провайдер / організація може це зробити, і всі вони додають для цього певні маршрути. Вартість транзиту або судовий наказ часто є причиною таких заходів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.