具有两个网络连接的 Powershell

具有两个网络连接的 Powershell

我使用的计算机(Windows 7 Enterprise)有两个网络连接,一个提供对互联网和大学网络的访问 - 这个适配器应该用于大多数事情。第二个适配器是通过路由器连接到一些实验室设备的本地网络,没有互联网访问权限。

在这种情况下,我无法让 git 正常工作。禁用第二个(本地)适配器后,一切都按预期工作。但是,当启用适配器时,powershell 无法访问 github - 例如,拉取请求失败,显示错误 443。然而,互联网仍然可以用于 powershell 之外的所有其他东西 - 例如 IE/Firefox/cmd/等。因此,似乎 powershell 正在尝试使用第二个适配器,即使它无法访问互联网。

有趣的是,如果我ping github.com从 powershell 运行,第一个回复会丢失,但随后会收到所有其他回复。如果我再次尝试运行git pull,它会连接,但只能连接一次。如果我再次尝试拉取,它会失败。这是可重复的,如果我在运行 git 命令之前 ping github,那么它对该命令有效 -如果命令花费的时间太长(例如同步大型存储库),它会在中途失败。

我真的不知道是什么原因造成的。我尝试了几种方法,包括在 Windows 中手动设置接口指标,使第一个适配器的数字非常低,而第二个适配器的数字非常高(因此不利)。但这似乎对 git 没有任何帮助 - 它解决了我在 Windows 访问互联网时遇到的问题,但对 git 没有帮助。我还尝试将第二个适配器设置为静态 IP,没有默认网关(如本文所建议的那样超级用户问题)。

我是否遗漏了什么?


为了回应@LazyBadger,我已经运行tracert github.com并得到以下结果:

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

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

如果我运行route print 0*,我会得到以下结果:

===========================================================================
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

(*) 注意:我删除了 IP 地址和 MAC 地址,但是192.168.*.*第二个适配器无法访问互联网,而129.*.*.*第一个适配器可以访问互联网。


如果我然后运行ping github.com,我会得到以下内容

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

然后跑步tracert github.com我得到了

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]

在此之后它不再起作用 - 基本上,我执行 ping 后的第一个命令将起作用,但任何进一步的命令都会返回到使用错误的适配器,直到我再次执行 ping 为止。


很有趣。tracert对于 Google 等其他网站来说,运行良好。不同之处在于,任何以 IP 开头的网站192.似乎都经过了错误的适配器。

答案1

好吧,原来是路由器配置错误。出于某种原因,尽管子网掩码配置为255.255.255.0,但 Windows 却将第二个接口的子网掩码设置为255.0.0.0。在更改路由器中的其他一些设置后,分配了正确的子网掩码。

本质上是因为子网掩码太宽,而 Github 恰好将192.x.x.x其用作外部 IP 地址,因此对 Github 的所有请求都通过第二个接口路由。一旦子网掩码得到纠正,问题就消失了。

这也解释了为什么从 PS 可以正确访问 Google 等网站,而 Github 却不能。

相关内容