Redircionar de eth0 para vmnet1 [RESOLVIDO]

1. Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 14/09/2009 - 17:00h

Olá, tenho uma maquina virtual num RHEL. O servidor fisico esta numa faixa de ip no eth0 (192.168.1.xxx). A maquina virtual esta na vmnet1 faixa de ip 192.168.2.xxx.

O ip do servidor é 192.168.1.50 e 192.168.2.1.
A maquina virtual 192.168.2.2.

Preciso que todas as entradas da porta 80, 22 e 8080 no 192.168.1.50 sejam redirecionadas para o 192.168.2.2. Gostaria de ajuda para fazer isso. Estou tentando com o iptables sem sucesso (não tenho muita experiencia com isso).

Obrigado.


  


2. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/09/2009 - 17:27h

Seguinte:

iptables -t nat -A PREROUTING -i eth0 -o vmnet1 -s 192.168.1.50 -p tcp --dport 80 -j REDIRECT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eth0 -o vmnet1 -s 192.168.1.50 -p tcp --dport 8080 -j REDIRECT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eth0 -o vmnet1 -s 192.168.1.50 -p tcp --dport 22 -j REDIRECT --to-destination 192.168.2.2


3. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 15/09/2009 - 09:48h

Deu erro no REDIRECT com --to-destination. Mudei para DNAT e agora deu erro no PREROUTING:

iptables v1.3.5: Can't use -o with PREROUTING

Pode me ajudar mais um pouco?!

obrigado



4. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 15/09/2009 - 10:09h

-o significa output, saindo pela interface.
PREROUTING significa antes de rotear, ou seja, logo que o pacote entra em uma interface. Por isto não tem como usar -o com PREROUTING pois o pacote ainda não está saindo por lugar algum. Sairá ao ser ROTEADO (FORWARD) ou depois do roteamento (POSTROUTING)

REDIRECT é apenas quando queres redirecionar o tráfego para uma nova porta da mesma máquina. Quando é outra máquina deve-se usar o DNAT.

O renato pacheco apenas se equivocou com o REDIRECT (que tu corrigiu) que com a última linha. As corretas são estas:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.2

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to 192.168.2.2

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to 192.168.2.2

Ah, no Vmware a vmnet1, por padrão, é HOST-ONLY, logo terias que ligar o roteamento na mão, caso ainda não o tenhas feito.

Isto pode ser realizado no servidor:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i vmnet1 -j ACCEPT
iptables -A FORWARD -o vmnet1 -j ACCEPT

As duas regras anteriores são desnecessárias se a política FORWARD estiver em ACCEPT.



5. elgio

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/09/2009 - 10:30h

Engraçado... depois q eu havia dado essa resposta eu percebi q não poderia t colocado o "-o", mas com relação ao REDIRECT e ao DNAT eu não sabia q o REDIRECT era só pra msm máquina.


6. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 15/09/2009 - 12:32h

Muito obrigado pela ajuda, mas não consegui fazer funcionar.

Setei essas regras no iptables mas não funcionou. Preciso do seguinte:

Tenho uma maquina física numa rede que possue somente 1 ip (192.168.1.50) disponivel. A minha maquina virtual (192.168.2.1 - host only) esta rodando servidor apache. Preciso disponibilizar para qualquer pc na rede 192.168.1.0 acessar pelo browser esse servidor.

Pensei em redirecionar tudo do pc fisico pro virtual pelo iptables, mas não estou conseguindo.

Agradeço qualquer ajuda.


7. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 15/09/2009 - 14:28h

Amigo.
Como eu disse estás usando o modo host-only do vmware.

Ele foi feito para ser host-only :-D

Agora queres que o host-only não seja mais "only" :-D

Ou mudas a placa do vmware para NAT e as regras irão funcionar (apenas considerando que onde é vmnet1 deverá ser vmnet8) ou configuras o CLIENTE de forma correta.


Sim, pois em modo host-only o DHCP do vmware não passa para o cliente informações de DNS e nem de gateway. NADA. Tens que colocar na mão.

Ou então (SIC) fazer um duplo nat inserindo, além das regras já citadas, mais esta:

iptables -t nat -A POSTROUTING -o vmnet1 -j MASQUERADE



8. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 15/09/2009 - 16:38h

Mudei para NAT e nada. quando vou em outro computador(192.168.1.x) e tento acessar http://192.168.1.50/ ainda dá erro.

Eu devo estar fazendo algo muito errado. Tem alguma idéia do que possa ser?

Muito obrigado pela ajuda e paciência!


9. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 15/09/2009 - 16:39h

Na verdade não erro, mas se eu ligo o apache do 192.168.1.50 cai nele ao invés de redirecionar para o apache do 192.168.2.2.

o traceroute me retorna isto:

1 localhost.local (192.168.1.50) 0.278 ms 0.272 ms 0.281 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *



10. Re: Redircionar de eth0 para vmnet1 [RESOLVIDO]

Willian
reiswn

(usa Debian)

Enviado em 16/09/2009 - 11:11h

Após ler mais sobre o funcionamento do iptables consegui. Aqui esta como fiz.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-dest 192.168.2.2
iptables -A FORWARD -p tcp -i eth0 --dport 80 -d 192.168.2.2 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.50 -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.2 -o eth0 -j SNAT --to 192.168.1.50
iptables -t nat -A POSTROUTING -s 192.168.2.2 -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o vmnet8 -j MASQUERADE

echo "1" > /proc/sys/net/ipv4/ip_forward

Obrigado aos que ajudaram.
[]`s






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts