IPTables 字符串匹配重定向

IPTables 字符串匹配重定向

问题:我当前正在将端口 80 请求重定向到端口 1000 上的另一个系统。

这样做是这样的:

iptables -t nat -A PREROUTING ! -s 172.20.1.2 -p tcp --dport 80 -j DNAT --to-destination 172.20.1.2:1000

但是,当添加-m string --algo kmp --string 'MSIE'到包含 MSIE 的过滤数据包时,由于预路由仅评估第一个 SYN 数据包(因此缺少带有我尝试评估的标头的 HTTP 数据包),它们将被忽略

被打破的规则:

iptables -t nat -A PREROUTING ! -s 172.20.1.2 -p tcp --dport 80 -j DNAT --to-destination 172.20.1.2:1000 --algo kmp -m string --string 'MSIE'

我的问题:如何评估 HTTP 标头并重定向数据包或在发生字符串匹配时触发系统事件?

答案1

引用手册页:

DNAT(特定于 IPv4)

该目标仅在 nat 表、PREROUTING 和 OUTPUT 链以及仅从这些链调用的用户定义链中有效。

换句话说:你输了,这是不可能的。这是显而易见的,因为您无法在连接中间更改目标地址(而不在新目的地修复目标地址)。

你想要应用层,你就需要一个应用程序。将所有数据包重定向到(透明)代理,该代理可以决定如何处理连接。

相关内容