如何将 IP 地址重定向/路由到另一个 IP 地址?

yar*_*rek 11 windows netsh

如何将一个 IP 地址重定向/路由到另一个 IP 地址?

例如:10.10.10.10 -> 20.20.20.20 然后当我在浏览器中输入 10.10.10.10 时,它连接到 20.20.20.20。

我们假设 10.10.10.10 和 20.20.20.20 是外部 IP 地址。

TOO*_*GAM 24

介绍注意事项

在实现任何这些之前,了解路由实际上做了什么会非常有帮助。

路由不会改变网络地址。(嗯,NAT 可以。并且 NAT 可以在应用路由时执行。但是,如果您想学习如何做某事,您应该尽量保持简单。最好将简单/传统路由视为单独的过程,因为这是一种更简单的思考方式。)

在考虑更改地址之类的东西之前,让我们确保彻底了解这些东西的实际工作原理,这样我们就不会尝试做会违反常见网络设计规则的事情(并且可能会被大多数硬件拒绝)和通常实现这些规则的软件)。如果这些东西得到了学习,那么至少如果我们尝试一些疯狂的事情,我们就会明白我们正在尝试的是疯狂的,并且会为我们试图面对的障碍类型做好心理准备。这比不知道这些细节要好得多。

关于路由

路由通常旨在确保流量从一个网络(通常称为“子网”或“子网”)到达另一个网络。

当您的计算机发送网络流量时,它可能会发送网络流量的“帧”。这些帧称为“第 2 层”流量。(第 1 层侧重于物理连接,例如电缆或天线和无线电波。)帧被传送到 MAC-48 地址(也称为 EIU-48 地址,更常称为“MAC 地址”)。传送帧的最常见方式是使用以太网(通过 UTP 铜缆)或 Wi-Fi。

帧往往包含数据包。目前最常见的数据包类型是 IPv6 和 IPv4。(可能不是按这个顺序……)这些数据包被认为是第 3 层流量。数据包往往包含 TCP 段或 UDP 数据报,它们是第 4 层流量。我使用的术语“层”与“OSI 模型”所描述的一致,它往往在许多专业级网络课程/培训中得到教授。

现在,假设您在 192.168.1.103 并想与 4.2.2.2 通信。这可能是 UDP 端口 53 流量 (DNS),但我将使用 ICMP (ping) 作为示例。

通常,您的计算机会将 192.168.1.103 与您的网络大小进行比较,后者由前缀长度(例如 IPv4 /24)指定。前缀长度(尤其是 IPv6 /64)在 IPv6 中最为常见。对于 IPv4,网络的大小通常写为子网掩码。常见子网掩码的二进制值以所有的 1 开头,所有的零都指向子网掩码的末尾,因此通常以 255.255.255.0 等子网掩码结束。使用这些 IPv4 /24 和 255.255.255.0 示例,网络的大小是 256 个地址。因此,如果所有可能的 Internet 地址被分成大小均匀的组,那么计算机会计算出哪些地址将位于 256 个地址组的开头和结尾。因此,如果所有可能的 Internet 地址都分成 256 个地址的组,那么 192.168.1.

由于所需的目的地是 4.2.2.2,并且 4.2.2.2 不在 192.168.1.0 和 192.168.1.255 之间,因此流量不会使用帧发送到 4.2.2.2 的 MAC 地址。(我们不太可能使用 IPv4 的地址解析协议 (ARP) 或邻居发现协议(如果我们使用 IPv6)来发现 MAC 地址,因为它位于不同的网络上。这与影响 ARP 的限制有关和 IPv6 NDP。)那么,如果我们不能向那里发送帧,我们如何与 4.2.2.2 通信?

