Bagaimana cara mencatat semua permintaan DNS yang dilakukan melalui router OpenWRT?

7

Saya memiliki router OpenWRT yang menjalankan dnsmasq. Saya ingin membuat file yang memiliki setiap domain yang telah diminta melalui router. Output saya akan terlihat seperti ini:

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

Idealnya tidak akan ada duplikat. Saya mungkin bisa mengatur pekerjaan cron yang akan menghapus duplikat jika perlu. Saat ini saya sedang mencari cara yang bagus untuk mencatatnya. Saya melihat opsi untuk dnsmasq. Saya menemukan opsi berikut:

 -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.

Pada OpenWRT, pengaturan ini sepertinya dimakamkan di file /etc/init.d/dnsmasq. Saya mencoba mengaturnya tanpa hasil. :-( Apakah ada cara yang lebih mudah untuk mencapai tujuan saya?

Ah! Dengan sedikit hackery, saya bisa membuatnya menulis ke file log. Namun, tidak memiliki data yang saya butuhkan untuk membuat daftar ini. Mungkin dnsmasq tidak bisa melakukan apa yang saya inginkan?

exvance
sumber
Bisakah Anda memposting bagaimana Anda mencapai atau bahkan dapat mengarahkan ke sumber daya yang berguna
Channaveer Hakari

Jawaban:

11

Anda dapat mengedit file konfigurasi:

vi /etc/dnsmasq.conf

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

Atau edit file konfigurasi lain:

vi /etc/config/dhcp

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

Kemudian mulai kembali layanan:

/etc/init.d/dnsmasq restart

File log dapat diuraikan secara real-time dengan 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

Metode yang lebih maju adalah mengirim log melalui filebeat ke ELK secara realtime.

kev
sumber
1
Jawaban yang sangat informatif. Terima kasih. :) Hanya tip untuk pembaca masa depan: Tolong jangan edit dnsmasq dan konfigurasi dhcp. Anda DAPAT mendapatkan kesalahan "ilegal kata kunci berulang pada baris ..." di log sistem jika Anda mencoba menerapkan pengaturan baru dan dnsmasq tidak akan mulai. Ini karena dnsmasq secara otomatis menghasilkan file config dari / etc / config / dhcp dan log-facility= Opsi akan diulang. Selain itu, Jika Anda tidak menentukan fasilitas log, log akan ditulis ke log sistem.
Sourav Ghosh
3

Anda dapat menginstal tcpdump dan mengendus paket yang menuju ke port 53

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

File ini akan tumbuh sangat cepat dan router Anda akan kehabisan memori dengan sangat cepat. Menggunakan usb stick untuk menyimpan log akan mencegah hal ini.

Joe
sumber
2

Di /etc/config/dhcp menambahkan:

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

dan mulai ulang dnsmasq.

Log akan ditulis ke log sistem, lihat dengan logread -f di terminal atau melalui LuCi.

dersimn
sumber
0

Karena Anda menggunakan router, jika Anda ingin banyak menulis log ke memori flash internal, ini akan menurunkan masa pakai memori flash yang berpotensi merusaknya.

Jika Anda tidak keberatan log Anda muncul di layanan pihak ke-3, bolehkah saya menyarankan menggunakan OpenDNS untuk mencapai tujuan Anda?

Secara konseptual

  1. Segera setelah router Anda mengubah IP WAN, router harus memberi tahu OpenDNS tentang IP baru Anda.
  2. Router Anda perlu dikonfigurasi untuk menggunakan server OpenDNS untuk pencarian DNS.
  3. Riwayat pencarian DNS jaringan Anda akan muncul di OpenDNS Dashboard meskipun setelah beberapa jam penundaan. Di sini, Anda dapat melihat berapa kali suatu domain telah diminta dipesan oleh paling atas dan juga grafik yang memberitahu Anda pencarian per jam.

Detail

Kutipan dari tutorial yang saya tulis

Pengaturan OpenDNS DNS-O-Matic

Pertama, kita membutuhkan akun di DNS-O-Matic dan OpenDNS untuk memelihara log.

  1. Mendaftar untuk DNS-O-Matic ( www.dnsomatic.com ) akun. Gunakan kata sandi tanpa karakter khusus. Sejauh yang saya ingat, ini menyebabkan masalah dengan konfigurasi pada OpenWRT. Anda dapat mengkompensasi hilangnya kekuatan kata sandi dengan menambah panjang.
  2. Menggunakan kredensial login yang sama, masuk di OpenDNS Dashboard ( dashboard.opendns.com )
  3. Di bawah Pengaturan, beri label jaringan Anda dengan nama. Saya menyebutnya 'Rumah'
  4. Pengaturan untuk: <Your network label>, pilih ini
  5. Klik pada Stats and Logs
  6. Aktifkan statistik dan log
  7. Kembali ke DNS-O-Matic
  8. Tambahkan layanan, OpenDNS
  9. Pilih jaringan rumah Anda

Konfigurasi OpenWRT

Kita perlu mengonfigurasi OpenWRT untuk memperbarui OpenDNS melalui layanan DNS-O-Matic setelah perubahan alamat IP publik, mis. Karena reboot router, tautan WAN terjatuh dan terhubung kembali, dll.

Catatan: Langkah-langkah ini untuk OpenWRT Chaos Calmer.

Penting: Bergantung pada ruang yang tersedia pada router Anda, Anda mungkin harus menggunakan opsi non-SSL.

  1. Navigasi ke System > Software
  2. Perbarui daftar
  3. Jika Anda ingin menggunakan SSL, instal ca-certificates dan wget
  4. Jika Anda tidak ingin atau tidak dapat menggunakan SSL, instal wget-nossl
  5. Memasang ddns-scripts dan luci-app-ddns
  6. Navigasikan ke Layanan & gt; DNS dinamis
  7. Tambahkan entri baru dan panggil saja dnsomatic
  8. Pilih -custom- Penyedia Layanan DDNS
  9. Setel URL pembaruan kustom ke http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=[IP]&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG tanpa mengganti apa pun
  10. Tetapkan nama host ke dnsomatic.com
  11. Masukkan nama pengguna dan kata sandi Anda
  12. Periksa ‘Gunakan HTTP Secure’ jika Anda menggunakan opsi SSL
  13. Bagian [IP] dari URL akan diganti seperti yang didefinisikan oleh ‘bidang alamat IP‘ dan ‘Jaringan’ di bawah ‘Pengaturan Lanjut’.
  14. Simpan & amp; Menerapkan
Leow Kah Man
sumber