Como permitir o acesso local à LAN enquanto conectado à Cisco VPN?


82

Como posso manter o acesso à LAN local enquanto conectado à Cisco VPN?

Ao conectar usando a Cisco VPN, o servidor deve instruir o cliente a impedir o acesso à LAN local.

Supondo que essa opção do lado do servidor não possa ser desativada, como permitir o acesso local à LAN enquanto estiver conectado a um cliente VPN da Cisco?


Eu costumava pensar que era apenas uma questão de adicionar rotas que capturassem o tráfego da LAN com uma métrica mais alta, por exemplo:

  Network 
Destination      Netmask        Gateway       Interface  Metric
   10.0.0.0  255.255.0.0       10.0.0.3        10.0.0.3      20  <--Local LAN
   10.0.0.0  255.255.0.0  192.168.199.1  192.168.199.12       1  <--VPN Link

E tentar excluir a 10.0.x.x -> 192.168.199.12rota não tem efeito:

>route delete 10.0.0.0
>route delete 10.0.0.0 mask 255.255.0.0
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1 if 192.168.199.12
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1 if 0x3

E, embora ainda possa ser simplesmente um problema de roteamento, as tentativas de adicionar ou excluir rotas falham.

Em que nível o driver do cliente Cisco VPN está fazendo o que na pilha de rede que substitui a capacidade do administrador local de administrar sua máquina?

O cliente Cisco VPN não pode estar empregando mágica. Ainda é um software em execução no meu computador. Que mecanismo ele está usando para interferir na rede da minha máquina? O que acontece quando um pacote IP / ICMP chega na rede? Onde na pilha de rede o pacote está sendo consumido?

Veja também


Edit: Coisas que eu ainda não tentei:

>route delete 10.0.*

Atualização: Como a Cisco abandonou o cliente antigo, a favor do AnyConnect (VPN baseada em HTTP SSL), essa questão, sem solução, pode ser deixada como uma relíquia da história.

No futuro, podemos tentar resolver o mesmo problema com o novo cliente .


1
O link da VPN tem uma métrica mais baixa e, portanto, é tentado antes da sua rota local. Aumentar a métrica da sua LAN local provavelmente irá desabilitar sua LAN local. Se a VPN não estiver configurada para encapsular todo o tráfego, a comutação da sua sub-rede doméstica poderá ser uma solução. Quais são os IPs que você precisa acessar através desta VPN? É este o 10.0.0.0 inteiro no lado da VPN?
21811 pberlijn

Parece que isso pode muito bem ser o problema; pensei métrica de maior = melhor .
Ian Boyd


2
O Cisco AnyConnect pode ser substituído pelo cliente compatível principalmente com a alternativa OpenConnect, descrita em serverfault.com/a/664097/104573
Vadzim:

Respostas:


53

O problema com o Anyconnect é que ele primeiro modifica a tabela de roteamento, depois toma conta e a corrige, caso você a modifique manualmente. Encontrei uma solução alternativa para isso. Funciona com as versões 3.1.00495, 3.1.05152, 3.1.05170 e provavelmente qualquer outra coisa da família 3.1. Pode funcionar com outras versões, pelo menos uma idéia semelhante deve funcionar, assumindo que o código não seja reescrito. Felizmente para nós, a Cisco colocou a chamada de "babá acordada" em uma biblioteca compartilhada. Portanto, a ideia é impedir a ação do vpnagentd via LD_PRELOAD.

  1. Primeiro, criamos um arquivo hack.c:

    #include <sys/socket.h>
    #include <linux/netlink.h>
    
    int _ZN27CInterfaceRouteMonitorLinux20routeCallbackHandlerEv()
    {
      int fd=50;          // max fd to try
      char buf[8192];
      struct sockaddr_nl sa;
      socklen_t len = sizeof(sa);
    
      while (fd) {
         if (!getsockname(fd, (struct sockaddr *)&sa, &len)) {
            if (sa.nl_family == AF_NETLINK) {
               ssize_t n = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
            }
         }
         fd--;
      }
      return 0;
    }
    

