通过一台机器发送子网内的所有流量

通过一台机器发送子网内的所有流量

我正在进行一项实验,我需要通过一台特定的机器发送子网中所有机器的流量(为了监控所有流量,有点像中间人)

假设我有 3 个虚拟机(AC) 具有相同的 IP 范围 ( 10.12.10.x),并且我希望C通过 VM 发送通信流量A

我删除了默认网络条目C10.12.10.0路由表并添加了通过虚拟机的路由A,此外我接受虚拟机上的所有传入和传出流量A通过 iptables,但是它不起作用。

您是否知道如何使用路由表/iptables 操作或其他方法来配置这种情况?

答案1

开始吧。

首先添加一张以太网卡VM A。在不同网络上配置新的以太网卡VM A,并访问网络上的其余部分、互联网...

设置将是这样的

VM C

ip: 10.12.10.C 
nm: 255.255.255.xxx 
gw: 10.12.10.A

VM B

ip: 10.12.10.B
nm: 255.255.255.xxx
gw: 10.12.10.A

VM A

nic0 # eth card to the VM C and B

ip: 10.12.10.A
nm: 255.255.255.xxx

nic1 # new eth through will be route traffic out to rest of the network

ip: new_ip_from_different_range
nm: new_subnet_mask
gw: new_gw

现在我们需要设置VM A来接受来自的流量VM B and C

首先要启用 IP 转发。可以使用

echo "1" > /proc/sys/net/ipv4/ip_forward

然后,我们将添加一条规则,告诉转发流量

sudo iptables -A FORWARD -i nic0 -o nic1 -j ACCEPT
sudo iptables -A FORWARD -i nic1 -o nic0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o nic1 -j MASQUERADE

这样,来自的流量nic0就可以通过到达网络的其余部分nic1

用您接口的真实名称替换nic1和。nic0

概括

所有来自 的流量都VM C and B将被路由到开启的网关VM Anic0您可以监控、拦截、更改、重定向...网络数据包,然后将其路由nic1到网络的其余部分、互联网...

编辑1

拓扑

    |----------|
    |  VM C    |------
    |----------|     |
                     |   |----------|    nic0  |----------| nic1
                     |---|  switch  |----------|   VM A   |------
                     |   |----------|          |----------|
                     |
    |----------|     |
    |   VM B   |-----|
    |----------|

我的答案是基于我绘制的拓扑。网络 10.12.10.XXX 的所有流量都不会发送到网关。通信仅在交换机上结束。只有任何其他网络的流量才会发送到网关。 VM A不会在有直接通信(如从到ssh)时VM B接收任何数据包VM CVM BVM C

nic1可以在某个范围内。设置nic0无网关和nic1有网关。

如果您希望所有流量(本地流量和到网络的流量)都通过,VM A则必须使用arp poisoning

很棒的软件埃特卡普

您可以使用 来安装它sudo apt-get install ettercap-graphical

如何这里

详细编辑2

Arp 中毒基于 OSI 第 2 层,与路由完全不同。它基于交换机 ASIC 芯片。交换机中的 ASIC 芯片对ipmac地址。Arp 中毒是一种技术,用于告诉交换机 适用于任何 ip,在我们的示例中,mac 地址是 的 mac 地址nic0

IP 配置是

虚拟机

ip: 10.12.10.C 
nm: 255.255.255.xxx 
gw: 10.12.10.GW

VM B

ip: 10.12.10.B
nm: 255.255.255.xxx
gw: 10.12.10.GW

VM A

nic0

ip: 10.12.10.A
nm: 255.255.255.xxx
gw: 10.12.10.GW

在手册中,我发布在编辑 1 中,您将看到成功 Arp 中毒后,arp 看起来像这样

arp on VM C


Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.A            ether   xx:xx:xx:xx:xx:aa   C                     eth0
xxx.xxx.xxx.B            ether   xx:xx:xx:xx:xx:aa   C                     eth0

VM B 上的 arp

Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.A            ether   xx:xx:xx:xx:xx:aa   C                     eth0
xxx.xxx.xxx.C            ether   xx:xx:xx:xx:xx:aa   C                     eth0

在直接通信中,当交换机从VM B指向的 IP 地址接收到数据包时VM C,它们会查看存储在 ASIC 芯片中的 arp 表并决定将数据包发送到xx.xx.xx.xx.xx.aa。此 mac 地址属于您的,nic0VM A交换机不知道这一点。您VM A接收数据包,执行某些操作,然后转发到VM C

这是向您解释 Arp 中毒如何起作用的最简单的方法。

Ettercap 是我最喜欢的工具之一:)

相关内容