Назад | Перейти на главную страницу

Добавление на сервер целого блока IPv6 / 64 с помощью Netplan

я прочитал Добавление всего блока IPv6 / 64 к сетевому интерфейсу на debian Мы хотим использовать AnyIP функция добавления всего блока подсети IPv6 / 64 на сервер веб-хостинга, но с использованием 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.

Выполнение этой команды позволяет мне пинговать все IP-адреса / 64 извне:

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