OpenVPN - Compreenda a tabela de roteamento + Como rotear apenas o tráfego para um IP específico via VPN

12

Estou me conectando a um serviço VPN usando o OpenVPN e tudo funciona bem. Depois de conectar, estas são as regras 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
  • o gateway local é 191.168.1.1
  • 5.120.121.114 é o IP público da VPN
  • tun0 é o túnel da VPN, minha máquina tem 10.7.7.126 como endereço
  • 10.7.7.125 é o endereço ptp que eu entendo é o outro "fim" 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 é alcançável via tun0
  • ip público do vpn é alcançá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 do 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 gostaria de:

  • forçar todo o tráfego para 216.58.213.174 a passar via VPN tun0 e ter todo o resto passando por eth0?
  • posso estabelecê-lo automaticamente ao iniciar a VPN?

Obrigado por sua sugestão e apoio para 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 
d82k
fonte
1
Apenas meus 2 centavos: use ip route listpara obter uma melhor visualização de suas rotas. Além disso, porque ifconfig e route estão no caminho de desaprovar no LInux ...

Respostas:

15

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

Este é um dos hacks do OpenVPN para rotear o tráfego através do seu túnel, mantendo o 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 obter mais detalhes

E o 10.7.7.1? parece que é o gateway do 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 estiver iniciando junto com o 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 modo que você pode substituir praticamente tudo o que o servidor deseja que ele faça. Ainda assim, você precisará atender aos requisitos básicos de seus fornecedores para se conectar. Você também deve verificar os "Termos de uso" de seus fornecedores para garantir que você não os irrite.

Agora, e se eu gostaria de:

forçar todo o tráfego para 216.58.213.174 a passar via VPN tun0 e ter todo o resto passando por 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 manter suas outras rotas no local removendo a opção "redirecionar-gateway" da sua configuração

posso estabelecê-lo automaticamente ao iniciar a VPN?

sim veja acima

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

smokes2345
fonte
Muito, muito obrigado !!! Passei dias vasculhando minúcias da rede tentando entender o truque fofo dos 0.0.0.0/1 e 128.0.0.0/1. No final, eu apenas tive que adicionar uma rota completamente redundante, exceto quando a VPN está ativada.
rlduffy 28/03