В прошлом треде [Как взломать компьютер без адреса в сети?] мне указали на ошибки, что затея вобщем-то фейловая. Хотя изначально, вот прям в самом-самом начале, я планировал что будет виртуалка получать IP и сидеть в интернете, а другие виртуалки по соседству будут пускать различные сервисы, ну а хост-система вообще никак в этом деле не участвовать, тобишь даже локального доступа из какой-то виртуалки на хост быть не должно. Тогда хост выполняет роль «танка». Да.
В общем ладно. Вернёмся к тому с чего начали. Пусть хост сидит в интернете и сам тогда раздаёт интернет виртуалкам.
Остался открытым вопрос, как лучше форвардить трафик с хоста на виртуалки? Известно как, важнее знать как лучше. В бридже каждая виртуалка будет видиться как обычное устройство внутри локалки.
----------
| Интернет |
----------
|
|
--------
| ПеКа | 192.168.0.1
--------
|
| 192.168.0.0/24 br0
____________|_______________
| | |
---------- ---------- ---------
| | | | | |
| ПеКа | | ПеКа | | KVM |
| | | | | |
---------- ---------- ---------
|
192.168.0.2 192.168.0.3 192.168.0.4
|
----------
| |
| VM |
| |
----------
192.168.0.5 tap0 master br0
Первый вариант
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.5:80
Когда мы тупо форвардим всё как есть со своего порта на порт нужного хоста. Работает на уровне ядра и всё круто.
Второй
iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 80
Форвардить весь трафик на 80 порт нашего же хоста, а у нас будет крутиться nginx который в зависимости от... будет сам форвардить сырой трафик далее к нужным виртуалкам. Работает на уровне пользователя, чуть помедленее, но например, на этом уровне можно настроить обработку SSL-сертификатов, чтобы это делал nginx, а далее к виртуалкам уже пропускал чистый трафик... Из этого метода можно извлечь свои плюшки, nginx может балансировать трафик и кучу всякого такого.
Третий
Ваш вариант, предложите как лучше форвардить трафик на виртуалки. Спасибо.