Configuração de roteamento enviando algum tráfego por VPN

0

Eu tenho um roteador DD-WRT com um serviço OpenVPN configurado. Gostaria de enviar apenas determinados IP's de origem através da conexão vpn.

Eu acredito na minha tabela de roteamento atual (como visto com netstat -rn ) envia todo o meu tráfego pela vpn na interface tun1 . Pelo que entendi, a tabela de roteamento é uma tabela "fall through", portanto, neste caso, porque a primeira entrada é 0.0.0.0 , todo o tráfego passará pela interface tun1 .

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.182.1.5      128.0.0.0       UG        0 0          0 tun1
0.0.0.0         10.0.1.1        0.0.0.0         UG        0 0          0 br0
10.0.1.0        0.0.0.0         255.255.255.0   U         0 0          0 br0
10.182.1.1      10.182.1.5      255.255.255.255 UGH       0 0          0 tun1
10.182.1.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun1
46.23.68.178    10.0.1.1        255.255.255.255 UGH       0 0          0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
128.0.0.0       10.182.1.5      128.0.0.0       UG        0 0          0 tun1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0

Meu objetivo é rotear apenas 1 ou 2 sites por meio do site - especificamente a1505.g2.akamai.net , que, de acordo com NSLookup , é mapeado para os seguintes IPs

  • Endereço: 195.59.150.43
  • Endereço: 195.59.150.26

Eu acredito que o que é necessário é de 3 etapas.

1) Emita algum tipo de comando iptables para excluir a primeira entrada de roteamento - que, ao fazer isso, deixaria de enviar tráfego por meio da vpn tun1 2) Emita dois comandos para informar ao destino 195.59.150.43 e 195.59.150.26 para rotear por tun1

No entanto eu acho iptables ser bastante confuso com toda a honestidade.

Esta é a abordagem correta e, se assim for, alguém poderia me dar um exemplo de comando ou dois?

Obrigado!

    
por Jeef 09.05.2015 / 17:23

2 respostas

1

I understand the routing table is a "fall through" table

Não realmente. A tabela de roteamento é ordenada de "rota mais específica" para "rota menos específica". Sua rota padrão é via br0 e é definida como a rota de último recurso porque não há máscara de rede (ou seja, genmask é 0.0.0.0 ).

because the 1st entry is 0.0.0.0 all traffic will go through the tun1 interface

Embora esta seja a conclusão correta, infelizmente é o raciocínio errado. Aqui está sua tabela de roteamento ordenada visualmente para representar a ordem usada para o roteamento (top é a melhor combinação):

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.182.1.1      10.182.1.5      255.255.255.255 UGH       0 0          0 tun1
10.182.1.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun1
46.23.68.178    10.0.1.1        255.255.255.255 UGH       0 0          0 br0

10.0.1.0        0.0.0.0         255.255.255.0   U         0 0          0 br0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 br0

127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo

0.0.0.0         10.182.1.5      128.0.0.0       UG        0 0          0 tun1
128.0.0.0       10.182.1.5      128.0.0.0       UG        0 0          0 tun1

0.0.0.0         10.0.1.1        0.0.0.0         UG        0 0          0 br0

A rota padrão ainda é via br0 . No entanto, existem duas rotas mais específicas (a máscara de rede é 128.0.0.0 ), cada uma correspondendo à metade do espaço de endereços IPv4 numericamente disponível, portanto, elas corresponderão a todo o tráfego não local.

My goal is to only route 1 or 2 websites via the Website - specifically a1505.g2.akamai.net which according to nslookup maps to the following IPs: 195.59.150.43 and 195.59.150.26.

Não tenho certeza do que você quer dizer com "o site"; Eu vou assumir que é tun1 e que você quer parar todo o seu tráfego dessa maneira.

Para fazer isso com o OpenVPN, simplesmente remova a diretiva route-gateway def1 de seu arquivo de configuração. (Se você estiver usando algo como o NetworkManager, então deve haver uma opção que você precisa desmarcar para marcar a conexão como sua rota padrão.)

Tendo feito isso, tudo o que você precisa fazer é adicionar duas rotas, uma para cada host, através do gateway para tun1 :

route add -host 195.59.150.43 gw 10.182.1.5
route add -host 195.59.150.26 gw 10.182.1.5

Estas são as rotas do host, portanto, a máscara de rede é implicitamente /32 (ou seja, 255.255.255.255 ), então elas têm precedência sobre tudo e na minha tabela visualmente ordenada estariam com as três entradas no topo da lista. >

Na verdade, você também deve poder fazer isso no arquivo de configuração do OpenVPN. Isso permitiria que as rotas fossem ativadas e removidas automaticamente com a própria VPN. Dependendo de sua configuração, a configuração seria no servidor, onde as rotas seriam "empurradas" para o cliente ou como diretivas no arquivo de configuração do cliente OpenVPN:

route 195.59.150.43
route 195.59.150.26
    
por 09.05.2015 / 18:42
0

Acho que você pode usar o comando route em vez de iptables :

route 111.112.113.114 gw 10.182.1.5

Ou você também pode enviar a rota do lado do servidor openvpn .

    
por 09.05.2015 / 18:13