AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1059990
Accepted
user885983
user885983
Asked: 2021-04-11 06:41:37 +0800 CST2021-04-11 06:41:37 +0800 CST 2021-04-11 06:41:37 +0800 CST

将 ipv4 路由到 ipv6 作为机制来克服在前提 k8s 上不拥有 ipv4 块以实现负载平衡(无 aws/gcp)

  • 772

这不是关于隧道的问题,尽管这可能是解决方案的一部分。

对于公共云提供商,由于提供商拥有大型 A/B/C 类公共 IPv4 块,因此请求负载均衡器是微不足道的。然而,虽然拥有一个 ipv6 块是微不足道的,但发布负载均衡器地址并非易事,因为您不能假设传入流量支持 ipv6。如何弥合这一差距?

尝试实现:给定有限的 ipv4 公共地址 (4),而是生成第 7 层 http 负载均衡器 A 记录,这些记录映射到 ipv4 地址。这些 ip4 地址然后路由到集群内 ipv6 集群地址。也许这里需要 SNI?

约束:不能假设 Ingres 流量支持 ipv6,因此(如果可能)需要 SNAT 来重写 ipv6 -> ipv6 并再次返回(这可能吗?)、iptables 和 conntrack 以进行连接跟踪?

E.g ingress
Load balancer A records   Public ipv4 address  <mapping (not tunnelling)>  Public ipv6 address range  
lb[1-n].example.com  ------>  192.0.2.0/24         ---->   2001:DB8::/32
E.g. egress
ipv6 address range        Public ipv4 address
2001:DB8::/32             ----->  192.0.2.0/24        ----> source ip ipv4 or ipv6

https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/ https://kubernetes.io/docs/concepts/services-networking/dual-stack/ netfilter https://metallb.universe.tf / https://linux.die.net/man/8/ip6tables https://community.hetzner.com/tutorials/install-kubernetes-cluster

load-balancing nat iptables ipv6 conntrack
  • 1 1 个回答
  • 123 Views

1 个回答

  • Voted
  1. Best Answer
    John Mahowald
    2021-04-11T20:12:43+08:002021-04-11T20:12:43+08:00

    在众所周知的端口上运行服务,IP 元组的服务器部分大部分是不变的。比如曾经流行的 https over 443/tcp。第 4 层负载均衡器将需要每个服务的 IP 地址,这在 IPv4 耗尽时不实用。

    基于名称的虚拟主机来救援。可能是 http 主机头或 SNI。

    不,不需要 SNAT。

    基于代理的负载均衡器应该能够终止一个 IP 连接并建立一个新的连接,可能使用不同的地址族。例如,两者 a.example.net都有b.example.net负载均衡器的 A 记录,位于203.0.113.69。虚拟主机 A 的后端可能是2001:db8:26:74::aB 的后端2001:db8:26:83::b。如果所有流量都通过负载均衡器,则后端不需要 IPv4 地址。

    或者,让 v4 和 v6 相互通信可以在第 4 层完成,而无需应用程序代理或状态防火墙。SIIT 是一种无状态的翻译方式。但是,这并不能解决许多服务需要多个 v4 地址的问题,您的一个 IPv4 会在后端映射到一个 IPv6。因此,这很可能不会取代应用层虚拟主机。如果您只想在数据中心使用 v6 并仅在需要时提供 v4,这仍然很有用。

    这些代理或翻译实际上都不是路由。IPv4 和 IPv6 是不同的协议,它们不能原封不动地转发。

    真正弥合差距的将是 v6 端到端。大部分互联网还没有。

    • 1

相关问题

  • 网络负载平衡服务器无法相互通信

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • 防止拒绝服务攻击的最佳技术是什么?

  • 添加备份互联网连接需要哪些硬件?

  • 什么是最有效的 Windows 负载平衡解决方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve