Comandos de roteamento OpenVPN em geral

Comandos de roteamento OpenVPN em geral

Tenho uma situação conforme descrita abaixo: 1- Tenho 2 servidores OpenVPN (servidor A e servidor B).

2- Os clientes se conectam a cada servidor via VPN, sem LANs diretas.

3- Servidor B conectado como cliente VPN ao Servidor A.

4- Servidor B executa 2 instâncias OpenVPN

5- Asuume Laptop B conectado via VPN ao Servidor B, preciso que ele chegue ao Servidor A (pelo menos).

6- Servidor A VPN DHCP é 10.8.0.0/24

7- Servidor B VPN DHCP é 172.30.0.0/16

8- O servidor B possui IP estático 10.8.0.101 (cliente VPN)

  • O problema é que não consigo acessar o Servidor A do Laptop B. E o Servidor A não consegue acessar o Servidor B no IP do servidor VPN, não no IP do cliente.

Estrutura de rede (imagem)

A configuração de rede é a seguinte:

Configuração do servidor A

    [root@localhost ~]# ifconfig
eth0      inet addr:X.X.X.X  Bcast:X.X.X.255  Mask:255.255.255.0


eth0:0    inet addr:X.X.X.X  Bcast:X.X.255.255  Mask:255.255.0.0


lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0


tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:629066 errors:0 dropped:0 overruns:0 frame:0
          TX packets:416252 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:136006302 (129.7 MiB)  TX bytes:114377768 (109.0 MiB)

Servidor B

    [root@vps8887 ~]# ifconfig
eth0      inet addr:X.X.X.X  Bcast:X.X.X.255  Mask:255.255.255.0

eth0:0    inet addr:X.X.X.X  Bcast:X.X.X.255  Mask:255.255.255.0

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0


tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:172.30.0.1  P-t-P:172.30.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:69 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:4140 (4.0 KiB)  TX bytes:240 (240.0 b)

tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.101  P-t-P:10.8.0.102  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:34 errors:0 dropped:0 overruns:0 frame:0
          TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2856 (2.7 KiB)  TX bytes:8820 (8.6 KiB)

Roteamento para o Servidor A:

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.8.0.2        *               255.255.255.255 UH        0 0          0 tun0
10.8.0.0        10.8.0.2        255.255.255.0   UG        0 0          0 tun0
192.168.1.0     *               255.255.255.0   U         0 0          0 eth0
172.16.0.0      *               255.255.0.0     U         0 0          0 eth0
169.254.0.0     *               255.255.0.0     U         0 0          0 eth0
default         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

