Канал всего трафика на IP к VM

Ситуация: у меня есть выделенный сервер (CentOS 6) с парой виртуальных машин (Cent OS 7 и Windows Server 2012 R2) в Virtual Box. Несколько приложений работают в Windows и доступны с основного IP-адреса (XX105.20) с использованием мод-прокси. Приложение, размещенное на виртуальной машине Linux, должно быть доступно с другого IP-адреса (XX109.118)(второй IP-адрес сервера).

Что я пробовал: До сих пор я пытался с переадресацией IP из этого вопроса SF, но приложение недоступно.

iptables -t nat -A PREROUTING -p tcp -d X.X.109.118 -j DNAT --to-destination 192.168.56.102
iptables -t nat -A POSTROUTING -p tcp -d 192.168.56.102 -j SNAT --to-source X.X.109.118


iptables -I FORWARD -m state -d 192.168.56.102 --state NEW,RELATED,ESTABLISHED -j ACCEPT

Кстати, приложение доступно как из Windows Guest, так и из CentOS Host

Редактировать на основе комментария: у меня есть два домена. Несколько веб-приложений на основе.net работают на сервере Windows с использованием поддоменов одного из доменов. И я использую другое доменное имя для приложения, работающего в Linux. Таким образом, это доступ на основе всех имен для первого домена (и его поддоменов), который также использует основной IP-адрес. Второй домен, который я зарегистрировал на дополнительный IP-адрес XX1.118. Пинг также хорош (с использованием как IP, так и доменного имени). Все, что я хочу, это то, что этот IP-адрес мог отправлять (и получать) все сообщения на виртуальную машину в 192.168.56.102.

1 ответ

Ваше второе правило совпадает 192.168.56.102 как пункт назначения, но POSTROUTING цепь должна быть использована для перезаписи места назначения пакетов (--source) от 192.168.56.102 (ответ).

Измените ваше второе правило на:

iptables -t nat -A POSTROUTING -p tcp -s 192.168.56.102 -j SNAT --to-source X.X.109.118

или же

iptables -t nat -A POSTROUTING -p tcp -s 192.168.56.102 -j MASQUERADE

Вы отправляете все TCP-пакеты с адресатом X.X.109.118 на виртуальной машине Linux, так что вы не можете иметь веб-сервер, прослушивающий этот адрес на выделенном хосте.

Убедитесь, что apache не прослушивает IP-адрес, который вы пересылаете, чтобы избежать обработки пакетов INPUT цепь.

Или вы можете иметь виртуальный хост на основе имени, настроенный для домена, но прослушивающий только адрес (just this virtualhost listening on X.X.109.118) и удалите правила iptables.

то есть:

<Virtualhost X.X.109.118:443>
[...]
</Virtualhost>
Другие вопросы по тегам