iptables 将流量复制到另一个 ip

iptables 将流量复制到另一个 ip

博客文章有一个模板 iptables 规则,用于将流量转发到另一个 IP 地址。

    iptables -t mangle -A POSTROUTING \
    -d [IP to spy on] \
    -j ROUTE –tee –gw [IP of wireshark]

   iptables -t mangle -A PREROUTING \
    -s [IP to spy on] \
    -j ROUTE –tee –gw [IP of wireshark]

由于我没有想要监视的特定 IP,因此我没有测试该命令。

但是我尝试了以下操作,但似乎存在语法问题:

    iptables -t mangle -A POSTROUTING \
    -j ROUTE –tee –gw [IP of wireshark]

   iptables -t mangle -A PREROUTING \
    -j ROUTE –tee –gw [IP of wireshark]

出现错误:

Try `iptables -h' or 'iptables --help' for more information.
Bad argument `–tee'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `–tee'

然后我发现以下帖子没有任何效果: 通过 iptables 镜像端口

最终目标,将所有来源和所有目的地的所有流量(传入和传出)复制到特定 IP。

答案1

ROUTE 补丁是一个内核补丁,需要将其应用于 Linux 内核源代码才能iptables工作:你可以找到这里所有相关信息。但是,此网页中详述的补丁相当老旧(2005 年),我不确定它们是否能在新内核版本上正常工作。

相反,新的 iptables 扩展是详细的这里还有这些工作。特别是,它指出:

iptables 可以使用扩展目标模块:标准分布中包含以下内容。

因此它们应该可供任何拥有标准 Linux 版本的人使用。目标扩展之一是 TEE,他们对此声明:

球座

TEE 目标将克隆一个数据包并将此克隆重定向到当地的网络段。换句话说,下一跳必须是目标,否则您将必须配置下一跳以根据需要进一步转发它。

--网关 IP 地址

将克隆的数据包发送到可通过给定 IP 地址访问的主机。使用 0.0.0.0(对于 IPv4 数据包)或 ::(IPv6)无效。

将 eth0 上的所有传入流量转发到网络层日志记录框:

-t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1

TEE 这个名字显然是为了让人想起标准的 tee 命令,它从标准输入读取数据,并将输出(直接输出到标准输出)克隆到用户指定的文件。这里的数据包也是一样:规则适用的数据包会被复制,其中一个被发送到其预定的目的地,而新创建的克隆被发送到监视目标。

因此,要克隆路由器上 PC 192.168.1.15(例如,192.168.1.1)的所有传入和传出流量,并重定向到监视 PC 192.168.1.100,请使用:

 iptables -t mangle -A PREROUTING -d 192.168.1.15 -j TEE --gateway 192.168.1.100
 iptables -t mangle -A PREROUTING -s 192.168.1.15 -j TEE --gateway 192.168.1.100

相关内容