网络上的某些计算机是否可以拥有自己的公共 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
是的,有可能。
有几种方法。
如果您的提供商提供 IPv6,请将需要公开访问的服务器设置为双栈,将不需要公开访问的服务器设置为仅 IPv6。如果非公开服务器需要访问互联网上的 IPv4 资源,那么您将需要使用 NAT64/DNS64 来提供对 IPv4 互联网的访问,如果您的提供商特别具有前瞻性,他们可能会为您提供此功能,或者您可能需要自己运行它。
拥有一个公共子网和一个私有子网,并让网络的现有网关路由器在两个子网之间执行路由,并在私有子网和互联网之间执行 NAT。这要求现有路由器具有足够灵活的 NAT 支持(Linux 可以做到这一点,不确定其他实现是否可行)
拥有一个公共子网和一个私有子网,并使用您自己的一台机器提供 NAT,以便私有机器可以访问互联网。设置路由,以便公共和私有机器可以互相看到对方,或者为公共机器提供两个子网上的 IP。
答案3
如果您正在运行一些带有数据库后端的公共网站,我建议您至少使用专用防火墙。基本设置是开始的地方,可以根据需要进行构建:
- 将防火墙设置为互联网的唯一接入点。为其指定 12 个 IP 块中的第一个 IP。初始设置类似于家用路由器的设置方式... 内部 LAN 上的所有计算机都可以访问互联网。如果访问 whatismyip.com,结果是防火墙的外部 IP。所有内部机器都受到防火墙的保护。
- 使用公共 IP 设置负载均衡器:使用内部网络上的 IP 地址配置负载均衡器。使用防火墙中的 NAT 功能将负载均衡器 A 内部 IP 映射到第二个公共 IP,将负载均衡器 B 内部 IP 映射到第三个公共 IP。(您还必须设置防火墙规则以允许传入请求)
您还需要一个交换机来容纳所有服务器的物理连接...基本上,将 Internet 插入防火墙外部接口。将防火墙内部接口连接到交换机,然后将所有服务器连接到交换机。