O roteamento para o Servidor B:

 [root@vps8887 ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.8.0.102      *               255.255.255.255 UH        0 0          0 tun1
172.30.0.2      *               255.255.255.255 UH        0 0          0 tun0
X.X.X.0    *               255.255.255.0   U         0 0          0 eth0
10.8.0.0        10.8.0.101      255.255.255.0   UG        0 0          0 tun1
X.X.X.0   *               255.255.255.0   U         0 0          0 eth0
172.30.0.0      172.30.0.2      255.255.0.0     UG        0 0          0 tun0
link-local      *               255.255.0.0     U         0 0          0 eth0
default         X.X.X.1    0.0.0.0         UG        0 0          0 eth0
default         X.X.X.1   0.0.0.0         UG        0 0          0 eth0

Aparece um problema quando tento adicionar roteamento no Servidor A, ao adicionar o seguinte comando:

route add -net 172.30.0.0/16 gw 10.8.0.101

Este erro aparece:

"SIOCADDRT: Rede inacessível"

Configuração OpenVPN para serverA porta 1194

proto udp

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh1024.pem

client-to-client

duplicate-cn

server 10.8.0.0 255.255.255.0

client-config-dir ccd

push "dhcp-option DNS 10.8.0.1"

status openvpn-status.log

keepalive 10 120

comp-lzo

persist-key

persist-tun

crl-verify /etc/openvpn/crl.pem

verb 3

================ Server B Client ccd ================
push "dhcp-option DNS 8.8.8.8"

ifconfig-push 10.8.0.101 10.8.0.102

=====================================================

Configuração OpenVPN para servidor B

======================= Server B ( Server Config )======================== 

port 1194

proto udp 

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh2048.pem

client-to-client

duplicate-cn

server 172.30.0.0 255.255.0.0

push " route 10.8.0.0 255.255.255.0 "

status openvpn-status.log

keepalive 10 120

comp-lzo

persist-key

persist-tun

verb 3

==============================================================================

================= Server B ( Client Config )==============================

client

dev tun

proto udp

remote serverA 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

route-nopull

route 10.8.0.0 255.255.255.0 10.8.0.101

comp-lzo

verb 5

===============================================================================

Finalmente: preciso que esses sites se comuniquem.

Responder1

Comandos de roteamento OpenVPN em geral

rota

O routecomando entra na configuração do servidor e diz ao servidor para adicionar uma rota à sua própria tabela de roteamento do kernel. Você não precisa adicionar um routecomando para a sub-rede na serverdiretiva, mas precisa adicionar um routecomando para todas as outras sub-redes que o servidor deve controlar. Essencialmente, isso dirá ao kernel para enviar essas sub-redes para o servidor openvpn. Por exemplo:

# serverA.conf (just a fragment)
server 10.8.0.0 255.255.255.0
...
route 172.30.0.0 255.255.255.0 # Add a route to the kernel routing table

rota

O iroutecomando cria rotas que são "internas" ao openvpn para que o servidor openvpn saiba quais clientes são responsáveis ​​pelas sub-redes, conforme descritoaquieaqui. Antes que os pacotes cheguem à tabela de roteamento do kernel, o openvpn os descriptografa conforme eles chegam do dispositivo tun/tap e os examina para ver o que fazer com eles. Sem um comando irute, o servidor não os reconhecerá.

# ccd/ServerB.conf
iroute 172.30.0.0

pressione " rota ... "

O pushcomando também é usado para outras coisas, mas para roteamento você precisa das pushrotas de sub-redes para clientes. Isso instruirá os clientes a alterar sua tabela de roteamento do kernel para enviar tráfego ao servidor VPN. Sem isso, os clientes não saberão como obter pacotes da sub-rede privada 10.8.0.0 a 172.30.0.0. Eles devem estar no ccd/client ou apenas na configuração do servidor se for universal para todos os clientes.

# ServerA.conf (more of the fragment)
server 10.8.0.0 255.255255.0
...
route 172.30.0.0 255.255.255.0 # add the route to the server's kernel
push "route 172.30.0.0 255.255.255.0" # add the route to the clients

cliente para cliente

O client-to-clientcomando informa ao servidor que os clientes podem se comunicar entre si. Acredito que isso é comentado por padrão e será necessário.

encaminhamento de ip do kernel

Esta não é uma configuração OpenVPN e o seguinte é específico para Linux. No entanto, isso será importante para qualquer pessoa que execute um servidor OpenVPN. Cada servidor deve ter o encaminhamento de IP habilitado no kernel, comoesse. Certifique-se também de que as regras de firewall não impeçam o encaminhamento.

Em relação à sua configuração

Parece que estão faltando iroutediretivas. O servidor B precisará de uma entrada em seu arquivo ccd. O iroutecomando informa ao servidor openvpn qual cliente conhece aquela sub-rede.

# ccd/ServerB
iroute 172.30.0.0 255.255.255.0

EDIT: Olhando novamente, noto outra coisa.

Parece também que o Servidor A não envia a rota para o Servidor B para seus clientes:

# ServerA config
push " route 172.30.0.0 255.255.255.0 "

Eu faço isso com dois servidores que estou executando o openvpn. Você não deve precisar adicionar manualmente nenhuma rota a nenhuma das máquinas. Se você acertar as configurações do openvpn, o Servidor B informará ao Servidor A que ele lida com 172.30.0.0 com iroute. O Servidor A dirá aos clientes para enviarem 172.30.0.0 através do Servidor A com extensão push " route ... ". E você já tem o Servidor B enviando a rota para 10.8.0.0.

Para testar se isso está funcionando, eu recomendaria pingnão tentar adicionar rotas.

Responder2

Eu resolvo sozinho. O importante "ipforwarding" não estava habilitado em ambos os lados. Este é o grande problema. iroute não está claro para mim, li este artigo: OpenVPN e rota O roteamento todo feito pelo OpenVPN. Nenhum roteamento necessário manualmente. Como mostrado abaixo:

Estrutura com solução

Finalmente, obrigado a Danger Ginger pela ajuda.

informação relacionada