Roteando todo o tráfego pela VPN no Ubuntu Linux

13

Depois de passar algumas horas solucionando problemas, procurando soluções em potencial neste site e em outros, sou resignado a pedir o conselho de meus apostadores. Estou trabalhando para rotear todo o tráfego de rede em uma instância do Ubuntu através de uma VPN da Cisco em uma universidade. Usando o gerenciador de rede interno ou o vpnc, posso estabelecer uma conexão com a VPN e rotear com êxito o tráfego para qualquer IP da universidade pela VPN. No entanto, além desses intervalos de IP específicos, não consigo conjurar nenhuma rota que mapeie com êxito todo o tráfego da rede pela VPN.

Até agora, eu tentei:

rota adicionar -net 0.0.0.0 gw homeportal dev tun0
route add -net 0.0.0.0 tun0
route add -net 0.0.0.0 gw 128.122.252.77 dev tun0
route add -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A FORWARD -o tun0 -j ACEITAR
iptables -A FORWARD -i tun0 -j ACEITAR
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

E muitas outras coisas tolas, ineficazes, das quais não consigo me lembrar o suficiente para transcrever com precisão.

Além disso, tentei rotear intervalos de IP menores e IPs específicos, cada um sem sucesso. Não tenho muita certeza do que está errado, pois a extensão dos efeitos que pude observar são falhas na resolução de nomes e falhas no roteamento de tráfego pela VPN. O que eu estou fazendo errado aqui?

Editar-

Aqui está a saída de ip route showdepois de iniciar a conexão VPN com o VPNC:

padrão via 192.168.1.254 dev eth0 proto static 
10.0.0.0/8 dev tun0 scope link 
91.230.41.0/24 link de escopo dev tun0 
128.122.0.0/16 dev tun0 scope link 
128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 scope link 
128.122.253.79 link de escopo dev tun0 
172.16.0.0/12 dev tun0 scope link 
192.168.0.0/16 dev tun0 scope link 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 métrico 1 
193.175.54.0/24 dev tun0 scope link 
193.205.158.0/25 link de escopo dev tun0 
193.206.104.0/24 link de escopo dev tun0 
195.113.94.0/24 dev tun0 scope link 
203.126.200.0/24 dev tun0 scope link 
203.174.165.128/25 dev tun0 scope link 
212.219.93.0/24 dev tun0 scope link 
216.165.0.0/17 dev tun0 scope link

Mais Informações-

Eu rotinei com sucesso o tráfego arbitrário sobre esta VPN no MS Windows através do cliente Cisco AnyConnect com configuração padrão. Está aqui como é a tabela de roteamento quando o cliente AnyConnect está funcionando (este é um computador diferente atrás do mesmo roteador em 192.168.1.254).

Tabela de rotas IPv4
==================================================== =========================
Rotas ativas:
Métrica da interface do gateway de máscara de rede de destino de rede
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 no link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 192.168.1.13 no link 286
     192.168.1.13 255.255.255.255 On-link 192.168.1.13 286
    192.168.1.254 255.255.255.255 192.168.1.13 no link 31
    192.168.1.255 255.255.255.255 192.168.1.13 no link 286
     192.168.31.0 255.255.255.0 No link 192.168.31.1 276
     192.168.31.1 255.255.255.255 On-link 192.168.31.1 276
   192.168.31.255 255.255.255.255 On-link 192.168.31.1 276
    192.168.128.0 255.255.255.0 No link 192.168.128.197 257
  192.168.128.197 255.255.255.255 192.168.128.197 no link 257
  192.168.128.255 255.255.255.255 192.168.128.197 no link 257
    192.168.203.0 255.255.255.0 No link 192.168.203.1 276
    192.168.203.1 255.255.255.255 On-link 192.168.203.1 276
  192.168.203.255 255.255.255.255 On-link 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 no link 127.0.0.1 306
        224.0.0.0 240.0.0.0 no link 192.168.1.13 286
        224.0.0.0 240.0.0.0 no link 192.168.203.1 276
        224.0.0.0 240.0.0.0 no link 192.168.31.1 276
        224.0.0.0 240.0.0.0 no link 192.168.128.197 10000
  255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
  255.255.255.255 255.255.255.255 On-link 192.168.1.13 286
  255.255.255.255 255.255.255.255 On-link 192.168.203.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.31.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.128.197 10000
==================================================== =========================
deftfyodor
fonte
Eu imagino que fique claro que o roteamento de rede é bastante novo para mim, então eu apreciaria um nível bastante alto de verbosidade nas respostas.
Deftfyodor
1
Seria útil se você pudesse declarar se está usando algum cliente (anyconnect?) E se poderia postar sua tabela de roteamento, obrigado.
MariusMatutiae
Faça isso usando ip route, a propósito.
user1686
2
Sim, não use comandos de roteamento obsoletos: use ip route show para a tabela de roteamento. Comandos obsoletos esconder algumas das complexidades que são possíveis e úteis também com VPNs, muito menos VLANs, ...
MariusMatutiae
@rawraw, @MariusMatutiae - Claro, editei a pergunta com a saída do comando. Obrigado por mencionar o ip routecomando, eu não o havia encontrado antes.
deftfyodor

Respostas:

3

Sua rede local é 192.168.1.0/24, conforme mostrado por esta linha na sua tabela de roteamento:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

