Маршрут по умолчанию IPv6 НЕ устанавливается netplan Ubuntu 18.04.2 LTS

Невозможно настроить маршрут по умолчанию, используя netplan в системе Ubuntu 18.04.2. Маршрут работает, когда выдаются явные команды ip -6 route add ....

Расширения конфиденциальности отключены: /etc/sysctl.d/10-ipv6-privacy.conf

net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.ens192.use_tempaddr = 0

SLACC и RA отключены, переадресация IPv4 / IPv6 один (машина служит сервером OpenVPN)

/etc/sysctl.d/10-ipv6-router.conf

net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0

net.ipv6.conf.all.proxy_ndp = 1

/ etc / sysctl.conf

net.ipv4.ip_forward=1
...
net.ipv6.conf.all.forwarding=1

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: no
      addresses:
        - a.b.c.d/24
      gateway4: a.b.c.e

      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:beef/64"
      gateway6: "2001:0db8:0004::0001"

    ens19:
      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:dead/64"
      gateway6: "2001:0db8:0004::0001"

Это назначает адреса для интерфейса, как показано ниже :

$ ip -6 addr show

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:0db8:0004:4a1a::dead:beef/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::abcd:efff:fea3:2a03/64 scope link 
       valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:0db8:0004:4a1a::dead:dead/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::defc:deff:fe98:7c74/64 scope link 
       valid_lft forever preferred_lft forever

Маршруты, использующие ip -6 route show

2001:0db8:0004:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:0004:4a1a::/64 dev ens18 proto kernel metric 256 pref medium

fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium

Существует нет настроенного маршрута по умолчанию, и проверка связи с внешними сайтами НЕ работает:

$ ping -6 -c3 ipv6.google.com
connect: Network is unreachable

Выполнение следующих двух команд:

$ sudo ip -6 route add 2001:0db8:0004::0001 dev ens18 metric 1
$ sudo ip -6 route add default via 2001:0db8:0004::0001 dev ens18 metric 1

Сейчас работает ip -6 route показывает:

2001:0db8:4::1 dev ens18 metric 1 pref medium

2001:0db8:4:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:4:4a1a::/64 dev ens18 proto kernel metric 256 pref medium

fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium

default via 2001:0db8:4::1 dev ens18 metric 1 pref medium

Маршрут по умолчанию теперь настроен и пингует внешний sites работает :

$ ping -6 -c3 ipv6.google.com
PING ipv6.google.com(ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e)) 56 data bytes
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=1 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=2 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=3 ttl=56 time=23.2 ms

--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 23.274/23.283/23.293/0.176 ms

Итак, что не так с конфигурацией netplan? Почему маршруты IPv6 по умолчанию не настраиваются?

Отредактировано после внесения изменений, предложенных @slangasek:

 ethernets:
    ens18:
     ...

      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:beef/64"

      routes:
        - to: "::/0"
          via: "2001:0db8:0004::1"
          metric: 1
          on-link: true

Однако, это делает не работа. Я получаю сообщения типа ens18: Could not set route: No route to host в журналах журнала.

Из ответа на https://askubuntu.com/a/1014683 я добавил дополнительный маршрут к маршрутизатору, используя scope: link:

  routes:
    - to: "2001:0db8:0004::1/128"
      via: "2001:0db8:0004::1"
      metric: 1
      scope: link
    - to: "::/0"
      via: "2001:0db8:0004::1"
      metric: 1
      on-link: true

Но, тем не менее, не не работает!

2
задан 3 June 2019 в 20:57

2 ответа

Ваша конфигурация показывает, что у вас есть локальная сеть 2001: 0db8: 0004: 4a1a :: / 64, но вы пытаетесь настроить шлюз 2001: 0db8: 0004 :: 0001, который не является частью этой сети. Поэтому networkd отказывается добавлять маршрут по умолчанию через маршрутизатор, к которому у вас нет маршрута.

Ваша ручная конфигурация с помощью ip route также отражает это: вы сначала добавляете маршрут для адреса маршрутизатора, объявляете, что он локально подключен к вашему Ethernet, а затем устанавливаете маршрут по умолчанию.

Таким образом, вы должны сделать эквивалент с netplan, который должен объявить две записи в маршрутах: одну, которая является scope: link и одну, которая устанавливает on-link: true:

  addresses:
    - "2001:0db8:0004:4a1a::dead:dead/64"
  routes:
    - to: "2001:0db8:0004::0001/128"
      scope: link
    - to: "::/0"
      via: "2001:0db8:0004::0001"
      on-link: true
2
ответ дан 3 June 2019 в 20:57
network:
  version: 2
  renderer: networkd
  ethernets:
    ens19:
      dhcp6: no
      accept-ra: no
      addresses: ["2001:0db8:0004:4a1a::dead:dead/64"]
      gateway6: "2001:0db8:0004::0001"
      routes:
         - to: "2001:0db8:0004::0001/128"
           scope: link

На момент написания этой статьи у меня это работает в Ubuntu 18.04.4 LTS (с использованием разных сетевых блоков, но протестированных)

1
ответ дан 26 April 2020 в 19:33

Другие вопросы по тегам:

Похожие вопросы: