OpenWRT राउटर के माध्यम से किए गए सभी DNS अनुरोधों को कैसे लॉग करें?


8

मेरे पास एक OpenWRT राउटर है जो dnsmasq चला रहा है। मैं एक ऐसी फाइल बनाना चाहता हूं जिसमें प्रत्येक डोमेन है जिसे राउटर के माध्यम से अनुरोध किया गया है। मेरा आउटपुट कुछ इस तरह दिखना चाहिए:

google.com
cnn.com
wikipedia.com
news.google.com
gmail.com

आदर्श रूप से कोई डुप्लिकेट नहीं होगा। मैं शायद एक क्रॉन नौकरी सेटअप कर सकता हूं जो कि यदि आवश्यक हो तो डुप्लिकेट को हटा देगा। अभी मैं उन्हें लॉग करने के लिए एक अच्छा तरीका निकालने की कोशिश कर रहा हूं। मैंने dnsmasq के विकल्पों को देखा। मुझे निम्नलिखित विकल्प मिले:

 -q, --log-queries                       Log DNS queries.
 -8, --log-facility=<facilty>|<file>     Log to this syslog facility or file. (defaults to DAEMON)
--log-dhcp                          Extra logging for DHCP.
--log-async[=<integer>]             Enable async. logging; optionally set queue length.

