您可以将同一端口号转发给2个不同的内部IP地址吗?


14

如果我在PC上端口转发80端口UDP,可以从其他笔记本电脑访问端口80吗?


1
没有; 转发端口时,会将所有流量发送到一个地址。如果您需要2个设备在同一端口上接收数据,则需要将其转发到将这2个其他设备连接到网络的单个设备(例如,另一个路由器)。
Ramhound 2015年

1
端口8080可以安全地用作辅助系统上的端口80。因此,如果需要的话,将80转发至PC,将8080转发至笔记本。
主宰

您写道:“如果我在PC上转发端口80 UDP,可以从其他笔记本电脑访问端口80吗?” <---很明显,否则港口转向的目的是什么。
barlop

在Ramhound,真的,好吧,那您为什么不解释自己将如何做呢?
barlop

1
我建议您接受VL-80的回答。他的回答很好。它回答了您实际提出的问题-没有人能说出它如何回答您提出的问题。
大卫·贝茨

Answers:


14

您在这里问两个不同的问题。

您可以将同一端口号转发给2个不同的内部IP地址吗?

不,考虑一下。如果数据包到达您的外部地址和UDP端口80(假设你只有一个外部IP地址),如何将你的路由器知道两个内部IP地址应该被转发到?

如果要托管两个不同的服务,则每个服务都需要一个单独的端口。

如果我在PC上端口转发80端口UDP,可以从其他笔记本电脑访问端口80吗?

是。端口转发通常只影响在端具有端口80的数据包。当有人尝试连接到您时,您的路由器将看到:

  • 从其他计算机的随机端口X到您的端口80的传入数据包
  • 从您的端口​​80向其他端口X的传出答复

但是从路由器的角度来看,传出连接(当访问其他地方的网页时)会使它反向。

  • 从您的随机端口X到另一台计算机(Web服务器)的端口80的传出数据包
  • 从对方的端口80到您的端口X的传入回复

因此,端口转发根本不会影响那些端口转发。

(顺便说一下,HTTP通常在TCP上运行。只有Chrome的QUIC实验使用UDP。)


关于“ 应该将其转发到两个内部IP地址中的哪一个 ”,为什么不同时发送到服务器192.168.1.100和服务器192.168.1.101?
Pacerier '17

1
@Pacerier:当客户收到两个完全不同的答复时,客户将做什么?在程序仅请求一个连接的情况下,它不会自动建立两个连接。充其量,它会接受一个应答包,丢弃等,这是无用的,因为你不能告诉它哪个你想服务器...除非两个.100和0.101提供完全相同的服务(负载平衡)。在最坏的情况下,第二个答复甚至会阻止第一个连接尝试的完成(例如,如果第二个服务器继续接收要发送给第一个的数据包,它将继续使用TCP RST进行答复)
user1686

1
@Pacerier:因此,在特定的负载平衡情况下(具有几乎相同的服务器),可以做到这一点–有关更多详细信息,请参见下面的VL-80的答案。实际上,有负载平衡程序可以复制初始数据包并使用响应速度最快的服务器。但是,如果您想以这种方式托管两个不同的网站,那将无法正常工作,因为浏览器直到建立TCP连接很长时间之后才发送网站主机名。
user1686 '17

4

您可以将同一端口号转发给2个不同的内部IP地址吗?

是的,您绝对可以使用UDP进行操作,并且一定程度上可以使用TCP进行操作

由于UDP是无连接的无状态协议,因此您可以侦听特定的端口,一旦数据包到达,您就可以将其复制并发送到两个不同的内部目标。由于没有握手或状态跟踪,所有目的地都将能够成功接收那些数据包。Samplicator是可以为您执行此操作的程序之一。请注意,按照其定义,这不是纯端口转发。

这对于TCP来说是可能的,但是有一些限制-您可以侦听特定的端口,并且一旦数据包到达,您就可以将其转发到池中的特定内部主机。TCP使用连接,因此一旦将初始数据包转发到特定的内部主机,现在就必须将此会话中的其余数据包转发到同一内部主机。

