Ситуация: У меня есть выделенный сервер (CentOS 6) с парой виртуальных машин (Cent OS 7 и Windows Server 2012 R2) в Virtual Box. Некоторые приложения работают в Windows и доступны с основного IP-адреса (X.X.105.20) с использованием мод-прокси. Приложение, размещенное на виртуальной машине Linux, должно быть доступно с другого IP-адреса (X.X.109.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-адрес X.X.1.118. Пинг тоже в порядке (с использованием IP и доменного имени). Все, что мне нужно, это этот IP-адрес, который мог бы отправлять (и получать) все сообщения виртуальной машине по адресу 192.168.56.102.
Ваше второе правило соответствует 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>