OpenWRT पर ये सेटिंग्स /etc/init.d/dnsmasq फ़ाइल में दफन होने लगती हैं। मैंने उन्हें बिना किसी किस्मत के सेट करने की कोशिश की। :-( क्या मेरा लक्ष्य पूरा करने का एक आसान तरीका है?

आह! थोड़ी सी हैकरी के साथ मैं इसे लॉग फ़ाइल में लिखने में सक्षम था। हालाँकि, यह मेरे पास इस सूची को बनाने के लिए आवश्यक डेटा नहीं है। शायद dnsmasq मैं यह करने के लिए क्या चाहते हैं नहीं कर सकता?


क्या आप कृपया पोस्ट कर सकते हैं कि आपने कैसे हासिल किया या फिर किसी भी उपयोगी संसाधन पर पुनर्निर्देशित किया जा सकता है
चन्नवीर हकारी

जवाबों:


11

आप विन्यास फाइल को संपादित कर सकते हैं:

vi /etc/dnsmasq.conf

    # /etc/dnsmasq.conf
    log-dhcp
    log-queries
    log-facility=/tmp/dnsmasq.log

या किसी अन्य कॉन्फ़िगरेशन फ़ाइल को संपादित करें:

vi /etc/config/dhcp

    config dnsmasq
        ...
        option logdhcp '1'
        option logqueries '1'
        option logfacility '/tmp/dnsmasq.log'

फिर सेवा फिर से शुरू करें:

/etc/init.d/dnsmasq restart

लॉग फ़ाइल को वास्तविक समय में पार्स किया जा सकता है tail+awk:

$ vi dnsmasq.awk

    #!/usr/bin/awk -f

    BEGIN {
      OFS = ",";
    }

    $5 == "query[A]" {
      time = mktime( \
        sprintf("%04d %02d %02d %s\n", \
          strftime("%Y", systime()), \
          (match("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3, \
          $2, \
          gensub(":", " ", "g", $3) \
        ) \
      );
      query = $6;
      host = $8;
      print time, host, query;
    }

$ chmod +x dnsmasq.awk

$ tail -f /tmp/dnsmasq.log | ./dnsmasq.awk

1468999090,192.168.1.100,google.com
1468999092,192.168.1.101,youtube.com
1468999095,192.168.1.102,facebook.com
1468999097,192.168.1.100,qa.sockets.stackexchange.com

अधिक उन्नत विधि वास्तविक समय में फ़ाइलबीट के माध्यम से लॉग को ईएलके को भेज रही है।


1
बहुत जानकारीपूर्ण उत्तर। धन्यवाद। :) भविष्य के पाठकों के लिए बस एक टिप: कृपया dnsmasq और dhcp दोनों को संपादित न करें। यदि आप नई सेटिंग्स को लागू करने का प्रयास करते हैं तो सिस्टम लॉग में आपको "अवैध रूप से दोहराया कीवर्ड ..." पंक्ति में त्रुटि मिलती है और dnsmas शुरू नहीं होगी। ऐसा इसलिए है क्योंकि dnsmasq स्वचालित रूप से / etc / config / dhcp से एक कॉन्फिगर फाइल बनाता है और log-facility=विकल्प दोहराया जाएगा। इसके अलावा, यदि आप लॉग-सुविधा निर्दिष्ट नहीं करते हैं, तो लॉग सिस्टम लॉग में लिखे जाएंगे।
सौरव घोष

3

आप tcpdump को स्थापित कर सकते हैं और पोर्ट 53 पर जा रहे पैकेट को सूँघ सकते हैं

tcpdump -i eth0 -l -vvv dst host 192.168.1.100 and dst port 53 >> dump.log

यह फ़ाइल वास्तव में बहुत तेज़ी से बढ़ेगी और आपका राउटर बहुत तेज़ी से मेमोरी से बाहर चलेगा। लॉग को बचाने के लिए एक usb स्टिक का उपयोग करने से इससे बचाव होगा।


2

में /etc/config/dhcpजोड़ने:

config dnsmasq
    [...]
    option logqueries '1'

और dnsmasq पुनः आरंभ करें।

लॉग को logread -fसिस्टमलॉग में लिखा जाएगा, टर्मिनल में या लूसी के माध्यम से देखें।


0

यह देखते हुए कि आप एक राउटर का उपयोग कर रहे हैं, यदि आप आंतरिक फ्लैश मेमोरी पर लॉग को बहुत लिखना चाहते हैं, तो यह फ्लैश मेमोरी के जीवन काल को संभवतः कम कर देगा।

यदि आपको किसी तीसरे पक्ष की सेवा पर अपनी लॉग इन करने से कोई आपत्ति नहीं है, तो क्या मैं आपके उद्देश्य को प्राप्त करने के लिए OpenDNS का उपयोग करने का सुझाव दे सकता हूं?

सैद्धांतिक रूप

  1. जैसे ही आपका राउटर WAN IP बदलता है, उसे आपके नए IP के OpenDNS को सूचित करने की आवश्यकता होती है।
  2. DNS लुकअप के लिए OpenDNS सर्वर का उपयोग करने के लिए आपके राउटर को कॉन्फ़िगर करने की आवश्यकता है।
  3. आपके नेटवर्क का DNS लुकअप इतिहास कुछ घंटों की देरी के बाद OpenDNS डैशबोर्ड पर दिखाई देगा। यहां, आप देख सकते हैं कि किसी डोमेन को सबसे अधिक बार आदेशित किया गया है और वह ग्राफ़ जो आपको प्रति घंटे लुकअप बताता है।

विवरण

एक ट्यूटोरियल से उद्धरण मैंने लिखा है

OpenDNS DNS-O-Matic सेटअप

सबसे पहले, हमें लॉग बनाए रखने के लिए DNS-O-Matic और OpenDNS पर एक खाते की आवश्यकता है।

  1. DNS-O-Matic ( www.dnsomatic.com) खाते के लिए साइन अप करें। विशेष वर्णों के बिना पासवर्ड का उपयोग करें। जहां तक ​​मुझे याद है, यह OpenWRT पर कॉन्फ़िगरेशन के साथ समस्या का कारण बना। लंबाई बढ़ने से आप पासवर्ड की ताकत के नुकसान की भरपाई कर सकते हैं।
  2. उसी लॉगिन क्रेडेंशियल का उपयोग करते हुए, OpenDNS डैशबोर्ड पर साइनइन करें ( dashboard.opendns.com)
  3. सेटिंग्स के तहत, अपने नेटवर्क को एक नाम से लेबल करें। मैं इसे 'होम' कहता हूं
  4. इसके लिए सेटिंग्स: <Your network label>इसे चुनें
  5. आँकड़े और लॉग पर क्लिक करें
  6. आंकड़े और लॉग सक्षम करें
  7. DNS-O-Matic पर वापस जाएं
  8. एक सेवा जोड़ें, OpenDNS
  9. अपना होम नेटवर्क चुनें

OpenWRT कॉन्फ़िगरेशन

हमें सार्वजनिक आईपी पते के परिवर्तन पर, यानी राउटर के रिबूट के कारण, WAN लिंक को गिरा दिया गया और पुन: कनेक्ट किया गया, आदि से OpenDNS को DNSD-O-Matic सेवा के माध्यम से अपडेट करने के लिए OpenWRT को कॉन्फ़िगर करने की आवश्यकता है।

नोट: ये चरण OpenWRT कैओस कैल्मर के लिए हैं।

महत्वपूर्ण: आपके राउटर पर उपलब्ध स्थान के आधार पर, आपको गैर-एसएसएल विकल्प का उपयोग करना पड़ सकता है।

  1. पर जाए System > Software
  2. अद्यतन सूची
  3. यदि आप एसएसएल का उपयोग करना चाहते हैं, तो इंस्टॉल करें ca-certificatesऔरwget
  4. यदि आप एसएसएल का उपयोग नहीं करना चाहते या करने में असमर्थ हैं, तो इंस्टॉल करें wget-nossl
  5. स्थापित करें ddns-scriptsऔरluci-app-ddns
  6. सेवा> डायनेमिक DNS पर नेविगेट करें
  7. एक नई प्रविष्टि जोड़ें और इसे कॉल करें dnsomatic
  8. चयन-कस्टम- DDNS सेवा प्रदाता
  9. http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=[IP]&wildcard=NOCHG&mx=NOCHG&backmx=NOCHGकुछ भी प्रतिस्थापित किए बिना कस्टम अपडेट-url सेट करें
  10. को होस्टनाम सेट करें dnsomatic.com
  11. अपना यूज़रनेम और पासवर्ड प्रविष्ट करें
  12. यदि आप SSL विकल्प का उपयोग कर रहे हैं, तो 'HTTP सिक्योर का उपयोग करें' जांचें
  13. URL का [IP] भाग 'IP पता स्रोत' और 'नेटवर्क' फ़ील्ड द्वारा 'उन्नत सेटिंग्स' के तहत परिभाषित किया जाएगा।
  14. सहेजें और लागू करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.