通过路由。我们可以找到一个网关来帮助我们获得到 4.2.2.2 的流量。对于大多数常见的消费设备,人们通常习惯于只有两种类型的网络:计算机所属的网络和全球互联网。(公司有时有多个站点,也可能有其他网络。)旨在处理世界任何地方(整个 Internet)地址的网关有时称为“最后的网关”,更常见的称为“默认网关”。如果没有更具体的网关发生,该网关将用于任何地址。

因此,您的计算机将为默认网关发送 IPv4 ARP 请求,该请求需要在您的网络中。通常,这将是您网络上的第一个“可用”地址。(由于一些非常古老的广播标准,也许也由于一些常见的混淆,许多人只是将子网的第一个地址视为不可用。这包括一些软件和硬件的创建者,因此这些人的决定往往会影响其余部分我们。所以 192.168.1.0 在这个例子中可能不可用。)所以 192.168.1.1 可能是第一个可用地址,并且可能是默认网关。我会用那个例子。

一旦您的计算机计算出默认网关的 MAC 地址,您的计算机就会使用寻址为 4.2.2.2 的 IP 数据包发送 ICMP 消息,并且该 IP 数据包是一个帧的一部分,该帧的 MAC 地址为网关。

因此,包含 ICMP 消息的网络流量实际上并未发送到 IP 地址 192.168.1.1。流量被发送到与 192.168.1.1 相关的 MAC 地址。

然后,您的本地路由器将关注流量,因为流量将到达 MAC 地址。因为它是一个路由器,它将通过路由流量来进行协作。因此,您的路由器将确定它是否知道如何通过位于同一网络上直接与 4.2.2.2 通信。很可能,您的路由器不知道如何获取 4.2.2.2 的 MAC 地址。因此,该过程会重复,因为您的路由器随后会将流量“路由”到另一台路由器的 MAC 地址,该路由器可能位于您的 Internet 服务提供商 (ISP) 处。

现在,解释这一切的重点是,即使您确实设法让计算机将 10.10.10.10 转换为 20.20.20.20,如果接收设备不期待 10.10.10.10 的流量,那也可能毫无用处。位于 20.20.20.20 的接收设备可能会收到流量,但如果流量是针对 10.10.10.10 的,则可能会忽略它。

请记住,在我的工作示例中,即使 IP 流量被发送到与默认网关相关的 MAC 地址,IP 数据包的目的地 4.2.2.2 在整个路由流量过程中保持不变。

因此,如果您尝试更改目标 IP 地址,那不是简单的路由。那就是NAT。NAT 是网络地址转换的缩写。因此,当网络流量涉及特定网络地址 (10.10.10.10) 时,它会被转换为另一个地址 (20.20.20.20)。请参阅:Windows 中的 NAT

TCP的限制

请注意,很多 Internet 流量都使用 TCP。如果你试图得到一个去往 20.20.20.20 的 TCP 连接,TCP 对双向通信的要求可能会造成一些麻烦。即使您可以将流量发送到 20.20.20.20,那么 20.20.20.20 也需要能够成功响应,因为 TCP 需要双向通信才能在 TCP 连接开始时完成“TCP 握手”,在任何您的(“有效负载”)数据被发送。如果您的软件程序认为它正在向 10.10.10.10 发送流量,那么您的软件程序将不会接受来自 20.20.20.20 的响应流量。因此,除了对传出流量进行 NAT 处理之外,如果您使用 TCP,您可能还需要能够逆转 NAT 效果。TCP 非常常见,例如 HTTP(网络)和 SMTP(电子邮件)。主要的例外是非常小的流量(例如使用 UDP 的经典 DNS。另一个例子是 ICMP)或对缓慢非常敏感的流量(可能是 VOIP、新闻(例如股票价格,旧信息比重新更新新信息毫无用处)信息)、实时游戏)。了解您打算使用的协议是否依赖于较低级别的协议(如 TCP)会非常有帮助。网络嗅探(例如,tcpdump 或 Wireshark)对于理解为什么事情不起作用也非常有用。了解您打算使用的协议是否依赖于较低级别的协议(如 TCP)会非常有帮助。网络嗅探(例如,tcpdump 或 Wireshark)对于理解为什么事情不起作用也非常有用。了解您打算使用的协议是否依赖于较低级别的协议(如 TCP)会非常有帮助。网络嗅探(例如,tcpdump 或 Wireshark)对于理解为什么事情不起作用也非常有用。

