Ситуация: У меня есть выделенный сервер (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, так и из хоста CentOS
Редактировать на основе комментария : У меня два домена. Несколько веб-приложений на основе .net работают на сервере Windows с использованием поддоменов одного из доменов. И я использую другое доменное имя для приложения, работающего в Linux. Таким образом, его доступ на основе имени для первого домена (и его поддоменов), который также использует основной IP-адрес. Второй домен Я зарегистрировал на дополнительный IP-адрес XX1.118. Пинг тоже в порядке (с использованием IP и доменного имени). Все, что мне нужно, это этот IP-адрес, который мог бы отправлять (и получать) все сообщения виртуальной машине по адресу 192.168.56.102.
Ваше второе правило соответствует 192.168.56.102
в качестве пункта назначения, но цепочка POSTROUTING
должна использоваться для перезаписи пункта назначения пакетов, приходящих ] (- источник)
из 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 с адресом XX109.118
к виртуальной машине linux, поэтому вы не можете заставить веб-сервер прослушивать этот адрес на выделенном узле.
Убедитесь, что apache не прослушивает IP-адрес, который вы пересылаете, чтобы избежать передачи пакетов обрабатывается цепочкой INPUT
.
Или вы можете настроить виртуальный хост на основе имени для домена, но только прослушивать адрес (только этот виртуальный хост прослушивает XX109.118)
и удалите правила iptables.
то есть:
<Virtualhost X.X.109.118:443>
[...]
</Virtualhost>