Nota: Este código funciona apenas com Linux. Para aplicar esta solução a uma máquina macOS, consulte a versão adaptada do macOS .

  1. Em seguida, compile-o assim:

    gcc -o libhack.so -shared -fPIC hack.c
    
  2. Instale libhack.sono caminho da biblioteca da Cisco:

    sudo cp libhack.so  /opt/cisco/anyconnect/lib/
    
  3. Desative o agente:

    /etc/init.d/vpnagentd stop
    
  4. Verifique se realmente está em baixo

    ps auxw | grep vpnagentd
    

    Caso contrário, kill -9apenas para ter certeza.

  5. Em seguida, corrija o /etc/init.d/vpnagentd adicionando LD_PRELOAD=/opt/cisco/anyconnect/lib/libhack.so onde o vpnagentd está sendo chamado, para que fique assim:

    LD_PRELOAD=/opt/cisco/anyconnect/lib/libhack.so /opt/cisco/anyconnect/bin/vpnagentd
    
  6. Agora inicie o agente:

    /etc/init.d/vpnagentd start
    
  7. Corrija o iptables, porque o AnyConnect mexe com eles:

    iptables-save | grep -v DROP | iptables-restore
    

    Você pode querer fazer algo mais avançado aqui para permitir o acesso apenas a determinados hosts da LAN.

  8. Agora corrija as rotas como desejar, por exemplo:

    route add -net 192.168.1.0 netmask 255.255.255.0 dev wlan0
    
  9. Verifique se eles estão realmente lá:

    route -n
    

Uma versão anterior e mais simples desse truque dava uma função que apenas "retornava 0"; - o pôster observou que "O único efeito colateral que observei até agora é que o vpnagentd está usando 100% da CPU, conforme relatado pela parte superior, mas a CPU geral é apenas 3% de usuário e 20% do sistema, e o sistema é perfeitamente responsivo Eu tracei, parece estar fazendo duas seleções em um loop quando ocioso retornando dos dois rapidamente, mas nunca lê ou grava - suponho que a chamada que eu cortei com LD_PRELOAD deveria ler. até agora, mas é bom o suficiente para mim. Se alguém tiver uma solução melhor, compartilhe. "

O problema com o hackeamento trivial é que ele faz com que um único núcleo da CPU esteja 100% o tempo todo, reduzindo efetivamente a contagem de threads da CPU do hardware em um - independentemente de sua conexão VPN estar ativa ou não. Percebi que as seleções que o código estava fazendo estavam em um soquete de netlink, que envia dados vpnagentd quando a tabela de roteamento muda. O vpnagentd continua percebendo que há uma nova mensagem no soquete do netlink e chama o routeCallBackHandler para lidar com isso, mas como o hack trivial não limpa a nova mensagem, ele continua sendo chamado repetidamente. o novo código fornecido acima libera os dados do netlink para que o loop infinito que causou a CPU de 100% não aconteça.

Se algo não funcionar, faça gdb -p $(pidof vpnagentd), uma vez anexado:

b socket
c
bt

e veja em qual chamada você está. Depois, adivinhe qual você deseja cortar, adicione-o ao hack.c e recompile.


4
Isso é genialidade. Estou tentando fazê-lo funcionar no OSX e tenho uma pergunta: como você sabia que o método a substituir foi nomeado _ZN27CInterfaceRouteMonitorLinux20routeCallbackHandlerEv?
donturner

2
@donturner Experimente nm /opt/cisco/anyconnect/lib/libvpnagentutilities.dylib | grep routeCallbackHandlerEve então você vai encontrar__ZN25CInterfaceRouteMonitorMac20routeCallbackHandlerEv
McKelvin

Eu descobri isso anexando ao vpnagentd com gdb e definindo vários pontos de interrupção.
Sasha Pachev 28/09/2015

O @McKelvin nm /opt/cisco/anyconnect/lib/libvpnagentutilities.soretorna nm: /opt/cisco/anyconnect/lib/libvpnagentutilities.so: no symbolsno meu AnyConnect no Ubuntu, por isso foi gerado sem as informações da tabela de símbolos. Como você conseguiu isso?
Nephewtom 14/10

@SashaPachev Como você pode depurar o vpnagentd sem nenhuma informação de símbolo?
Nephewtom 14/10

11

