क्या लुकअप के आधार पर BIND में स्क्रिप्ट निष्पादित करना संभव है


9

क्या यह संभव है, मेरे स्थानीय नेटवर्क पर DNS सर्वर के रूप में BIND को सेट करने के लिए, और जब यह लुकअप हो जाए तो स्क्रिप्ट निष्पादित करें?

मैं आने वाले DNS लुकअप के आधार पर एक पायथन या बैश स्क्रिप्ट निष्पादित करना चाहूंगा, मैं इसे कैसे हल कर सकता हूं?

यदि बिंद में संभव हो, तो कृपया मुझे बताएं कि कैसे, और यदि नहीं, तो मुझे बताएं कि क्या यह अन्य DNS सर्वर कार्यान्वयन में संभव है, जो उबंटू पर चलता है।

आपका बहुत बहुत धन्यवाद।


1
यह मुझे थोड़ा अजीब लगता है, क्या मैं पूछ सकता हूं कि आप क्या हासिल करना चाहते हैं?
sr_

यह अजीब तरह का हो सकता है;) जो मैं करने की कोशिश कर रहा हूं, वह मेरे डेटाबेस में देखना है, यदि गंतव्य का आईपी एक निश्चित विदेशी देश में है, और यदि यह है, तो मैं अपने मार्ग पर एक मार्ग स्थापित करना चाहता हूं सर्वर, जो एक विशिष्ट आईएसपी या कुछ मामलों में वीपीएन कनेक्शन के रूप में एक राउटर के रूप में भी काम करता है। मैंने बहुत सारे मार्ग स्थापित करने की कोशिश की है, 99% का उपयोग कभी नहीं किया जाएगा, और प्रदर्शन बहुत खराब है। यदि मैं इसे मांग पर कर सकता हूं, तो DNS प्रदर्शन खराब होगा, लेकिन मेरे मामले में, इसका कोई प्रभाव नहीं है।
गुन्नार

हम्म, यह बुरी तरह से विफल हो सकता है अगर, कहते हैं, हंगेरियन वेबसाइट Google Ad-blah का उपयोग करती है, है ना? (लेकिन मेरे पास कोई वैकल्पिक विचार नहीं है, क्षमा करें।)
sr_

मैं इस बात के लिए उत्सुक हूं कि आप क्या करने की कोशिश कर रहे हैं क्योंकि आपको क्या करना होगा, आपको एक आईपी से एक अनुरोध मिलेगा जिसे आपको एक भौगोलिक स्थान के खिलाफ मैच करना होगा, जो गलत हो सकता है और फिर अपने DNS पर एक मार्ग सेट कर सकता है सर्वर एक विशेष मार्ग के माध्यम से उस आईपी का जवाब देने के लिए, जिसका कोई मतलब नहीं है क्योंकि अनुरोध ने इसे पहले से ही BIND में बनाया है?
कार्लसन

यदि आप जो हासिल करने की कोशिश कर रहे हैं उसका मेरा अनुमान सही है (गैर-मानक गेटवे के माध्यम से कुछ कनेक्शनों को रूट करें), क्या ऐसा करने के लिए गलत जगह नहीं है? क्या आपने पॉलिसी रूटिंग और / या iptables में देखा है?
एलेक्सियो

जवाबों:


1

मैं दो अतिरिक्त विकल्पों के बारे में सोच सकता हूं, जिसमें BIND लॉग को पार्स करने या BIND के साथ हस्तक्षेप करने की आवश्यकता नहीं है।

1) पोर्ट मिररिंग - डुप्लिकेट पैकेट और उन्हें एक अलग पोर्ट पर भेजें जहां एक एप्लिकेशन सुन रहा है, डीएनएस अनुरोधों को पार्स कर रहा है, और कार्रवाई कर रहा है। 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)

जाहिर है, यह सिर्फ एक आदिम उदाहरण है। यह केवल उस डोमेन के नाम को प्रिंट करता है, जो क्वियर किया गया था, लेकिन आप निश्चित रूप से बहुत सारे तर्क जोड़ सकते हैं। यदि आप स्केप डॉक्यूमेंटेशन का संदर्भ लेते हैं, तो आप पाएंगे कि डीएनएस अनुरोध के सभी क्षेत्र आसानी से उपलब्ध हैं।


यह दिलचस्प लग रहा है। मैं इस पर गौर करूंगा। धन्यवाद :-)
गुन्नर

0

आप बाइंड-सर्वर लॉग की निगरानी करके ऐसा कर सकते हैं (क्वेरी लॉगिंग को चालू करना होगा)। सौभाग्य...


ध्यान दें कि सभी बाइंड प्रश्नों को लॉग करना एक गंभीर प्रदर्शन नाली है। मैं किसी भी उत्पादन-स्तर के आधिकारिक सर्वर पर इसकी सिफारिश नहीं करूंगा ।
शादुर

उस बाइंड-सर्वर के भार पर निर्भर करता है। और एक लॉग को राम-डिस्क पर लिख सकता /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

मार्गों का भार निर्धारित करना कोई समस्या नहीं है और यह ध्यान देने योग्य तरीके से प्रदर्शन को प्रभावित नहीं करेगा। आपको लगता है कि कॉरपोरेट राउटर्स के कितने रूट हैं? सैकड़ों? काफी नहीं ... और वे जरूरी नहीं कि एक हार्डवेयर हार्डवेयर विन्यास है। गंभीरता से, आप ठीक हैं, गंभीर ऑपरेटिंग सिस्टम विशेष रूप से कई मार्गों को संभालने और लुक अप को अनुकूलित करने के लिए डिज़ाइन किए गए हैं।

इसके अलावा आप पहली जगह में क्या करना चाहते थे, रूटिंग टेबल के शीर्ष पर एक डेटाबेस का उपयोग कर रहा है, जो एक अन्य प्रकार का डेटाबेस होगा। इसे सरल रखें। बीजीपी सर्वरों पर, कई मार्गों को वास्तव में राजनीतिक / वित्तीय कारणों के लिए चुना / पसंद किया जाता है, प्रत्येक आईएसपी / संगठन ऐसा कर सकते हैं और वे सभी इस उद्देश्य के लिए विशिष्ट मार्ग जोड़ते हैं। पारगमन की लागत या अदालती आदेश अक्सर ऐसे उपायों का कारण होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.