虚拟机透明代理存在问题

虚拟机透明代理存在问题

首先这里是基本拓扑:

  Internet
     |
  Gateway
     |
Workstation---eth0---virbr0
                       |
                       +-----+-----+
                       |     |     |
                      vm1   vm2   vm3 

我需要测试在我的工作站上运行的流量分析器,监听 eth0 上的某个端口(比如 8990)。

我想要的规则是“任何离开 virbr0 前往端口 80 的数据包都必须前往 eth0 上的端口 8990”。我在端口 8990 上运行的软件会自行检查 NAT 数据包处理,以便在检查完数据包后让数据包通过。

我一直在为此绞尽脑汁,想出各种不同的解决方案:

iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
    --to 10.0.0.10:8990

mangle我已经尝试了使用带有 --set-mark和的表格的更通用的方法ip rule add fwmark,但我没有得到它。

我想令我困惑的是所有东西都在同一个盒子上运行。

谢谢您的指导。

答案1

事实证明,这个问题毫无意义。Tcpdump 显示,虚拟机的子网 192.168.122.0/24 从未出现在内核路由决策中。我猜 libvirtd 在移交给内核网络堆栈之前会进行自己的网络处理。

回到绘图板。

相关内容