iptables 将流量复制到另一个 ip

cri*_*pto 8 networking linux router dd-wrt iptables

这篇博文有一个模板 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]
Run Code Online (Sandbox Code Playgroud)

我没有测试该命令,因为我没有要监视的特定 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]
Run Code Online (Sandbox Code Playgroud)

随着错误:

Try `iptables -h' or 'iptables --help' for more information.
Bad argument `–tee'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `–tee'
Run Code Online (Sandbox Code Playgroud)

然后我发现以下没有效果的帖子: Mirror Port via iptables

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

Mar*_*iae 24

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

相反,这里详细介绍新的 iptables 扩展,它们确实有效。特别是,它指出:

iptables 可以使用扩展目标模块:以下包含在标准发行版中。

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

球座

TEE 目标将克隆一个数据包并将此克隆重定向到本地网段上的另一台机器。换句话说,nexthop 必须是目标,或者如果需要,您将不得不配置 nexthop 以进一步转发它。

--网关ipaddr

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

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

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

名称 TEE 显然旨在提醒标准 tee 命令之一,该命令从标准输入读取并将输出(仅进入标准输出)克隆到用户指定的文件。数据包也是一样:规则适用的数据包被复制,一个被发送到其预定目的地,而新生成的克隆被发送到间谍目标。

因此,要在您的路由器(例如 192.168.1.1)上克隆 pc 192.168.1.15 的所有传入和传出流量。并重定向到间谍电脑 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
Run Code Online (Sandbox Code Playgroud)