使用 Netplan 向服务器添加整个 IPv6 /64 块

使用 Netplan 向服务器添加整个 IPv6 /64 块

我读过了在 Debian 上向网络接口添加整个 IPv6 /64 块 我们希望利用任何IP将整个 IPv6 /64 子网块添加到 Web 托管服务器的功能,但使用网络计划因为我们使用的是 Ubuntu 18.04

附注:一些专家建议不要使用 AnyIP 来配置 IPv6,因此我们还将研究替代解决方案,例如手动配置较少数量的 IP。

例如,我们的数据中心已经将 /64 路由到单个 IP,

The range  2001:db8:1:10::0/64  is routed to the IP  2001:db8:1::1:10
The range  2001:db8:1:11::0/64  is routed to the IP  2001:db8:1::1:11

在 Netplan 中,我可以通过这种方式配置单个 IP

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      accept-ra: no
      addresses:
        - '2001:db8:1::1:10/48'
        - '2001:db8:1:10::0/64'
        - '2001:db8:1:10::1/64'
      gateway6: '2001:db8:1::1'

这有效。但是我想使用2001:db8:1:10::/64此服务器上的整个范围,并且不想在 18446744073709551616 行中进行配置。

执行此命令使我能够从外部 ping 所有 /64 IP:

ip -6 route add local 2001:db8:1:10::/64 dev lo

附注:服务器守护进程需要支持IP_FREEBIND绑定到未在接口上明确配置的 IP。

我的问题是:我不需要在每次重启后执行,而是ip -6 route add local ..希望在 Netplan Yaml 配置中以正确的方式进行配置。

答案1

找到了一个解决方案,但也许有人知道更好的解决方案?

cat <<EOF > /usr/lib/networkd-dispatcher/routable.d/50-ipv6-block
#!/bin/sh
ip -6 route add local 2001:db8:1:10::/64 dev lo
exit 0
EOF

chmod 755 /usr/lib/networkd-dispatcher/routable.d/50-ipv6-block

检查它是否有效:

ip -6 route del local 2001:db8:1:10::/64
netplan apply
systemctl --no-pager status networkd-dispatcher.service
route -6 | grep 2001:db8:1:10::/64
ping6 -c2 2001:db8:1:10::1234

如果你看到RTNETLINK answers: File exists这是因为添加了一条已经存在的路线,因为之前的netplan apply

答案2

你提到的任何 IP 解决方案都应该可以完美运行,因为本地路线实际上并不是一条路线,它是允许您使用子网中任何 IP 的标志。因此,请不要将其视为“路由”,此术语在此处无效。本地路由是一种打破“路由”术语的解决方法。

相关内容