Isso é MUITO complicado, mas se você criar uma VM mínima usando o VMWare Player ou similar e executar o cliente Cisco AnyConnect VPN nisso, poderá ser possível configurar o roteamento como desejar usando os adaptadores de rede virtual VMWare ou simplesmente usar o VM para acessar todos os recursos necessários via VPN Cisco SSL e arquivos "arrastar / soltar" de / para sua máquina atual.


7

O software Shrew Soft VPN também fez o truque para mim, como sugeriu Ian Boyd .

Pode importar perfis de clientes VPN da Cisco. Usei o Cisco VPN Client versão 5.0.05.0290 e, após instalar o Shrew VPN (versão 2.1.7) e importar o perfil da Cisco, consegui acessar a LAN local enquanto estava conectado à VPN corporativa sem nenhuma configuração adicional da conexão Shrew VPN (ou Programas).


Seria incrível se isso estivesse disponível para o Android.
Gabriel Fair

1
Eu sou de 2019 e funciona !!!!!!
Sergey Povisenko 17/04

5

Obrigado a Sasha Pachev pelo belo truque acima.

vpnagentdtambém mexe com o resolvedor substituindo as alterações feitas em /etc/resolv.conf. Eu o resolvi vencendo a corrida contra ele:

#!/bin/bash

dnsfix() {
    [ -f /etc/resolv.conf.vpnbackup ] || echo "Not connected?" >&2 || return 0 # do nothing in case of failure
    while ! diff -q /etc/resolv.conf /etc/resolv.conf.vpnbackup #>/dev/null
    do
         cat /etc/resolv.conf.vpnbackup >/etc/resolv.conf
    done
    chattr +i /etc/resolv.conf
    diff -q /etc/resolv.conf /etc/resolv.conf.vpnbackup >/dev/null 
}

while ! dnsfix
do
    echo "Retrying..."
    chattr -i /etc/resolv.conf
done

Não se esqueça de chattr -i /etc/resolv.confdesconectar.

Estou tentando resolvê-lo interceptando o retorno de chamada, como no método de rotas acima, mas ainda não consigo encontrar o retorno de chamada ou o método correspondente.

Atualização 1/2: A stracerevelou que vpnagentdestá usando a inotifyAPI para monitorar as alterações no arquivo do resolvedor. A partir daí, foi ladeira abaixo. Aqui está o hack adicional:

int _ZN18CFileSystemWatcher11AddNewWatchESsj(void *string, unsigned int integer)
{
  return 0;
}

Isso é um pouco exagerado, pois desabilita a observação de todos os arquivos do agente. Mas parece funcionar bem.

O script de wrapper do cliente VPN abaixo integra toda a funcionalidade (atualizado para incluir esse hack adicional). chattrnão é mais usado / necessário.

Atualização 3: Corrigidas configurações de nome de usuário / senha no script. Agora ele usa um vpn.confarquivo com o formato descrito abaixo (e permissões somente para raiz).

#!/bin/bash

# Change this as needed
CONF="/etc/vpnc/vpn.conf"
# vpn.conf format
#gateway <IP>
#username <username>
#password <password>
#delete_routes <"route spec"...> eg. "default gw 0.0.0.0 dev cscotun0"
#add_routes <"route spec"...> eg. "-net 192.168.10.0 netmask 255.255.255.0 dev cscotun0" "-host 10.10.10.1 dev cscotun0"

ANYCONNECT="/opt/cisco/anyconnect"

usage() {
    echo "Usage: $0 {connect|disconnect|state|stats|hack}"
    exit 1
}

CMD="$1"
[ -z "$CMD" ] && usage

ID=`id -u`

VPNC="$ANYCONNECT/bin/vpn"

dnsfix() {
    [ -f /etc/resolv.conf.vpnbackup ] || echo "Not connected?" >&2 || return 0 # do nothing in case of failure
    while ! diff -q /etc/resolv.conf /etc/resolv.conf.vpnbackup >/dev/null
    do
         cat /etc/resolv.conf.vpnbackup >/etc/resolv.conf
    done
#    chattr +i /etc/resolv.conf
    diff -q /etc/resolv.conf /etc/resolv.conf.vpnbackup >/dev/null 
}

