networking上只能有一些机器拥有一个公共IP地址?

networking上的某些计算机是否有可能拥有自己的公有IP地址并通过互联网提供内容,而同一networking上的其他计算机只有私有IP地址,但仍能通过互联网提出请求(如家庭计算机会通过路由器)?

更多信息:

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

2台服务器:

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

13台服务器:

  • 不需要能够通过互联网提供内容
  • 需要能够服务其他15台服务器的内容
  • 需要能够通过互联网(对外部的API等)提出请求
  • 这些服务器中有4个是nginx服务器,它们将http内容提供给负载平衡器。 他们需要能够向外部API(如Google地图)发出请求
  • 这些服务器中有9个是数据库服务器(他们不需要向API发出请求,但是能够将Teamviewerjoin到服务器中)

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

问题的可视化描述:

在这里输入图像说明

IPv6有很多的IP,因此一切都将有一个公共的IPv6地址,所以我认为你是在谈论IPv4。 IPv4允许一种称为networking地址转换(NAT)的路由,它允许多个私有IP设备在路由器上使用具有单个公共IPv4地址的公共互联网。

你不需要任何奇特的开关,一个简单的开关就可以了。 路由器是决定发送数据包的MAC地址以及是否需要执行NAT路由的。

如果在任何服务器上使用公共IP地址。 在一台或两台负载均衡服务器上,您需要有两个IP地址,一个是公用的,一个是内部的,最好是分开的。 他/他们可以在反向代理负载均衡模式下运行Squid,他们将与具有私有IP地址的实际Web服务器通信,以获取和提供内容。

这就是说,你甚至不需要在你的任何服务器上都有公有的IP地址,只要你的路由器,它可以决定你的哪个私有IP地址发送数据包,并且它可以为所有的您的内部IP地址服务器,以便他们可以使用互联网。

编辑:每个http / https请求,就tcp数据包而言,包括请求的源IP和源端口。 每个http / https请求都包含被请求的网站名称。 基于该信息,负载平衡器在其configuration中具有可以联系以完成请求的IP地址的列表。 根据正在尝试与之通信的计算机的IP地址,OS路由表将确定将与哪个networking进行联系。

是的,这是可能的。

有几种方法。

  1. 如果您的提供商提供IPv6,那么需要将这些服务器设置为公用的可访问双栈,并使不需要公共访问的IPv6服务器。 如果非公共服务器需要访问互联网上的IPv4资源,则需要使用NAT64 / DNS64来访问IPv4互联网,如果您的服务提供商特别向前看,他们可能会为您提供此服务,或者您可能必须自己运行。

  2. 拥有一个公有子网和一个私有子网,并且具有用于networking的现有网关路由器执行两个子网之间的路由以及私有子网和因特网之间的NAT。 这要求现有的路由器具有足够灵活的NAT支持(Linux可以做到这一点,不知道其他实现)

  3. 拥有一个公有子网和一个私有子网,并使用自己的机器提供NAT,这样私人机器就可以访问互联网。 要么build立路由,以便公共和私人机器可以看到彼此,或者给两个子网上的公共机器IP。

如果你正在运行一些公开的网站和一些数据库后端,我build议你至less使用一个专门的防火墙。 基本设置是从哪里开始的,并且可以根据需要构build:

  • 将防火墙设置为只能访问Internet的接入点。 给它在您的12个IP块的第一个IP。 初始设置类似于如何设置家庭路由器…内部LAN上的所有计算机都可以访问互联网。 如果转到whatismyip.com,结果是防火墙的外部IP。 所有内部机器都受防火墙保护。
  • 使用公共IP设置负载均衡器:在内部networking上使用IP地址configuration负载均衡器。 在防火墙中使用NATfunction将loadbalancerA内部IP映射到您的第二个公共IP,并将loadbalancerB内部IP映射到第三个公共IP。 (您还必须设置防火墙规则以允许传入的请求)

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