首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables只能对特定域名进行DNS查询吗?

iptables只能对特定域名进行DNS查询吗?
EN

Stack Overflow用户
提问于 2012-12-31 11:02:24
回答 2查看 20.7K关注 0票数 16

我有iptables阻止所有的UDP流量,但我想只允许某些DNS查询通过。

让我们以google.com为例。

我正在尝试使用字符串匹配来查找请求中的域名,并允许它。这就是我想出来的。

iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --string "google.com" --algo bm -j ACCEPT

我还尝试了--dport 53而不是--sport。没有骰子。

如果有人知道如何做到这一点,或者看到我的错误所在,我们将非常感谢您的帮助!

谢谢,Jarred

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-19 14:24:49

我知道这有点晚了,但既然你还没有结束这个问题...

如果您查看wireshark或类似版本中的DNS请求数据包的内容,您会发现没有使用点字符。域名的每一部分都是一个经过统计的字符串,因此google.com请求的实际字节数为:

代码语言:javascript
复制
06 67 6f 6f 67 6c 65 03 63 6f 6d

第一个字节(06)是google的长度,后跟6个ASCII码字符,然后是com长度的计数字节(03),最后是...你明白了吧。

要在iptables中匹配这一点,请使用以下命令:

代码语言:javascript
复制
iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --hex-string "|06|google|03|com" -algo bm -j ACCEPT

--hex-string参数解析提供的字符串,查找由竖线对分隔的十六进制值。竖线之外的任何内容都被解释为ASCII文本。

如果在添加条目后列出输出表,您将发现类似以下内容:

代码语言:javascript
复制
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain STRING match  "|06676f6f676c6503636f6d|" ALGO name bm TO 65535

您可以使用--from--to参数限制搜索范围,从而稍微调整规则并加快速度。

票数 27
EN

Stack Overflow用户

发布于 2013-03-08 22:07:38

我发现这对于带点的字符串是不可靠的。

这将会起作用:

代码语言:javascript
复制
iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --string google --algo bm -j ACCEPT
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14096966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档