Canalize todo o tráfego em um IP para uma VM

2

Situação: Eu tenho um servidor dedicado (CentOS 6) com algumas VMs (Cent OS 7 e Windows Server 2012 R2) no Virtual Box. Poucas aplicações estão sendo executadas no Windows e podem ser acessadas pelo IP principal (X.X.105.20) usando o proxy padrão. O aplicativo hospedado na VM do Linux precisa estar acessível a partir de um IP diferente (X.X.109.118) (o segundo endereço IP do servidor).

O que eu tentei: Até agora, tentei com o encaminhamento de IP de esta questão do SF , mas o aplicativo não está acessível.

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

BTW, o aplicativo é acessível a partir do Windows Guest, bem como do CentOS Host

Editar com base no comentário: Eu tenho dois domínios. Alguns aplicativos da Web baseados em .net estão sendo executados no servidor Windows usando subdomínios de um dos domínios. E estou usando outro nome de domínio para o aplicativo em execução no Linux. Portanto, o acesso é baseado em nome para o primeiro domínio (e seus subdomínios), que também está usando o endereço IP principal. O segundo domínio que eu registrei para o endereço IP adicional X.X.1.118. O ping também é bom (usando IP e nome de domínio). Tudo que eu quero é este IP poderia enviar (e receber) toda a comunicação para a VM em 192.168.56.102.

    
por Anup Sharma 08.01.2016 / 08:18

1 resposta

2

Sua segunda regra está combinando 192.168.56.102 como destino, mas a cadeia POSTROUTING precisa ser usada para reescrever o destino dos pacotes que chegam em (--source) de 192.168.56.102 (a resposta).

Altere sua segunda regra para:

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

ou

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

Você está enviando todos os pacotes tcp com destino X.X.109.118 para a VM linux, então você não pode ter nenhum servidor web escutando este endereço no host dedicado.

Certifique-se de que o apache não esteja escutando no endereço IP que você está encaminhando para evitar que os pacotes sejam processados pela corrente INPUT .

Ou você pode ter um host virtual baseado em nome configurado para o domínio, mas apenas ouvir no endereço (just this virtualhost listening on X.X.109.118) e remover as regras do iptables.

ou seja:

<Virtualhost X.X.109.118:443>
[...]
</Virtualhost>
    
por 13.01.2016 / 15:36