通过使用此技术,您可以使多个后端服务器处理到一个外部目标的请求。

如果我在PC上端口转发80端口UDP,可以从其他笔记本电脑访问端口80吗?

这个问题有点不清楚。如果将流量从外部地址转发到内部主机之一,则仅凭此事实并不能阻止您从内部网络访问同一端口。

假设您将端口80从转发AB。同时C将能够直接访问80端口,B而不会出现任何问题。

     A (external IP)
     |
 ---------
 |       |
 B       C

2
问题是关于路由器。没有任何消费者级路由器具有您描述的UDP复制/ TCP负载平衡功能,而且这些功能都不曾被称为“端口转发”。
杰森C

4
1)问题未指定它必须是消费级设备。2)不管您写了什么技术,我所描述的都是有效的。
VL-80

2
除非软件包中不仅仅包含路由器,否则任何专业级路由器都不会具有这些功能。这不是端口转发,路由器也不执行这些功能。该问题询问“端口转发”,并被标记为router。想想会遇到相同问题的人,找到它,然后阅读答案,然后考虑您是在帮助还是困惑。无论如何,您的术语都是错误的。
杰森C

您写道:“这对于TCP来说是可能的,.......一旦将初始数据包转发到特定的内部主机,现在就必须将该会话中的其余数据包转发到同一内部主机。” <---那么TCP怎么可能呢?您提到了UDP的samplicator,好吧..以便将其复制为UDP ..但是,您对TCP有何建议?
barlop 2015年

4
这个答案很好。我正要说类似的话。对于UDP,这就是组播和IGMP的全部目的。TCP,是,轮循,故障转移等...是的,路由器可以做到这一点-当今的路由器并不是90年代以来的盲目设备。这个问题很含糊,足以允许多次阅读,但这也是我如何阅读该问题的方式。
David Betz

1

您不能将同一端口同时转发到多个IP,我什至没有看到路由器/管理型交换机甚至可以让您做到这一点,而无需发送回配置错误消息。您可以为多个IP设置它,但一次只能启用一个转发规则。因此,您可以禁用一个启用其他功能,反之亦然,但这是一种浪费。如果您要通过LAN的​​外部IP地址访问LAN计算机上的特定端口/服务,则只需担心转发端口。假设您要在两台局域网PC上运行两台Web服务器并且能够一直访问它们,那么最简单的方法是更改​​服务的端口,一个监听80端口,另一个监听在8080或您想要的端口上。99%的服务将允许您在所需的任何端口上进行托管/侦听。如果不指定端口,它将回退到服务默认值。还有其他更高级的处理方法,但这是最简单的方法,任何说不同需求的人都可以回到网络学校,而不考虑或将高级方法称为“端口转发”。


1
“我什至没有见过路由器/管理型交换机甚至可以让您做到这一点……”-消费级Technicolor TC7200.U路由器将使您可以将同一端口的转发配置添加到不同的IP地址。我不确定它是否真的转发了。
乔纳森·克罗斯

-2

不,考虑一下。如果数据包到达您的外部地址和UDP端口80(假设您只有一个外部IP地址),那么路由器将如何知道应该将其转发到两个内部IP地址中的哪个?

如果要托管两个不同的服务,则每个服务都需要一个单独的端口。

您的路由器如何知道转发地址?由于NAT。

如果您购买域,则可以将该域名设置为计算机名称和NETBIOS名称。

例如,必须在两个内部不同但内部端口相同的外部端口上托管网站的两台不同计算机以域命名,否则您必须在内部DNS服务器上设置两个域,同时将内部IP添加到其记录中,路由器连接到该IP,每次有人尝试连接到域名(不是公共IP地址)路由器NAT将相应地转发连接。

您不能将完全相同的端口转发到同一网络上的多个IP,但是只要内部端口不同,就可以使用相同的外部端口,反之亦然。


请不要复制其他答案。
斯科特,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.