我现在iptables阻止所有的UDP通信,但是我想只允许某些DNS查询通过。
我们以google.com为例。
我正在尝试使用string匹配来查找请求中的域名,并允许它。 这是我想出来的。
iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --string "google.com" --algo bm -j ACCEP T
虚拟主机DocumentRoot不被更改
无法parsing在Apache下的PHP域名
如何在Ubuntu上为Apache2configuration子域名?
查询完整的DNSlogging
我也试过 – --dport 53而不是 – --sport 。 没有骰子。
如果有人知道如何做到这一点,或看到我出错的地方,请大家帮忙!
谢谢,Jarred
在所有传出数据包的TCP / IP标头中修改目标端口
Nginx + DNS设置
IP和Nginx作为反向代理出错
我怎样才能以编程方式更改我的Windows域的密码?
带login错误的hyper-v回滚:此工作站与主域之间的信任关系失败
我知道这有点晚,但是因为你还没有解决问题
如果你用wireshark或类似的方式查看DNS请求数据包的内容,你会发现不使用点字符。 域名的每个部分都是一个计数的字符串,因此google.com的请求的实际字节将为:
06 67 6f 6f 67 6c 65 03 63 6f 6d
第一个字节(06)是google的长度,接着是6个ASCII字符,然后是com长度的计数字节(03),然后是…你明白了。
要在iptables中匹配,请使用以下命令:
iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --hex-string "|06|google|03|com" -algo bm -j ACCEPT
--hex-string参数解析提供的字符串,查找由垂直条对分隔的十六进制值。 在竖线之外的任何东西都被解释为ASCII文本。
ACCEPT udp -- anywhere anywhere udp dpt:domain STRING match "|06676f6f676c6503636f6d|" ALGO name bm TO 65535
您可以稍微调整规则 – 并加快速度 – 通过使用--to和--to参数限制搜索范围。
我发现用带点的字符串是不可靠的。
这将工作:
iptables -A OUTPUT -o eth0 -p udp --port 53 -m string --string google --algo bm -j ACCEPT
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。