OpenVPN - Entenda a tabela de roteamento + Como rotear somente o tráfego para um ip específico através da VPN

9

Estou me conectando a um serviço VPN usando o OpenVPN e tudo funciona bem. Depois que eu conectar, estas são as regras que são definidas automaticamente:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Aqui está o que eu entendo:

  • meu endereço IP local é 192.168.1.201
  • gateway local é 191.168.1.1
  • 5.120.121.114 é o ip público da VPN
  • tun0 é o túnel VPN, minha máquina tem 10.7.7.126 como endereço
  • 10.7.7.125 é o endereço p-t-p que eu entendo é o outro "fim" da VPN

Com relação à tabela de roteamento, entendo que:

  • por padrão todo o tráfego é enviado via 10.7.7.125 na interface tun0 (mas por que essa máscara?)
  • 10.7.7.1 é acessível via tun0
  • ip público da vpn é acessível via eth0

Eu não entendo o segundo gateway padrão, este é o padrão quando o vpn não está ativo, é simplesmente ignorado?

E o 10.7.7.1? parece que é o gateway da vpn ...

Por que o destino 128.0.0.0?

O OpenVPN cria automaticamente todas essas regras. Mas com base naquilo que são criados?

Não consigo controlar o lado do servidor da VPN, mas apenas a configuração do cliente.

Agora, e se eu quiser:

  • forçar todo o tráfego para o 216.58.213.174 para passar pelo tun0 da VPN e ter todo o resto passando pela eth0?
  • posso configurá-lo automaticamente ao iniciar a VPN?

Obrigado por sua sugestão e apoio em entender isso.

KR, dk

EDITAR:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 
    
por d82k 16.02.2016 / 19:39

1 resposta

12

I don't understand the second default gateway, this is the default when the vpn is not active, is it simply bypassed?

Este é um dos hacks do OpenVPN para rotear o tráfego através do seu túnel, mantendo o seu gateway padrão. As rotas 0.0.0.0/1 e 128.0.0.0/1 têm precedência sobre a rota 0.0.0.0/0, uma vez que são mais específicas e, ao mesmo tempo, correspondem a todos os endereços. Procure por "def1" na documentação do OpenVPN para mais detalhes

What about the 10.7.7.1? looks like it is the gateway of the vpn...

Provavelmente, sim

OpenVPN automatically creates all these rules. But based on what are those created?

Eles provavelmente são empurrados do servidor. Eu posso fornecer mais informações se você puder fornecer a saída do seu cliente enquanto estiver iniciando junto com o seu arquivo de configuração

I cannot control the server side of the VPN but only the client configuration.

Sim, mas o cliente é altamente configurável, de modo que você pode substituir praticamente qualquer coisa que o servidor queira que seu cliente faça. Ainda assim, você precisará atender aos requisitos básicos de seus provedores para se conectar. Você também deve verificar os "Termos de Uso" dos seus provedores para ter certeza de que você não vai acabar irritando-os.

Now what if I would like to:

force all traffic to 216.58.213.174 to go via VPN tun0 and have all the rest going through eth0?

Sim, inclua "route 216.58.213.174 255.255.255.255 10.7.7.125" na sua configuração. Isso deve configurar sua rota desejada. Você deve ser capaz de manter suas outras rotas no lugar removendo a opção "redirect-gateway" da sua configuração

can I have it established automatically when starting the VPN?

sim, veja acima

Todas as opções que descrevi e muito mais podem ser encontradas na documentação online do OpenVPN. link

    
por 16.02.2016 / 22:54