通过 iptables 镜像端口

通过 iptables 镜像端口

我有一台专用的 Linux (Debian 7.5) 根服务器,其中设置了一些客户机。客户机是 KVM 实例,通过 bridge-utils (NAT、内部 IP、使用主机作为网关) 获得网络访问权限。

例如,一个 KVM 是我的 WebServer 客户机,它可以通过主机 IP 以如下方式访问:

    iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z 
--dport 80 -j DNAT --to-destination  192.168.100.X:80 

我对其他服务也采取了同样的措施,使它们保持自给自足、NAT化和隔离。

但一个客户机应该作为网络监视器,并应执行网络流量检查(如 IDS)。通常,在非虚拟设置中,我会使用 VACL 或 SPAN 端口来镜像流量。当然,在这台主机内,我无法做到这一点(容易地,因为我不想使用复杂的虚拟交换方法)。

  1. 我可以使用 iptables 获取端口镜像,并将所有入口和出口流量重定向到一个 KVM 客户机吗?所有客户机都有一个专用接口,例如vnet1
  2. 是否可以根据协议有选择地转发流量(例如 VACL 转发规则,它仅抓取 HTTP)?
  3. 当我需要将其保留vnet1为管理接口(带有 IP)时,客户机是否需要特定的接口设置?

我很高兴能指出正确的方向:

iptables         1.4.14-3.1
linux            3.2.55
bridge-utils     1.5-6

多谢 :)

答案1

那么如何通过以下方式在根服务器预路由模块 Mangle 表规则中添加以下内容:

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee

然后通过类似以下方式添加后路由模块 Mangle 表规则

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 

其中 192.168.200.1 是网络监视器。

这些规则将镜像所有传入和传出流量并将其转发到 192.168.200.1

编辑:

mangle table specific
  -j ROUTE            (explicitly route packets, valid at PREROUTING)
      options:
      --iface <iface_name>
      --ifindex <iface_idx> 

但你也可以使用类似

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

其中TEEnow 是一个目标,它PREROUTING需要更多选项,例如 ie -i、、-p

相关内容