OpenVPN – Entenda a tabela de roteamento + Como rotear apenas o tráfego para um ip específico via VPN

OpenVPN – Entenda a tabela de roteamento + Como rotear apenas o tráfego para um ip específico via VPN

Estou me conectando a um serviço VPN usando OpenVPN e tudo funciona bem. Depois de 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 ptp que entendo ser a outra “extremidade” da VPN

Em 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 pode ser acessado via tun0
  • ip público de vpn é acessível via eth0

Não entendo o segundo gateway padrão, esse é o padrão quando a VPN não está ativa, é simplesmente ignorado?

E quanto ao 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 no 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 216.58.213.174 a passar pela VPN tun0 e fazer com que todo o resto passe pela eth0?
  • posso estabelecê-lo automaticamente ao iniciar a VPN?

Obrigado por sua sugestão e apoio na compreensão disso.

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 

Responder1

Não entendo o segundo gateway padrão, esse é o padrão quando a VPN não está ativa, é simplesmente ignorado?

Este é um dos hacks do OpenVPN para rotear o tráfego através do seu túnel enquanto mantém 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, pois são mais específicas e ainda correspondem a todos os endereços. Procure por “def1” na documentação do OpenVPN para mais detalhes

E quanto ao 10.7.7.1? parece que é o gateway da VPN...

Provavelmente sim

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

Eles provavelmente são enviados do servidor. Posso fornecer mais informações se você puder fornecer a saída do seu cliente enquanto ele está iniciando junto com seu arquivo de configuração

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

Sim, mas o cliente é altamente configurável de forma 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 do seu provedor para se conectar. Você também deve verificar os “Termos de Uso” de seus provedores para ter certeza de não irritá-los.

Agora, e se eu quiser:

forçar todo o tráfego para 216.58.213.174 a passar pela VPN tun0 e fazer com que todo o resto passe pela eth0?

Sim, inclua "rota 216.58.213.174 255.255.255.255 10.7.7.125" em sua configuração. Isso deve configurar a rota desejada. Você deve conseguir manter suas outras rotas removendo a opção "redirect-gateway" da sua configuração

posso estabelecê-lo automaticamente ao iniciar a VPN?

sim, veja acima

Todas as opções que descrevi e muito mais podem ser encontradas na documentação online do OpenVPN. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

informação relacionada