2016-06-24 4 views
0

Вот моя проблема. У меня 3 виртуальных машин, работающих на Linux и три моста Каждая из них имеет два интерфейса (по одному для каждого моста) Например:Общайтесь между двумя виртуальными машинами через другую виртуальную машину

  • ВМ1: i0 для br0 и i2 для Br2
  • VM2: i1 для br1 и i0 для BR0
  • VM3: i1 для br1 и i2 для Br2

Вот условия: - VM1 и VM3 должны общаться между ними через VM2 - пакеты, идущие от VM1 к VM3 идти через br0 и br1 - но пакеты от VM3 к VM1 идут только через Br2

     <------- 
    ---------------------br2------------------- 
    |           | 
**VM1**----br0-----**VM2**-----br1--------**VM3** 
     ------>    --------> 

Моя первая идея состояла в том, чтобы использовать NAT благодаря правилам Iptables, но я не уверен, что это сработает, так как пакеты должны принять два Differents пути (br0-br1 и br2)

Мой второй один, чтобы использовать питон скрипт с scappy

есть ли у вас какие-либо идеи?

Извините за мой плохой английский. Как вы можете видеть, я вообще не владею английским языком:

ответ

0

Предполагая, что все виртуальные машины находятся в одной и той же подсети IP, они попытаются достичь друг друга.

Теперь, например, вы хотите заставить VM1 поговорить с VM3 через VM2. Если вы дадите VM1 понять, как достичь VM3, он будет транслировать запрос arp, и VM3 ответит «эй, это я! Вот мой адрес mac». Таким образом, VM1 отправит IP-пакеты непосредственно в VM3.

Но ... вы можете fool VM1, добавив к нему arp cache запись с IP-адресом VM3, связанным с адресом MAC-адреса VM2. В Linux вы делаете это с:

arp -s <IP address> <mac address> 

Итак, теперь, когда VM1 должен поговорить с VM3, он будет не сделать запрос агр, потому что он уже знает макинтош адрес адресата. Он с радостью отправит IP-пакеты для VM3 в NIC VM2. В этот момент, предполагая, что VM2 принимает выполнение некоторой пересылки пакетов и не имеет правил iptables, запрещающих такую ​​вещь, он затем повторно отправляет пакеты в real VM3.

Возможно, вам даже не нужны все эти мосты, если только они вам не нужны по другим причинам.

Если это решение работает для вас, запись кэша ARP может быть постоянным путем добавления строки в файле /etc/network/interfaces:

up arp -s <IP address> <mac address> 

Таким образом, запись в кэше ARP устанавливается каждый раз, когда NIC (т.е. когда машина загружается).

 Смежные вопросы

  • Нет связанных вопросов^_^