我正在进行一项实验,我需要通过一台特定的机器发送子网中所有机器的流量(为了监控所有流量,有点像中间人)
假设我有 3 个虚拟机(A,乙和C) 具有相同的 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 A
。nic0
您可以监控、拦截、更改、重定向...网络数据包,然后将其路由nic1
到网络的其余部分、互联网...
编辑1
拓扑
|----------|
| VM C |------
|----------| |
| |----------| nic0 |----------| nic1
|---| switch |----------| VM A |------
| |----------| |----------|
|
|----------| |
| VM B |-----|
|----------|
我的答案是基于我绘制的拓扑。网络 10.12.10.XXX 的所有流量都不会发送到网关。通信仅在交换机上结束。只有任何其他网络的流量才会发送到网关。
VM A
不会在有直接通信(如从到ssh)时VM B
接收任何数据包VM C
VM B
VM C
也nic1
可以在某个范围内。设置nic0
无网关和nic1
有网关。
如果您希望所有流量(本地流量和到网络的流量)都通过,VM A
则必须使用arp poisoning
。
很棒的软件埃特卡普
您可以使用 来安装它sudo apt-get install ettercap-graphical
。
如何这里。
详细编辑2
Arp 中毒基于 OSI 第 2 层,与路由完全不同。它基于交换机 ASIC 芯片。交换机中的 ASIC 芯片对ip
和mac
地址。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 地址属于您的,nic0
但VM A
交换机不知道这一点。您VM A
接收数据包,执行某些操作,然后转发到VM C
。
这是向您解释 Arp 中毒如何起作用的最简单的方法。
Ettercap 是我最喜欢的工具之一:)