Tercihen benzer bir şey iptables
. Temel olarak, IP'lerde yaptığım gibi alan adı filtreleme / beyaz liste / kara liste yapmak istiyorum iptables
. Bunun nasıl yapılacağı konusunda herhangi bir öneriniz var mı?
Tercihen benzer bir şey iptables
. Temel olarak, IP'lerde yaptığım gibi alan adı filtreleme / beyaz liste / kara liste yapmak istiyorum iptables
. Bunun nasıl yapılacağı konusunda herhangi bir öneriniz var mı?
Yanıtlar:
Trafiği iptables kurallarıyla ad çözümlemesini kullanarak bırakırsanız, adlar bu kuralın oluşturulması sırasında çözümlenir. Bir şey değişirse, kuralınız artık geçerli olmayacaktır. Bu bir çözüm olabilir (güzel bir çözüm değil ...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
LAN içindeki başka bir ana bilgisayardan:
# host www.facebook.com
www.facebook.com A record not found, try again
Temel olarak, udp/53
onaltılık dize www.facebook.com to
bırakılan her dns paketine ( ) söylüyorsunuz . Bunun http trafiğinin kendisini değil ad çözümlemesini düşüreceğini unutmayın.
Pipetler ( |03|www|08|facebook|03|com
) ile ayrılmış onaltılık sayılar .
, dns sorgularındaki nokta simbolunun temsilidir. Aşağıdaki karakterlerden kaç tanesinin bir FQDN'nin (ana bilgisayar, etki alanı, üst düzey etki alanı) her bölümünü temsil edeceğini söyleyecektir. Örnek:
konak: mail.google.com
onaltılı gösterim: 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"görsel sunum: 04mail06google03com
Paketi tcpdump ile almak:
# 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.....
Ama hatırla:
Belki sorunuzun cevabı çok geç, ama son zamanlarda benzer bir sorunu çözmem gerekiyordu ve google beni buraya getiriyor
Başarısız aramalardan sonra, C'de DNS yanıtlarını engelleyen, içindeki etki alanı adını verilen normal ifadeyle karşılaştıran ve eşleşen IP adreslerini listeleyen küçük bir yardımcı program yazdım. İşte: https://github.com/vmxdev/sidmat/
Kendi DNS sunucunuzu kurmanıza gerek yoktur, yardımcı program herhangi bir sunucudan DNS yanıtlarını yakalayabilir
Örneğin, şu anda çözülen facebook.com (ve alt alan adları) ip adreslerini görmek için şunu çalıştırabilirsiniz:
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
Burada eth0, yönlendiricideki ağ arabirimidir (veya DNS yanıtlarının geçtiği yerde)
Iptables (veya ipset ile iptables) ile kolayca entegre edebilirsiniz
Fakat:
Kara liste için en kolay yol muhtemelen dnsmasq kullanmaktır
Yüklemek dnsmasq
$ sudo apt-get install dnsmasq
ve bu satırı şuraya ekle: /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
Bu, facebook.com'u ve tüm alt alanlarını engeller .
Not: Ubuntu için bu gönderiye bakın .
Yerel bir önbellek bağlama9 çalıştırıyorsanız, genellikle bir dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
ve dummy-block
dosya:
$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
Ayrıca bakınız:
BIND9 ve ISC-DHCP Running ile facebook.com
örneğin.
Web Reklamcılığını Engellemek için Basit DNS Tabanlı Bir Yaklaşım