case "$CMD" in
    "connect")
        [ $ID -ne 0 ] && echo "Needs root." && exit 1
        HOST=`grep ^gateway $CONF | awk '{print $2}'`
        USER=`grep ^user $CONF | awk '{print $2}'`
        PASS=`grep ^password $CONF | awk '{print $2}'`
        OLDIFS=$IFS
        IFS='"'
        DEL_ROUTES=(`sed -n '/^delete_routes/{s/delete_routes[ \t\"]*//;s/\"[ \t]*\"/\"/g;p}' $CONF`)
        ADD_ROUTES=(`sed -n '/^add_routes/{s/add_routes[ \t\"]*//;s/\"[ \t]*\"/\"/g;p}' $CONF`)
        IFS=$OLDIFS

        /usr/bin/expect <<EOF
set vpn_client "$VPNC";
set ip "$HOST";
set user "$USER";
set pass "$PASS";
set timeout 5
spawn \$vpn_client connect \$ip
match_max 100000
expect { 
    timeout {
        puts "timeout error\n"
        spawn killall \$vpn_client
        exit 1
    }
    ">> The VPN client is not connected." { exit 0};
    ">> state: Disconnecting" { exit 0};
    "Connect Anyway?"
}
sleep .1
send -- "y\r"
expect { 
    timeout {
        puts "timeout error\n"
        spawn killall \$vpn_client
        exit 1
    }
    "Username:"
}
sleep .1
send -- "\$user\r"
expect { 
    timeout {
        puts "timeout error\n"
        spawn killall \$vpn_client
        exit 1
    }
    "Password: "
}
send -- "\$pass\r";
expect eof
EOF
        sleep 2
        # iptables
        iptables-save | grep -v DROP | iptables-restore

        # routes
        for ROUTE in "${DEL_ROUTES[@]}"
        do
#            echo route del $ROUTE
            route del $ROUTE
        done
        for ROUTE in "${ADD_ROUTES[@]}"
        do
#            echo route add $ROUTE
            route add $ROUTE
        done

        # dns
        while ! dnsfix
        do
            echo "Try again..."
#            chattr -i /etc/resolv.conf
        done

        echo "done."
        ;;
    "disconnect")
#        [ $ID -ne 0 ] && echo "Needs root." && exit 1
        # dns
#        chattr -i /etc/resolv.conf

        $VPNC disconnect
        ;;
    "state"|"stats")
        $VPNC $CMD
        ;;
    "hack")
        [ $ID -ne 0 ] && echo "Needs root." && exit 1
        /etc/init.d/vpnagentd stop
        sleep 1
        killall -9 vpnagentd 2>/dev/null
        cat - >/tmp/hack.c <<EOF
#include <sys/socket.h>
#include <linux/netlink.h>

int _ZN27CInterfaceRouteMonitorLinux20routeCallbackHandlerEv()
{
  int fd=50;          // max fd to try
  char buf[8192];
  struct sockaddr_nl sa;
  socklen_t len = sizeof(sa);

  while (fd) {
     if (!getsockname(fd, (struct sockaddr *)&sa, &len)) {
        if (sa.nl_family == AF_NETLINK) {
           ssize_t n = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
        }
     }
     fd--;
  }
  return 0;
}

int _ZN18CFileSystemWatcher11AddNewWatchESsj(void *string, unsigned int integer)
{
  return 0;
}
EOF
        gcc -o /tmp/libhack.so -shared -fPIC /tmp/hack.c
        mv /tmp/libhack.so $ANYCONNECT
        sed -i "s+^\([ \t]*\)$ANYCONNECT/bin/vpnagentd+\1LD_PRELOAD=$ANYCONNECT/lib/libhack.so $ANYCONNECT/bin/vpnagentd+" /etc/init.d/vpnagentd
        rm -f /tmp/hack.c
        /etc/init.d/vpnagentd start
        echo "done."
        ;;
    *)
        usage
        ;;
esac

1
Seu hack de notificação resolveu meu novo problema (25-02-2017) com minha instalação do AnyConnect 3.1.14018, pela qual ele se desconectava sempre que eu abria uma nova janela de terminal ou tela do GNU. Está assistindo / var / run / utmp por algum motivo. Bem, não mais, obrigado!
Martin Dorey

Agradável. Às vezes, o "exagero" pode ser seu amigo. :-)
Mauro Lacy

4

Minha empresa ainda usa essa VPN. O cliente vpnc simplesmente altera as configurações do iptables dessa maneira:

# iptables-save
# Gerado por iptables-save v1.4.10 em Dom Jun 17 14:12:20 2012
*filtro
: INPUT DROP [0: 0]
: ACEITO PARA A FRENTE [0: 0]
: QUEDA DE SAÍDA [0: 0]
-A INPUT -s 123.244.255.254/32 -d 192.168.0.14/32 -j ACCEPT 
-A ENTRADA -i tun0 -j ACEITA 
-A ENTRADA -i lo0 -j ACEITA
-A ENTRADA -j GOTA 
-A SAÍDA -s 192.168.0.14/32 -d 123.244.255.254/32 -j ACEITAR 
-A SAÍDA -o tun0 -j ACEITAR 
-A SAÍDA -o lo0 -j ACEITA 
-A SAÍDA -j GOTA 
COMETER, ENTREGAR

Ele filtra tudo, exceto o tráfego VPN.

Simplesmente obtenha o filtro em um arquivo com iptables-save, adicione as linhas de acesso INPUT e OUTPOUT que atendam às suas necessidades e aplique novamente o arquivo com iptables-restore.

por exemplo, para acessar uma rede local em 192.168.0

# Gerado por iptables-save v1.4.10 em Dom Jun 17 14:12:20 2012
*filtro
: INPUT DROP [0: 0]
: ACEITO PARA A FRENTE [0: 0]
: QUEDA DE SAÍDA [0: 0]
-A INPUT -s 123.244.255.254/32 -d 192.168.0.14/32 -j ACCEPT 
-A INPUT -s 192.168.0.0/24 -d 192.168.0.14/32 -j ACCEPT #local em
-A ENTRADA -i tun0 -j ACEITA 
-A ENTRADA -i lo0 -j ACEITA 
-A ENTRADA -j GOTA 
-A SAÍDA -s 192.168.0.14/32 -d 123.244.255.254/32 -j ACEITAR 
-A OUTPUT -s 192.168.0.14/32 -d 192.168.0.0/24 -j ACCEPT #local out
-A SAÍDA -o tun0 -j ACEITAR 
-A SAÍDA -o lo0 -j ACEITA 
-A SAÍDA -j GOTA 
COMETER, ENTREGAR

2
É errado, não é assim tão fácil de apenas adicionar sua rota .. Eu tentei e não deu certo .. VPN cliente tomar o controle de tabela de roteamento do kernel que não está permitindo que você modifique
Satish

3

Alguma novidade sobre isso?

Em que nível o driver do cliente Cisco VPN está fazendo o que na pilha de rede que substitui a capacidade do administrador local de administrar sua máquina?

Concordo plenamente e estava pensando sobre a mesma coisa.

Enfim, é um aplicativo que requer privilégios de administrador para instalar e, enquanto é executado, pode muito bem filtrar o que você faz ...

Minhas tentativas no Windows também falham:

route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1
 OK!

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.230     21 <-- LAN
          0.0.0.0          0.0.0.0    192.168.120.1    192.168.120.3      2 <-- VPN

Haha Nenhuma métrica abaixo de 20 aqui parece.


No que diz respeito ao Linux, isso ( petefreitag.com/item/753.cfm ) parece indicar que o firewall também está envolvido.
Marki

2
Encontrei a ShrewSoft VPN. Ele pode se conectar a um servidor VPN Cisco IPSec e ignora a demanda do administrador do servidor VPN de que eu seja desconectado da minha própria rede. (Consulte superuser.com/questions/312947/… para obter instruções detalhadas) Mesmo que não responda a essa pergunta, é uma solução alternativa. Nota : a ShrewSoft VPN funciona apenas para IPSec; ele não funciona com SSL VPN (ie mais recente cliente Cisco AnyConnect VPN)
Ian Boyd

3

Não sei se entendi direito, mas primeiro esclareço meu entendimento:

Você possui uma LAN local (por exemplo, 10.0.0.0/16 e um Cisco VPN Server remoto (por exemplo, 64.0.0.0/16). Você deseja conectar-se ao servidor VPN por meio do cliente Cisco VPN e, no entanto, precisa para ter acesso à LAN. Nesse caso, você deseja separar o 10.0.xx / 16 inteiro da conexão VPN). A seguinte rota deve ser adicionada em um cliente Mac:

/sbin/route add -net 10.0 -interface en1