Sua rede VPN é 10.0.0.0/8, como mostrado nesta linha:

 10.0.0.0/8 dev tun0  scope link 

Atualmente, seu roteador padrão é:

 default via 192.168.1.254 dev eth0  proto static 

o que obviamente você não quer, porque pertence à sua LAN local: assim, todo o seu material é roteado através do gateway local, como se a VPN não existisse.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

qual é o caminho para o seu provedor de VPN.

EDITAR:

Eu não tinha percebido que a tabela de roteamento é simplesmente aquela que é obtida na sua VPN, sem a sua intervenção. Isso pode indicar (indiretamente) que o seu provedor de serviços está disposto a encaminhar apenas o tráfego permitido explicitamente em sua tabela através da interface tun0 e pode ter tomado outras medidas para bloquear todo o tráfego, caso em que seus esforços serão inúteis.

No entanto, supondo que seu provedor esteja disposto a encaminhar todo o seu tráfego, o que você precisa fazer é o seguinte.

Primeiro, você precisa descobrir se existe um gateway disposto a aceitar sua conexão do outro lado, porque precisamos do seu endereço IP. Vou lhe dar quatro métodos para fazer isso.

1) Com o PC conectado à VPN, tente o seguinte comando:

   sudo dhclient -v tun0

Se tudo correr bem, você verá uma resposta contendo esta linha:

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz é o endereço IP do gateway local. Você pode ter que desligar sua VPN após este teste, e talvez até reiniciar o seu PC, porque teremos acabado de estragar a tabela de roteamento muito bem.

2) Como alternativa, você pode tentar navegar para um dos sites permitidos (aqueles que aparecem na sua tabela de roteamento como passando pela interface tun0 ) e, em seguida, emitir o comando:

  ip neigh show

Você deve obter uma lista de pcs contatados através do protocolo ARP, com endereço MAC e IP; provavelmente, você receberá zero ou uma resposta. Se você receber uma única resposta, esse é o seu roteador.

3) Se você não receber essa resposta, poderá tentar com

  sudo nmap -sn 10.0.0.0/8

(o que será muito lento). Seu gateway será um dos computadores listados, provavelmente o endereço com terminação em .1 ou em .254, se houver.

4) Use o comando tcpdump:

  sudo tcpdump -n -i tun0

e veja os endereços IP emitidos pelo comando.

Se você também não receber uma resposta adequada a esse teste, isso significa que alguém realmente apertou os parafusos em sua rede.

Mas vamos ser otimistas e suponha que agora você tenha um endereço IP candidato xwyz para o roteador remoto. Você precisará excluir o gateway padrão (como sudo!):

  ip route del default via 192.168.1.254

e adicione o novo:

  ip route add default via x.w.y.z 

e tente navegar.

Deixe-me repetir: como seu provedor só permitiu tráfego para alguns endereços IP selecionados por meio de sua VPN, é possível que ele tenha tomado medidas extras (= firewall) para impedir que um usuário inteligente force o tráfego genérico por meio de sua VPN. Nesse caso, não há nada que você possa fazer. Mas se ele não o fez, as etapas acima devem ajudá-lo a encontrar uma solução.

MariusMatutiae
fonte
Obrigado pela resposta muito elaborada; no entanto, ao entrar no segundo semestre, sinto um soluço. a saída de ip addr show dev tun0leituras 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft forever, sem endereço de ponto a ser observado. Além disso, a tabela de roteamento que eu publiquei anteriormente não havia sido modificada por mim - ela foi gerada inteiramente pelo cliente vpn.
Deftfyodor
@deftfyodor Por favor, veja minha edição.
MariusMatutiae
Usando o comando tcpdump, consegui discernir o gateway e direcionar o tráfego padrão para ele. Infelizmente, ele ainda funciona apenas para os intervalos de IP especificamente provisionados. Certamente estou inclinado a acreditar que há alguma medida de segurança adicional em vigor - no entanto, não tenho nenhum problema em rotear tráfego arbitrário pela mesma VPN no MS Windows usando o cliente AnyConnect -, portanto, certamente deve haver mais na história.
Deftfyodor
@deftfyodor Você pode verificar se a sua tabela de roteamento no Windos é diferente da tabela no Linux?
MariusMatutiae
Geralmente é semelhante, embora existam alguns elementos que diferem, em particular, 0.0.0.0 é configurado para rotear através do meu roteador de rede como gateway, mantendo o gateway VPN como interface. Editei a pergunta para mostrar a tabela de roteamento do Windows.
Deftfyodor
3

Todos os seus routecomandos estão com máscaras de rede ausentes, portanto, apenas correspondem ao 0.0.0.0endereço específico , não à Internet inteira. Portanto, substitua 0.0.0.0por 0.0.0.0/0no primeiro comando que você tentou:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Pode haver uma ressalva que não tenho certeza se o seu cliente VPN resolve sozinho: o ponto de extremidade do túnel precisa ser excluído do roteamento pela VPN, ele deve ser roteado pela sua eth0interface. Portanto, se a adição dessa rota padrão interromper sua VPN, adicione uma rota específica para o ponto de extremidade da VPN:

ip route add <ENDPOINT>/32 dev eth0

Teun Vink
fonte
2
Eu acho que o segundo deveria ser ip route, não? Além disso, enquanto é sempre uma boa idéia para adicionar máscaras de rede, ele parece que routeassume / 0 ao adicionar 0.0.0.0
user1686