我们可以通过以下方式根据 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
但是该实用程序从 DNSiptables
获取 IP 地址并将条目添加到 mangle 表中。如何标记来自 的所有数据包,而不仅仅是来自 Google 的单个服务器。由于有数千台服务器,手动添加所有 IP 地址也是不可能的。google.co.in
google.co.in
有什么方法可以读取数据包并获取主机名并标记它?
谢谢。
答案1
防火墙规则不在 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。
答案2
“由于服务器数量达数千台,手动添加所有 IP 地址也是不可能的。”
您可以建立并维护所有 google AS 的小列表,然后根据这些网络范围添加防火墙规则。
也许你甚至可以在互联网上找到所有的 google AS。
(看一下