onde en1 é a interface através da qual você está conectado à sua LAN. Eu sei que você pode adicionar a mesma coisa no Windows e Linux também.


3
+1 para cliente Mac; o que não se aplica a mim. E enquanto este comando pode funcionar, o cliente Cisco pode excluí-lo logo após ser criado (o cliente Cisco parece impedir ninguém de mudar rotas)
Ian Boyd

2

Como não consigo adicionar comentários, vou postar aqui. Estou executando no Windows.

A solução usando a Máquina Virtual e execute o AnyConnect dentro da VM e, em seguida, use a VM como mediadora entre o ambiente de trabalho e a rede da empresa não funcionará se o departamento de TI "amado" direcionar 0.0.0.0 por VPN e, portanto, até a sua rede local (incluindo esta entre o PC local e a VM) é roteado pela VPN (sic!).

Tentei aplicar a solução postada por @Sha Pachav, mas acabei corrigindo o patch .dll para que ele retornasse 0 no início da função. Eventualmente, depois de alguma briga com a biblioteca dinâmica, consegui modificar as tabelas de roteamento de acordo com minhas necessidades, mas aparentemente isso não é suficiente!

Mesmo que minhas regras pareçam corretas para obter o tunelamento dividido, ainda recebo falha geral. Você encontrou um problema semelhante ao que foi capaz de resolvê-lo?

  • Meu gateway para a Internet é 192.168.163.2
  • Minha porta de entrada para a rede da empresa é 10.64.202.1 (assim toda 10. . . * Sub-rede eu trato como "comapny de")

É assim que minha tabela de roteamento se parece agora (após modificações manuais enquanto a VPN está ativada)

insira a descrição da imagem aqui

ainda o resultado do ping está seguindo

C:\Users\Mike>ping -n 1 10.64.10.11
Reply from 10.64.10.11: bytes=32 time=162ms TTL=127

C:\Users\Mike>ping -n 1 8.8.8.8
PING: transmit failed. General failure.

C:\Users\Mike>ping -n 1 192.168.163.2
General failure.

Apenas para referência, abaixo está a aparência da tabela de rotas quando a VPN é desconectada (inalterada)

insira a descrição da imagem aqui

e é assim que a tabela se parece quando a VPN está conectada (inalterada). Nesse caso, quando estou tentando 8.8.8.8executar ping , simplesmente obtenho tempo limite (já que o firewall da empresa não permite que o tráfego saia da intranet)

insira a descrição da imagem aqui


Estou tendo dificuldades para corrigir a DLL. Alguém poderia fornecer uma cópia deles ou descrever um pouco mais detalhadamente quais compensações eu preciso alterar?
5136 Sean C #

1

Para aqueles que procuram manter o controle de sua tabela de roteamento ao usar uma VPN Cisco AnyConnect SSL, confira o OpenConnect . Ambos suportam a VPN Cisco AnyConnect SSL e não tentam interromper ou "proteger" as entradas da tabela de roteamento. @Vadzim faz alusão a isso em um comentário acima .

Depois de tentar de tudo, menos o patch do AnyConnect Secure Mobility Client, consegui substituí-lo com sucesso no Windows pela OpenConnect GUI . Isso me permitiu manter a conectividade com os recursos locais (e atualizar a tabela de roteamento).

Uso o OpenConnect no Windows, mas ele também suporta Linux, BSD e macOS (entre outras plataformas) de acordo com a página do projeto .


1
Isso funcionou para mim. Mas minha organização usa um token, portanto a senha é sempre diferente. Então eu tive que desligar o "modo de lote" - caso contrário, ele salvará a primeira senha e a reutilizará.
Gabriel Luci

0

Tente remover essas entradas com o gateway, 10.64.202.13veja se o ping 8.8.8.8funciona, adicione-as novamente uma a uma e identifique qual delas está causando o problema.

Como você corrigiu a DLL. Não consigo nem modificar a tabela de roteamento porque ela continua adicionando o 0.0.0.0gateway VPN novamente.


1
Se você precisar de esclarecimentos ou informações adicionais sobre uma pergunta, poste um comentário em vez de incluí-lo em sua resposta. Obrigado.
Matthew Williams

não estava me permitindo adicionar comentários às perguntas existentes.
Tony
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.