Перенаправьте трафик c через виртуальную машину с одним интерфейсом - PullRequest
0 голосов
/ 10 июля 2020
• 1000 Б) но с одним интерфейсом. Что-то вроде Man In The Middle, но с обычными командами ip, iptables. Обе машины - VirtualBox Ubuntu 18.04.

Сначала я создал такую ​​топологию: ВМ A - интерфейс (внутренняя сеть) ВМ B - интерфейс (внутренняя сеть enp0s8), интерфейс (NAT enp0s3)

С командами на виртуальной машине B:

sysctl net.ipv4.conf.all.forwarding=1
sysctl net.ipv6.conf.all.forwarding=1
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE 

и командами на виртуальной машине A:

ip route добавить значение по умолчанию через

, но потом я начал задаваться вопросом, есть ли для этого более элегантное решение. (Более элегантный интерфейс == 1 вместо 2). Я написал себе эти 3 цели, которые, как мне кажется, будут правильными для этого:

(ВМ A и ВМ B настроены в сети только для хоста)

  1. Изменить маршрут по умолчанию на ВМ Аналогично предыдущему решению (знаю, как это сделать)
  2. На виртуальной машине B - пересылать трафик c от виртуальной машины A к хосту (но таким образом, чтобы различать guish трафик виртуальной машины A c от ВМ B)
  3. На ВМ B - перенаправить трафик c с хоста на ВМ A (но опять же, как лучше всего отличить guish трафик c, возможно, с портами ?)

Буду очень благодарен за любой совет. Особенно, если кто-то может сказать, верен ли мой образ мышления (эти 3 пункта).

1 Ответ

0 голосов
/ 10 июля 2020

Я не думаю, что есть более элегантное решение, чем подход nat-interface.

Вы можете попытаться настроить VM-A так, чтобы VM-B использовалась в качестве шлюза по умолчанию, а ваш хост (рабочая станция? ), чтобы использовать VM-B в качестве шлюза в вашу сеть. Теперь вам нужно создать правила брандмауэра, которые блокируют широковещательные рассылки, так что ваш vm-a не может разрешить вашу рабочую станцию ​​и установить прямые соединения.

Итак, подход с «внутренним net» и VM-B поскольку NAT к хосту требует двух сетевых интерфейсов, но это определенно намного меньше работы, и я даже не уверен, действительно ли ваш подход с одним net -интерфейсом будет работать.

...