Proxy.pac myIpAddress() retorna endereço local e não adaptadores Ethernet

Proxy.pac myIpAddress() retorna endereço local e não adaptadores Ethernet

Isso é meio que uma parte doisdaqui.

Quando os clientes VPN entram na minha rede, eles recebem um endereço IP que, por sua vez, lhes dá a opção 252 do DHCP. A detecção automática então captura este arquivo

O que eu preciso essencialmente é uma maneira de o proxy.pac descobrir se um cliente está em uma conexão VPN para que possa resolver um DIRECT para ele.

Então, se eu fizer um simplesvar meuIp = meuendereçoip()e então basta combiná-lo em uma lista desses endereços fixos e então o problema será resolvido. Porém a função myIpAddress() parece estar captando o IP local da máquina (ex: 192.168.10.1) e não do adaptador de rede. No meu caso, esse endereço local é meu MS Loopback, necessário para algumas de minhas VMs locais. Se eu desabilitar meu adaptador Loopback, ele começará a resolver o endereço correto. Esta não é uma solução alternativa ideal.

Então, como faço para resolver o endereço IP desejado do adaptador correto?

  • Tenho conduzido esses testes em minha máquina local por enquanto.
  • Estou ciente de que não é uma solução VPN fechada, é apenas o que foi decidido neste momento.

Desde já, obrigado...

Responder1

Infelizmente, fazer com que myIpAddress() retorne o endereço correto no Windowsfazenvolvem a alteração da prioridade das NICs (no Windows XP, isso está na caixa de diálogo "Configurações avançadas..." do menu "Avançado" da caixa de diálogo "Conexões de rede").

Aqui está o problema de outra pessoa que se parece com o que você está vendo:http://www.geurtsrus.com/gerke/2005/01/proxy-auto-configuration-blues.html

Talvez seja melhor detectar o endereço IP que precisa de proxy, em vez daqueles que não precisam (ou seja, sub-redes locais na empresa) e assumir DIRETO caso contrário.

Outra alternativa seria passar uma opção PAC DHCP diferente para clientes na VPN. Isso pode ser fácil se os usuários da VPN vierem de uma sub-rede dedicada, mas pode não ser se vierem de uma sub-rede LAN.

Responder2

É possível redirecionar wpad.dat para wpad.aspx e encontrar o endereço IP com ASP:

<%
Dim strClientIP As String
strClientIP = Request.UserHostAddress()
%>

function FindProxyForURL(url, host)
{
    //proxy definition
    var UseProxy = "PROXY x.x.x.x:8080"

    if (isPlainHostName(host)) {return "DIRECT"; }

    if (isInNet("<%Response.Write(strClientIP)%>", "x.x.1.0", "255.255.255.0"))
        return UseProxy;
    else
        return "DIRECT";
}

Responder3

Qual navegador você está usando? Os navegadores baseados no Mozilla tiveram problemas com isso, mas eles não puderam ser resolvidos facilmente porque a chamada de função foi originalmente definida assumindo que um sistema era de hospedagem única (o que é completamente falso, a menos que você esteja desconectado da rede física e executando apenas em loopback).

informação relacionada