Rota de tráfego entre redes OpenVPN

1

O objetivo é ter o servidor OpenVPN principal e várias sub-redes OpenVPN acessíveis aos principais clientes do servidor. Todos os servidores de sub-redes também são clientes do servidor principal.

Aqui estão as configurações:

  • configuração principal do servidor

port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.0.0.0 255.255.0.0 push "route 10.0.0.0 255.255.0.0" push "route 10.1.0.0 255.255.0.0" client-config-dir ccd client-to-client keepalive 10 120 tls-server tls-auth ta.key 0 comp-lzo

  • ccd/subserver1

ifconfig-push 10.0.0.6 10.0.0.5 iroute 10.1.0.0 255.255.0.0

  • config subserver (como cliente do servidor principal)

client dev tun proto udp remote <ip> 1194 remote-random resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert subserver1.crt key subserver1.key tls-client tls-auth ta.key 1 cipher BF-CBC comp-lzo verb 3 pull

  • config subserver (como servidor de sub-rede)

port 1195 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.1.0.0 255.255.0.0 push "route 10.0.0.0 255.255.0.0" push "route 10.1.0.0 255.255.0.0" client-to-client keepalive 10 120 tls-server tls-auth ta.key 0 comp-lzo persist-key persist-tun

  • Regras de tabelas IP no servidor principal

iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -o eth0 -j MASQUERADE

Eu suponho que algo está faltando no iptables, eu não tenho experiência suficiente para descobrir isso. O mais fácil é usar a opção push "dhcp-option DNS 10.1.0.1" na configuração principal do servidor. Existe alguma maneira de configurar o servidor DNS no servidor OpenVPN? Ou alguma outra maneira de lidar com isso?

ATUALIZAÇÃO (2.03.2016)

Veja o que consegui alcançar: Diagrama de rede

Rotas principais do servidor:

0.0.0.0 <external ip> 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 10.0.0.2 255.255.0.0 UG 0 0 0 tun0 10.0.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.1.0.0 10.0.0.2 255.255.0.0 UG 0 0 0 tun0 10.2.0.0 10.0.0.2 255.255.0.0 UG 0 0 0 tun0

Rotas Subserver1:

0.0.0.0 <external ip> 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 10.0.0.5 255.255.0.0 UG 0 0 0 tun1 10.0.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1 10.1.0.0 10.1.0.2 255.255.0.0 UG 0 0 0 tun0 10.1.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.2.0.0 10.0.0.5 255.255.0.0 UG 0 0 0 tun1

Rotas do Client1:

0.0.0.0 <external ip> 0.0.0.0 UG 0 0 0 eth0 10.1.0.0 10.1.0.5 255.255.0.0 UG 0 0 0 tun0 10.1.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0

Com isso eu poderia ssh para os subservers do superusuário usando tun0 e tun1 ips (e isso me confunde muito). Depois disso, consegui me conectar aos clientes, mas agora há conexão direta. Tenho certeza que perdi o último passo, mas não consigo entender.

iptables -A FORWARD -s 10.0.0.0/16 -d 10.1.0.0/16 -j ACCEPT no subserver1 não alterou nada.

ATUALIZAÇÃO (3.03.2016)

  • Servidor principal:

root@stage:~# iptables -L -nv Chain INPUT (policy ACCEPT 212K packets, 40M bytes) pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 74 5416 ACCEPT all -- tun0 eth0 10.0.0.0/16 10.1.0.0/16 ctstate NEW

Chain OUTPUT (policy ACCEPT 223K packets, 34M bytes) pkts bytes target prot opt in out source destination root@stage:~# iptables -t nat -L -nv Chain PREROUTING (policy ACCEPT 9664 packets, 695K bytes) pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 9641 packets, 694K bytes) pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 29987 packets, 2269K bytes) pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 29828 packets, 2260K bytes) pkts bytes target prot opt in out source destination 179 11363 MASQUERADE all -- * * 10.0.0.0/16 10.1.0.0/16

Todas as outras máquinas não possuem regras de iptables.

    
por Anatoly Maltsev 28.02.2016 / 18:30

0 respostas