【问题标题】:How can I connect to the net through a specific IP if my pc has multiple IP?如果我的电脑有多个 IP,如何通过特定 IP 连接到网络?
【发布时间】:2019-09-16 09:29:59
【问题描述】:

我的桌面有两个以太网端口,每个端口都连接到不同的网络(网络 A、网络 B)。

我有一个需要在此桌面上运行并需要访问网络的 C# 应用程序。网络应该只能从网络 A 访问。

应用程序似乎随机选择了一个网络来尝试访问该网络。 如何让应用程序查找并仅通过网络 A 连接?

编辑:只是为了添加更多信息。我需要通过网络 A 连接到网络,因为我需要提交一个httpWebRequest,而接收方只会接受来自网络 A 的信息。

【问题讨论】:

  • 听起来更像是网络配置问题而不是编程问题。一旦您的路线设置正确,应用程序就不需要为此烦恼。 serverfault.com 应该是寻求帮助的正确位置。
  • 这里有可能对您有帮助的文档docs.microsoft.com/en-us/dotnet/api/…
  • 只是澄清一下:是否可以从两个网络接口访问预期的目标主机?
  • 掩码决定网络。您应该在通向 Internet(主要)的网络上具有 0.0.0.0 的掩码,这是默认值。然后将掩码设置为辅助以仅覆盖辅助网络。使用 255.0.0.0,或 255.255.0.0,或 255.255.255.0

标签: c#


【解决方案1】:

掩码根据 IP 路由协议确定网络。您应该在网络上,它指向互联网(主要),掩码为 0.0.0.0,这是默认值。然后在辅助上设置掩码以仅覆盖辅助网络。使用 255.0.0.0,或 255.255.0.0,或 255.255.255.0

【讨论】:

    【解决方案2】:

    假设网络 A 和 B 对原始互联网访问同样有效(例如,具有同等权重的 wifi 和有线连接的设备)的合法场景,您可以使用 routes 进行控制。

    您的应用程序中的代码不会选择路由。相反,它们是计算机网络配置的一部分。您可能很想使用应用程序代码来更改网络配置,但这几乎总是一个非常糟糕的主意。

    要在网络配置中设置正确的路由,您需要知道服务的 IP 地址(这有点糟糕,因为您通常只从主机名开始,在这种情况下 IP 地址甚至可能是动态的云服务)。您还必须知道连接 A 的网络地址。网络地址与网关 IP 地址不同,通常以 0 结尾(尽管可以构建具有不同网络地址的网络子网)。

    添加路由后,计算机上以您的服务地址为目标的连接将看到此新路由比 A 或 B 处的默认网关更具体,因此始终选择它。

    路由的常见用途是强制某些流量通过特殊连接,例如 VPN。

    【讨论】:

    • 这只有在接口的子掩码正确的情况下才有效。路由子将接口的掩码分成更小的部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多