NAT 可用性

通常,您不会为最终用户机器上的 NAT 烦恼。通常,这是由路由器完成的。某些版本的 Windows 确实支持作为路由器的功能,这意味着计算机可以像其他路由器处理流量一样处理网络流量。

这个问题有“Windows”标签,所以我猜你想使用 Microsoft Windows 中内置的软件来做到这一点,我认为 NAT 将受到名为“路由”的功能的支持。现代版本的 Windows 将此功能内置到一些称为“路由和远程访问”(缩写为“RRAS”)的软件中。

据我所知,Microsoft Windows 的“家庭”版本通常不支持 RRAS。Windows Server 版本(例如,Windows Server 2008 R2)通常支持它。我认为“专业”最终用户版本可能会支持它,例如“Windows 7 Professional”。我相当怀疑,像“Windows 7 Home”这样的家庭版本可能完全没有这个功能。

即使该功能在您的 Windows 版本中可能可用,默认情况下它也可能被禁用,甚至被卸载。因此,您可能需要去一个可以安装 Windows 功能的地方(例如,“服务器管理器”,或者控制面板的小程序,其名称中包含“程序”一词,然后该小程序的左框架可能有一个用于添加/安装/启用“功能”的超链接)。

现在,理论上,您可以告诉您的计算机将流量路由到一个代理,该代理对流量进行 NAT 并将其作为不同的 IP 地址发送出去。所以你所要求的可能是可能的。

方法

一种可能的替代方法:考虑操纵 DNS 而不是 IP 流量。例如,将 DNS 名称指向不同的 IP 地址,可能通过使用 CNAMES(如果您可以影响相关域名的 DNS 记录)或使用主机文件。通常更容易实现和逆转(如果您决定撤消更改)。

听起来很有可能,这对于您真正想要完成的任何事情来说都不是最佳方法。了解尝试按照规则正常做事可能非常具有挑战性。尝试发明自己的做事方式更具挑战性。在您没有使用标准方法成功设计网络的经验之前,在设计网络时过于创新是非常不可取的,并且您知道标准方法的局限性(也可能还有这些局限性存在的原因),并且您真的知道您的重新做更好(以及为什么更好)。否则,您可能会遇到许多问题。(我可以从一些经验中说出来。最终,我只是学会了先尝试以直截了当的方式做事。)

这个问题看起来像是XY 问题的经典案例。如果你想要完成的不是你刚刚要求的东西,试着创建另一个问题,你问的是你真正想要完成的事情。


mnm*_*mnc -1

您可以使用命令:

route add 10.10.10.10 MASK 255.255.255.255 20.20.20.20 METRIC ? IF ?

您需要用适当的数字代替“?”。在这里了解什么是公制以及 if 。

metric Metric:指定路由的整数成本度量(范围从 1 到 9999),用于在路由表中的多条路由中选择与转发数据包的目标地址最匹配的路由时使用。选择具有最低度量的路由。该度量可以反映跳数、路径速度、路径可靠性、路径吞吐量或管理属性。

if Interface:指定可访问目标的接口的接口索引。如需接口列表及其对应的接口索引,请使用route print 命令的显示。您可以使用十进制或十六进制值作为接口索引。对于十六进制值,请在十六进制数字前添加 0x。当省略 if 参数时,根据网关地址确定接口。

使用命令route print找出您需要使用的 IF 值。

  • 这行不通。首先,它要求第二台机器是路由器或配置为接受除其自身之外的 IP 的流量,其次,它要求第二台机器可直接访问。OP需要的是NAT (3认同)