Powershell com duas conexões de rede

0

O computador que estou usando (Windows 7 Enterprise) tem duas conexões de rede, uma que fornece acesso à internet e à rede da universidade - esse adaptador é o que deve ser usado para a maioria das coisas. O segundo adaptador é uma rede local conectada a algum equipamento de laboratório através de um roteador e não tem acesso à Internet.

Estou tendo um problema em fazer com que o git trabalhe nessa situação. Com o segundo adaptador (local) desabilitado, tudo funciona conforme o esperado. No entanto, quando o adaptador está habilitado, o PowerShell não consegue acessar as solicitações do github - pull, por exemplo, apresentando falha no erro 443. No entanto, a Internet ainda funciona para todo o resto fora do powershell - por exemplo, IE / Firefox / cmd / etc. Portanto, parece que o PowerShell está tentando usar o segundo adaptador, mesmo que ele não tenha acesso à Internet.

Curiosamente, se eu executar ping github.com do powershell, a primeira resposta será perdida, mas todas as outras respostas serão recebidas. Se eu tentar executar git pull novamente, ele se conectará, mas apenas uma vez. Se eu tentar puxar novamente, ele falhará. Isso é repetitivo, se eu pingar o github antes de executar um comando git, ele funcionará para esse comando - mas se o comando demorar muito (como a sincronização de um grande repositório), ele falhará no meio.

Eu realmente não tenho certeza do que está causando isso. Eu tentei várias coisas, incluindo a configuração manual das métricas de interface no Windows, para que o primeiro adaptador seja um número muito baixo e o segundo, um número muito alto (por isso, é desfavorável). Mas isso não parece fazer nada para ajudar - resolveu o problema que eu estava tendo com o windows acessando a internet, mas não ajudou com o git. Eu também tentei configurar o segundo adaptador para ter um IP estático com nenhum gateway padrão (como sugerido neste pergunta de superusuário ).

Há algo que eu esteja sentindo falta?

Em resposta a @LazyBadger, executei tracert github.com e obtive o seguinte resultado:

Tracing route to github.com [192.30.252.131]
over a maximum of 30 hops:

  1  ******** [192.168.*.*]  reports: Destination host unreachable.

Se eu executar route print 0* , obtenho o seguinte:

===========================================================================
Interface List
 14...** ** ** ** cd 5e ......Intel(R) I210 Gigabit Network Connection #2  <- This one is the primary adapter
 13...** ** ** ** cd 5f ......Intel(R) I210 Gigabit Network Connection
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0        129.*.*.*       129.*.*.*      2
===========================================================================
Persistent Routes:
  None

IPv6 Route Table
===========================================================================
Active Routes:
  None
Persistent Routes:
  None

(*) Nota: Eu apaguei os endereços IP e MACs, mas o 192.168.*.* é o segundo adaptador que não tem acesso à Internet, e o 129.*.*.* é o primeiro adaptador que tem acesso à Internet.

Se eu executar ping github.com , obtenho o seguinte

Pinging github.com [192.30.252.128] with 32 bytes of data:
Reply from 192.168.*.*: Destination host unreachable.
Reply from 192.30.252.128: bytes=32 time=84ms TTL=52

E, em seguida, executando tracert github.com recebo

Tracing route to github.com [192.30.252.128]
over a maximum of 30 hops:

      1    <1 ms    <1 ms    <1 ms  ********* [129.*.*.*]
      ..............
      7    82 ms    82 ms    83 ms  ae-4-90.edge3.Washington4.Level3.net [4.69.149.210]
      8    83 ms    83 ms    83 ms  GITHUB-INC.edge3.Washington4.Level3.net [4.53.116.102]
      9    84 ms    84 ms    84 ms  192.30.252.201
     10    84 ms    84 ms    84 ms  github.com [192.30.252.128]

Depois disso, ele não funciona novamente - basicamente o primeiro comando depois que eu fizer um ping funcionará, mas qualquer comando adicional volta a usar o adaptador errado até que eu faça outro ping.

Interessante. tracert funciona bem para outros sites como o Google e outros. A diferença parece ser que qualquer um que comece com o IP 192. parece passar pelo adaptador errado.

    
por Tom Carpenter 05.01.2016 / 11:40

1 resposta

3

Bem, acontece que foi uma configuração incorreta do roteador. Por algum motivo, apesar do fato de sua máscara de sub-rede estar configurada como 255.255.255.0 , o Windows estava configurando a segunda interface para ter uma máscara de sub-rede de 255.0.0.0 . Depois de alterar algumas outras configurações no roteador, a máscara de sub-rede correta foi atribuída.

Essencialmente porque a máscara de sub-rede era muito grande, e o Github por acaso usa 192.x.x.x como seu endereço IP externo, todas as solicitações para o Github estavam sendo roteadas pela segunda interface. Depois que a máscara de sub-rede foi corrigida, o problema desapareceu.

Isso também explica por que sites como o Google podem ser acessados corretamente no PS, mas o Github não conseguiu.

    
por 07.01.2016 / 12:00