网络上只有部分机器可以拥有公网 IP 地址吗?

网络上只有部分机器可以拥有公网 IP 地址吗?

网络上的某些计算机是否可以拥有自己的公共 IP 地址并通过互联网提供内容,而同一网络上的其他计算机仅具有私有 IP 地址,但仍能够通过互联网发出请求(就像家用计算机通过路由器一样)?

更多信息:

我有一组 15 台服务器(只有 12 个可用的公共 IP 地址)

2 台服务器:

  • 需要能够通过互联网提供内容服务
  • 需要能够向其他 15 台服务器发出请求
  • 这些服务器是负载均衡器,它们会将请求转发到其他 4 个提供 http 内容的 nginx 服务器。

13台服务器:

  • 不是需要能够通过互联网提供内容
  • 需要能够为其他 15 台服务器提供内容
  • 需要能够通过互联网发出请求(向外部 API 等)
  • 其中 4 台服务器是 nginx 服务器,将向负载均衡器提供 http 内容。它们需要能够向外部 API(如谷歌地图)发出请求
  • 其中 9 台服务器是数据库服务器(它们不需要向 API 发出请求,但如果能够将 Teamviewer 接入其中就更好了)

    • 这可能吗?
    • 我只需要三层交换机吗?
    • 我需要研究什么才能弄清楚如何做到这一点?

问题的视觉描述:

在此处输入图片描述

答案1

IPv6 有大量 IP,因此所有东西都会有一个公共 IPv6 地址,所以我认为您说的是 IPv4。IPv4 允许一种称为网络地址转换 (NAT) 的路由,它允许多个私有 IP 设备使用路由器上的单个公共 IPv4 地址来使用公共互联网。

您不需要任何花哨的交换机,一个简单的交换机就足够了。路由器决定将数据包发送到哪个 mac 地址以及是否需要执行 NAT 路由。

如果在任何服务器上使用公共 IP 地址。在您的一个或两个负载平衡服务器上,您需要有两个 IP 地址,一个是公共 IP 地址,另一个是内部 IP 地址,最好每个 IP 地址位于单独的网卡上。它/它们可以运行反向代理负载平衡模式下的 Squid它们将与具有私有 IP 地址的实际网络服务器进行对话,以获取和提供内容。

话虽如此,您甚至不需要在任何服务器上拥有公共 IP 地址,只需要您的路由器,它可以决定将数据包发送到哪个私有 IP 地址,并且它可以为您所有的内部 IP 地址服务器提供 NAT 路由,以便他们可以使用互联网。

编辑:每个 http/https 请求,以及 tcp 数据包,都包含请求的源 IP 和源端口。每个 http/https 请求也包含所请求的网站名称。根据该信息,负载平衡器在其配置中有一个可以联系以完成请求的 IP 地址列表。根据它尝试与之通信的机器的 IP 地址,操作系统路由表将确定将联系哪个网卡。

答案2

是的,有可能。

有几种方法。

  1. 如果您的提供商提供 IPv6,请将需要公开访问的服务器设置为双栈,将不需要公开访问的服务器设置为仅 IPv6。如果非公开服务器需要访问互联网上的 IPv4 资源,那么您将需要使用 NAT64/DNS64 来提供对 IPv4 互联网的访问,如果您的提供商特别具有前瞻性,他们可能会为您提供此功能,或者您可能需要自己运行它。

  2. 拥有一个公共子网和一个私有子网,并让网络的现有网关路由器在两个子网之间执行路由,并在私有子网和互联网之间执行 NAT。这要求现有路由器具有足够灵活的 NAT 支持(Linux 可以做到这一点,不确定其他实现是否可行)

  3. 拥有一个公共子网和一个私有子网,并使用您自己的一台机器提供 NAT,以便私有机器可以访问互联网。设置路由,以便公共和私有机器可以互相看到对方,或者为公共机器提供两个子网上的 IP。

答案3

如果您正在运行一些带有数据库后端的公共网站,我建议您至少使用专用防火墙。基本设置是开始的地方,可以根据需要进行构建:

  • 将防火墙设置为互联网的唯一接入点。为其指定 12 个 IP 块中的第一个 IP。初始设置类似于家用路由器的设置方式... 内部 LAN 上的所有计算机都可以访问互联网。如果访问 whatismyip.com,结果是防火墙的外部 IP。所有内部机器都受到防火墙的保护。
  • 使用公共 IP 设置负载均衡器:使用内部网络上的 IP 地址配置负载均衡器。使用防火墙中的 NAT 功能将负载均衡器 A 内部 IP 映射到第二个公共 IP,将负载均衡器 B 内部 IP 映射到第三个公共 IP。(您还必须设置防火墙规则以允许传入请求)

您还需要一个交换机来容纳所有服务器的物理连接...基本上,将 Internet 插入防火墙外部接口。将防火墙内部接口连接到交换机,然后将所有服务器连接到交换机。

相关内容