কীভাবে ডিএনএস একটি রেকর্ড অনুরোধ সংগ্রহ করবেন?


15

আমাকে Aরেডহ্যাট পিসিতে সমস্ত আউটগোয়িং রেকর্ড রেকর্ড করতে হবে । আমি ব্যবহার করার চেষ্টা করেছি tcpdump:

tcpdumpdns=OUTPUT-FILENAME-HERE
nohup tcpdump -K dst port 53 -w $tcpdumpdns > /dev/null 2>&1 &

এটি একটি আউটপুট ফাইল তৈরি করে:

19:26:12.185392 IP 172.16.0.6.57977 > google-public-dns-a.google.com.domain: 51198+ A? yahoo.com. (27)

সুতরাং আমার এটি প্রক্রিয়া করা দরকার yahoo.com:

echo $tcpdumpdns | awk '/ A\? / {u = NF - 1; print $u}' | sed 's/^www.//g; s/.$//g' | sort -u

বহির্গামী সমস্ত Aরেকর্ড অনুরোধ সংগ্রহ করার জন্য এর চেয়ে ভাল সমাধান কি আছে ?

পিএস: ডিএনএস সংগ্রহ করা একটি রেকর্ডগুলির কেবলমাত্র এইচটিটিপিএস এর মাধ্যমে অ্যাক্সেসযোগ্য ওয়েবসাইটগুলির একটি আধুনিক তালিকা থাকতে হবে। তাই আমি এইচটিটিপিএসএসইওয়ারি ফায়ারফক্স অ্যাড-অনের জন্য এক্সএমএল ফাইল তৈরি করতে পারি। সুতরাং এটি একটি স্ক্রিপ্টের কেবল একটি অংশ।


আপনি যে সমাধানটি দিয়েছিলেন তাতে কী সমস্যা?
— মাইকেল মরোজেক

আপনার যদি জিইআইআই এনভিউ থাকে, যদি তাই হয় তবে ওয়্যারশার্ক-জিটিকে ব্যবহার করা সহজ সমাধান, কারণ আপনি সেখানে খুব সহজেই ফিল্টার করতে পারেন।
— হানান এন।

@ হানান এন .: জিইউআই কোনও বিকল্প নয়। এটি স্বয়ংক্রিয় হওয়া দরকার।
— ল্যান্সবায়নেস

@ মিশেল মরোজেক: আমি আশা করি কিছুই হবে না। তবে আমি জিজ্ঞাসা করেছি কারণ আমি বিকল্প সমাধানের জন্য উন্মুক্ত।
— ল্যান্সবায়নেস

উত্তর:


12

ওয়্যারশার্ক ব্যবহার করুন:

tshark -f "udp port 53" -Y "dns.qry.type == A and dns.flags.response == 0"

2
আমি পেয়েছিtshark: "A" cannot be found among the possible values for dns.qry.type.
— জ্যাক ও'কনোর

3
@ জ্যাকও'কনর ইস্যুটি সমাধান করতে, টাইপ এ ডিএনএস রেকর্ডের দশমিক মান ১. সুতরাং, এটি কাজ করা উচিত:tshark -f "udp port 53" -Y "dns.qry.type == 1 and dns.flags.response == 0"
— রোলিনহ

13

আপনার যদি ওয়্যারশার্ক ইনস্টল না থাকে তবে

tcpdumpdns=/tmp/tcpdumps
tcpdump -lvi any "udp port 53" | tee $tcpdumpdns

আপনার জন্য কাজ করা উচিত। যেহেতু আপনি আউটপুটটিকে শেষের দ্বিতীয় থেকে সীমাবদ্ধ করতে চেয়েছিলেন তাই আমি আপনার লগ ফাইলটি এর সাথে পার্স করব:

grep -E 'A\?' $tcpdumpdns |sed -e 's/^.*A? //' -e 's/ .*//'|sort -u

আপনি যদি এটি সরাসরি চান তবে:

tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}'

এটি করা উচিত, (এখানে সেড এবং অ্যাজক বিনিময়যোগ্য; এবং আমি বিশ্রী বাছাই করব))


grep -E 'A\?' $tcpdumpdns |sed 's/^.*A? //;s/ .*//'|sort -uটাইপ করতে কম
— অ্যালেক্সেক্স রোচে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.