Направлять весь трафик с IP на виртуальную машину

Ситуация: У меня есть выделенный сервер (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.

2
задан 13 April 2017 в 15:14
1 ответ

Ваше второе правило соответствует 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>
2
ответ дан 3 December 2019 в 11:34

Теги

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