Задать вопрос
@Drno

Как правильно написать правила iptables для проброса и SNAT?

Есть сервера, админкой у хостера выступает VM Cloud Director.
Выделено несколько IP адресов внешних, сейчас каждый из них переадресовывается с помощью NAT с Director на отдельную ВМ.

Что хочется - привязать IP к 1 ВМ.

Как выглядит сейчас -
В Director прописан DNAT + SNAT на каждый внешний адрес и адрес виртуалки
Пример DNAT 1.1.1.1 >> 10.13.39.2
Пример SNAT 10.13.39.2 >> 1.1.1.1

Далее мне надо на виртуалке получить это и переадресовать дальше, для примера сейчас так выглядит IPTABLES
iptables -t nat -A PREROUTING -p tcp --dport 443 -i ens160 -j DNAT --to 55.55.55.55:50000;
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE;

Я могу присвоить виртуалке несколько локальных IP адресов, например
10.13.39.2
10.13.39.3
10.13.39.4
10.13.39.5

И в Director переадресовать на эти IP трафик с внешних адресов
Но как тогда на виртуалке правильно прописать iptables ? потому что если я делаю просто masquerade, то инет ломается, т.к. видимо пакет должен уходить с того же IP. на который пришел...

Что хочу получить -
iptables -t nat -A PREROUTING -p tcp --dport 443 -s 10.13.39.2 -j DNAT --to 55.55.55.55:50000;
iptables -t nat -A PREROUTING -p tcp --dport 443 -s 10.13.39.3 -j DNAT --to 66.66.66.66:50000;
iptables -t nat -A PREROUTING -p tcp --dport 443 -s 10.13.39.4 -j DNAT --to 77.77.77.77:50000;
итд
  • Вопрос задан
  • 254 просмотра
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
1. Для редиректа http и https трафика на виртуальные машины проще использовать nginx в режиме reverse proxy и т.п. Можно поднять его на отдельной ВМ и редиректить оттуда.
2. MASQUERADE и SNAT работают ТОЛЬКО для пакетов, появившихся на виртуальной машине, никакого отношения к пакетам, пришедшим на виртуальную машину извне они не имеют. Если вы настраиваете доступ на сервисы на ВМ для клиентов снаружи через NAT - вам нужно открыть доступ только для PREDOUTING -j DNAT и ну и разрешить прохождение транзитного трафика в ядре и в таблице iptables FORWARD. SNAT здесь никак участвовать не будет.
3. MASQUERADE меняет адрес источника в заголовке уходящего с виртуальной машины пакета на адрес интерфейса, откуда он уходит наружу, и происходит это уже после принятия решения о маршрутизации.
4. Если вы хотите выдавать внешние адреса виртуальным машинам, то зачем вообще нужен NAT? По идее есть возможность создать виртуальный свитч, где будут находиться и сетевой интерфейс самого директора и сетевые интерфейсы ВМ
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы