如何根据主机名标记数据包?

col*_*der 0 firewall ip iptables linux-networking packet

我们可以通过以下方式根据 IP 地址标记数据包 -

iptables -A FORWARD -t mangle -s 123.2.3.4 -j MARK --set-mark 1

如何根据主机名标记数据包?我试过这个 -

iptables -A FORWARD -t mangle -s google.co.in -j MARK --set-mark 1

但是iptables实用程序google.co.in从 DNS获取 IP 地址并将条目添加到 mangle 表中。如何标记来自 的所有数据包google.co.in,而不仅仅是来自 Google 的单个服务器。由于有数千台服务器,手动添加所有 IP 地址也是不可能的。

有没有办法读取数据包并获取主机名并进行标记?

谢谢你。

Jas*_*tin 6

防火墙规则不在 DNS 级别运行。在某些情况下,iptables 会为您进行 DNS 解析,但结果不会是您要查找的内容,并且不会跟踪 DNS 名称中的 IP 更改。

相反,您需要一个 HTTP 代理,例如 Squid 及其传出数据包标记 ( http://www.squid-cache.org/Doc/config/tcp_outgoing_mark/ ) 功能来处理这种行为。

对于传入流量,如果您对 GoogleBot 特别感兴趣,您可以查看非官方 IP 范围列表,例如https://evert.meulie.net/faqwd/googlebot-ip-ranges/并为此设置您的 iptables。