Linux-Networking

使用 Netplan 將整個 IPv6 /64 塊添加到伺服器

  • October 25, 2018

我已閱讀將整個 IPv6 /64 塊添加到 debian 上的網路介面 我們想利用AnyIP功能將整個 IPv6 /64 子網塊添加到 Web 託管伺服器但使用Netplan,因為我們在 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 配置中以正確的方式配置它。

找到了解決方案,但也許有人知道更好的解決方案?

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

引用自:https://serverfault.com/questions/936848