最好是类似的东西iptables
。基本上,我想像在中的IP一样进行域过滤/白名单/黑名单iptables
。关于如何执行此操作有什么建议吗?
最好是类似的东西iptables
。基本上,我想像在中的IP一样进行域过滤/白名单/黑名单iptables
。关于如何执行此操作有什么建议吗?
Answers:
如果使用带有iptables规则的名称解析来丢弃流量,则将在创建该规则期间解析名称。如果发生更改,您的规则将不再有效。这可能是一个解决方案(不是beautyfull的解决方案...):
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
从局域网内的另一台主机:
# host www.facebook.com
www.facebook.com A record not found, try again
基本上,您是对每个udp/53
具有www.facebook.com to
丢弃的十六进制字符串的dns packet()说。请注意,这将删除名称解析,而不是http通信本身。
用pipe (|03|www|08|facebook|03|com
)分隔的十六进制数字表示.
dns查询上的点simbol。它会说出以下几个字符将代表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.....
但要记住:
也许您问题的答案为时已晚,但最近我需要解决一个类似的问题,谷歌将我带到这里
搜索失败后,我用C语言编写了一个小实用程序,用于拦截DNS响应,将其域名与给定的正则表达式进行比较,并列出匹配的IP地址。它在这里:https : //github.com/vmxdev/sidmat/
您无需设置自己的DNS服务器,该实用程序可以捕获来自任何服务器的DNS响应
例如,要查看立即解析的facebook.com(和子域)IP地址,您可以运行
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
其中eth0是路由器上的网络接口(或DNS响应通过的地方)
您可以轻松地将其与iptables集成(或将iptables与ipset集成)
但:
对于列入黑名单的最简单方法可能是使用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。