अधिमानतः कुछ इसी तरह के iptables
। मूल रूप से, मैं डोमेन फ़िल्टरिंग / श्वेत-सूचीकरण / ब्लैकलिस्टिंग करना चाहता हूं जैसे कि मैं आईपी के साथ करूंगा iptables
। क्या ऐसा करने के बारे में कोई सिफारिशें हैं?
iptables
जा सकता है लेकिन यह पासा हो सकता है
अधिमानतः कुछ इसी तरह के iptables
। मूल रूप से, मैं डोमेन फ़िल्टरिंग / श्वेत-सूचीकरण / ब्लैकलिस्टिंग करना चाहता हूं जैसे कि मैं आईपी के साथ करूंगा iptables
। क्या ऐसा करने के बारे में कोई सिफारिशें हैं?
iptables
जा सकता है लेकिन यह पासा हो सकता है
जवाबों:
यदि आप iptables नियमों के साथ नाम रिज़ॉल्यूशन का उपयोग करके ट्रैफ़िक छोड़ते हैं, तो उस नियम के निर्माण के दौरान नाम हल हो जाएंगे। यदि कुछ बदल जाता है, तो आप नियम अब मान्य नहीं होंगे। यह एक समाधान हो सकता है (एक ब्यूटीफुल एक नहीं ...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
LAN के अंदर किसी अन्य होस्ट से:
# host www.facebook.com
www.facebook.com A record not found, try again
मूल रूप से, आपका हर डीएनएस पैकेट ( udp/53
) कह रहा है कि हेक्साडेसिमल स्ट्रिंग को www.facebook.com to
गिरा दिया गया है। ध्यान दें कि यह नाम रिज़ॉल्यूशन को छोड़ देगा, न कि http ट्रैफ़िक को।
पाइप के साथ अलग किए गए हेक्स संख्या ( |03|www|08|facebook|03|com
) .
डीएनएस प्रश्नों पर डॉट सिंबल का प्रतिनिधित्व है । यह कहेगा कि निम्नलिखित में से कितने चार्टर्स एक FQDN (होस्ट, डोमेन, शीर्ष-स्तरीय डोमेन) के प्रत्येक भाग का प्रतिनिधित्व करेंगे उदाहरण:
मेज़बान: mail.google.com
हेक्स प्रतिनिधित्व: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"दृश्य प्रतिनिधित्व: 04mail06google03com
पैकेट को tcpdump के साथ प्राप्त करना:
# tcpdump -i eth0 -X dst port 53
15:50:11.643672 IP xxx.xxx.xxx.xxx:xxx > ns4.google.com.domain: 16530 A? mail.google.com. (33)
0x0000: 4500 003d 779a 4000 4011 b390 c949 4742 E..=w.@.@....IGB
0x0010: d8ef 260a 8424 0035 0029 0fc0 4092 0000 ..&..$.5.)..@...
0x0020: 0001 0000 0000 0000 046d 6169 6c06 676f .........mail.go
0x0030: 6f67 6c65 0363 6f6d 0000 0100 01 ogle.com.....
लेकिन याद रखें:
हो सकता है कि आपके प्रश्न का उत्तर बहुत देर से मिला हो, लेकिन हाल ही में मुझे इसी तरह की समस्या को हल करने की आवश्यकता थी और Google मुझे यहां लाता है
असफल खोजों के बाद मैंने सी में एक छोटी सी उपयोगिता लिखी जो डीएनएस-प्रतिक्रियाओं को स्वीकार करती है, इसमें दिए गए रेगेक्स और सूचीबद्ध आईपी पते के मुकाबले डोमेन नाम की तुलना करता है। यहाँ यह है: https://github.com/vmxdev/sidmat/
आपको अपना स्वयं का DNS सर्वर सेट करने की आवश्यकता नहीं है, उपयोगिता किसी भी सर्वर से DNS प्रतिक्रियाओं को पकड़ सकती है
उदाहरण के लिए, facebook.com (और उपडोमेन) आईपी पते देखने के लिए जिन्हें अभी हल किया गया है आप चला सकते हैं
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
जहां eth0 राउटर पर नेटवर्क इंटरफेस है (या जहां DNS प्रतिक्रियाएं गुजरती हैं)
आप इसे आसानी से iptables (या ipset के साथ iptables) के साथ एकीकृत कर सकते हैं
परंतु:
सबसे आसान तरीका ब्लैकलिस्ट करने के लिए शायद dnsmasq का उपयोग करना है
इंस्टॉल dnsmasq
$ sudo apt-get install dnsmasq
और इस लाइन को जोड़ें /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
यह facebook.com और इसके सभी उप डोमेन को ब्लॉक कर देगा ।
नोट: ubuntu देखें इस पोस्ट ।
यदि एक स्थानीय कैशिंग bind9 चल रहा है, तो यह अक्सर एक द्वारा महसूस किया जाता है dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
और dummy-block
फ़ाइल:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
* IN A 127.0.0.1
यह सभी देखें:
facebook.com
उदाहरण के साथ BIND9 और ISC-DHCP चलाना ।
वेब विज्ञापन ब्लॉक करने के लिए एक सरल डीएनएस-आधारित दृष्टिकोण