通过 iptables 镜像端口

wis*_*shi 11 networking iptables linux-kvm

我有一个专用的 Linux (Debian 7.5) 根服务器,并设置了许多来宾服务器。来宾是 KVM 实例,并通过桥接工具(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 
Run Code Online (Sandbox Code Playgroud)

我对其他服务也做同样的事情,让它们保持独立、NATed 和隔离。

但是一个来宾应该是网络监视器,并且应该执行网络流量检查(如 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
Run Code Online (Sandbox Code Playgroud)

非常感谢 :)

Pat*_*Pat 15

通过以下方式在根服务器预路由模块 Mangle 表规则之前添加:

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee
Run Code Online (Sandbox Code Playgroud)

然后通过类似的方式在路由后模块 Mangle 表规则之前添加

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 
Run Code Online (Sandbox Code Playgroud)

其中 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> 
Run Code Online (Sandbox Code Playgroud)

但你也可以使用类似的东西

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1
Run Code Online (Sandbox Code Playgroud)

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1
Run Code Online (Sandbox Code Playgroud)

这里TEE现在是一个目标,其在PREROUTING需要更多的像IE选项-i-p