Como posso obter o roteamento de cliente OpenVPN sem NAT no Linode

3

Configurei uma rede OpenVPN e ela está funcionando corretamente, no sentido de que posso acessar as máquinas internas / LAN do cliente remoto. No entanto, meu problema é que todo o tráfego das máquinas remotas aparece nas máquinas LAN como se viesse da máquina do servidor OpenVPN, e não da máquina cliente.

Para melhor explicar, considere minha topologia de rede:

AMáquinaRconectadaaoservidorOpenVPNnaMáquinaAerecebeuoendereçoIPde10.200.200.5.

AMáquinaRfazumasolicitaçãoaoApachesendoexecutadonaMáquinaB.Asolicitaçãochegacorretamenteeeureceboumaresposta.OproblemaéqueaMáquinaBvêopedidovindode192.168.0.10(IPdaMáquinaA)enão10.200.200.5.

Eugostariadoúltimo.

Minhaconfiguraçãoatual

MáquinaA

Esteéumtrechodasregrasrelevantesdoiptables:

*nat:PREROUTINGACCEPT[18:1080]:INPUTACCEPT[0:0]:OUTPUTACCEPT[0:0]:POSTROUTINGACCEPT[0:0]-APOSTROUTING-oeth0-jMASQUERADE*filter:INPUTACCEPT[0:0]:FORWARDACCEPT[0:0]:OUTPUTACCEPT[0:0]//snip#acceptincomingVPNconnections-AINPUT-pudp-mudp--dport1194-jACCEPT#forwardVPNtraffic-AFORWARD-s10.200.200.0/25-d192.168.128.0/17-itun0-jACCEPT-AFORWARD-itun+-oeth0-mstate--stateRELATED,ESTABLISHED-jACCEPT-AFORWARD-ieth0-otun+-mstate--stateRELATED,ESTABLISHED-jACCEPT

Tambémhabiliteiip_forwarding:

echo1>/proc/sys/net/ipv4/ip_forward

..efezasalteraçõesapropriadasno/etc/sysctl.confparatorná-lopermanente.

NaconfiguraçãodoOpenVPN,tenho:

server10.200.200.0255.255.255.128push"route 192.168.0.0 255.255.255.0"

Máquina B

Como a Máquina A não é o gateway da Máquina B, adicionei manualmente uma rota na Máquina B da seguinte maneira:

ip route add 10.200.200.0/25 via 192.168.0.10 dev eth0

Para testar qual IP está sendo roteado, criei um pequeno script PHP chamado showip.php :

<?php echo "Your IP is: ", $_SERVER['REMOTE_ADDR'], "\n"; ?>

Máquina R

# wget -q -O - http://192.168.0.11/showip.php
Your IP is: 192.168.0.10

Como faço para dizer 10.200.200.5?

Atualizar

Para esclarecer, no meu caso particular, a Máquina A tem uma placa de rede (eth0) que serve tanto a LAN como a WAN.

    
por Oz Solomon 16.05.2014 / 01:30

3 respostas

1

Respondendo minha própria pergunta:

Como pano de fundo adicional, essas máquinas são hospedadas no Linode. Acontece que eles usam mapas estáticos em seus switches para rotear o tráfego para nós específicos na LAN. Como os IPs de origem da VPN não fazem parte desses mapas estáticos, o tráfego não foi roteado em lugar nenhum.

Então, isso acaba sendo um problema específico do Linode, mas espero que isso ajude os outros a saber disso.

    
por 20.05.2014 / 19:32
1

Como você descobriu que a conexão entre a Máquina A e a Máquina B não é realmente uma Ethernet comutada e que ela só pode manipular o tráfego usando os endereços IP atribuídos, você precisa encontrar outra solução.

Isto pode ser conseguido através do uso de um túnel. Existem vários tipos de túneis que podem ser usados. Uma delas é usar a VPN, que pode ser a mais simples, já que a Máquina A já é um servidor VPN. Então você só precisa fazer da Máquina B um cliente VPN e, em seguida, adicionar as entradas da tabela de roteamento para encaminhar os prefixos necessários através dessa conexão VPN.

Outra opção é usar um túnel GRE ou simplesmente IP sobre IP. Esses túneis e rotas associadas podem ser configurados estaticamente, o que lhes daria uma vantagem sobre a abordagem VPN.

    
por 20.05.2014 / 19:47
0

Na Máquina A você tem uma regra NAT, que faz com que ela altere o IP do cliente antes de rotear os pacotes para a Máquina B. O primeiro que você precisa fazer é remover essa regra NAT, de modo que os pacotes sejam encaminhados à Máquina B sem modificações.

Essa alteração pode fazer com que as conexões parem de funcionar, se a tabela de roteamento na Máquina B estiver incompleta. O que acontece nesse caso é que os pacotes são entregues corretamente à Máquina B, mas não tem uma rota para entregar as respostas de volta. Isso fará com que ele não responda de forma alguma ou envie as respostas para a Internet em vez de para o servidor VPN.

Na Máquina B, você pode tentar adicionar uma rota com o seguinte comando ip route add 10.200.200.0/24 via 192.168.0.10

    
por 18.05.2014 / 11:25