Маршрутизация IP-адресов в Ubuntu 18.04

Я царапал голову об этом весь день. В основном у меня есть несколько серверов на частной сети, каждом с частным присвоенным адресом IPv6 и общедоступный IPv4 и присвоенный IPv6. Я хочу, чтобы серверы только общались друг с другом использование их частных адресов IPv6.

Я настроил использование IP-адресов Netplan, но теперь пытаюсь настроить маршруты так, чтобы, если Сервер A пытается связаться с Сервером B это, сделал так через частный IPv6 A Сервера не через любой другой IP, присвоенный серверу.

Это - мой конфигурационный файл Netplan до сих пор (у меня есть XXX'd части IP-адресов для безопасности):

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 139.XXX.XXX.132/24
        - "2a01:XXXX::XXXX:XXXX:XXXX:0f9c/64"
      gateway4: 139.XXX.XXX.1
      gateway6: "fe80::1"
      routes:
        - to: "2a01:XXXX:e000:01e6:1111:1111:1111:1111/64"
          via: "2a01:XXXX:e000:01e5:1111:1111:1111:1111/64"
          on-link: true
        - to: "2a01:XXXX:e000:01e7:1111:1111:1111:1111/64"
          via: "2a01:XXXX:e000:01e5:1111:1111:1111:1111/64"
          on-link: true
        - to: "2a01:XXXX:e000:01e8:1111:1111:1111:1111/64"
          via: "2a01:XXXX:e000:01e5:1111:1111:1111:1111/64"
          on-link: true
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Проблема, которую я имею, состоит в том, что маршруты не показывают, когда я делаю команду ip route list или ip -6 route show.

Любая справка значительно ценилась бы. Я довольно плохо знаком с сетями и Netplan, и я борюсь с официальной документацией.

2
задан 23 February 2019 в 23:58

2 ответа

Так как Вашими маршрутами является IPv6, который необходимо использовать ip -6 route show ip route list показывает, что IPv4 направляет только, который Вы не имеете в своем netplan.

ip -6 route add ipv6network/prefixlength via ipv6address
0
ответ дан 2 December 2019 в 06:31

via: "2a01:XXXX:e000:01e5:1111:1111:1111:1111/64" неправильный синтаксис. "через" взятия адрес узла маршрутизатора, не сетевой адрес (при добавлении сетевой маски - т.е./64 - это - сетевой адрес не адрес узла).

Вы также показываете "2a01:XXXX:e000:01e6:1111:1111:1111:1111/64" как Ваш to, который неправилен. Обычно можно было бы оставить незаполненный (то есть, 0) биты маскированные и просто записал бы "2a01:XXXX:e0000:01e6::/64". Я не знаю, заботится ли networkd об этом, но он мог бы, и лучше использовать каноническую форму так или иначе.

Я также смог воспроизвести это в контейнере:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: no
      addresses:
        - "2a01:1234::1111:1111:1111:0f9c/64"
      routes:
        - to: "2a01:1234:e000:01e6:1111:1111:1111:1111/64"
          via: "2a01:1234:e000:01e5:1111:1111:1111:1111/64"
          on-link: true

netplan apply успешно выполняется. journalctl --no-pager -lu systemd-networkd шоу следующая ошибка:

Feb 25 20:19:20 gnss-sdr systemd-networkd[694]: /run/systemd/network/10-netplan-eth0.network:9: Route is invalid, ignoring assignment: 2a01:1234:e000:01e5:1111:1111:1111:1111/64
Feb 25 20:19:20 gnss-sdr systemd-networkd[694]: Route section without Gateway field configured in /run/systemd/network/10-netplan-eth0.network. Ignoring

Очевидно Вы знаете, что этот маршрут не соответствует сетевой маске адреса узла, который является, почему Вы добавили on-link: true к Вашей конфигурации; но даже с этим набором, который генерирует GatewayOnlink=true в выводе конфигурации к networkd в /run/systemd/network/10-netplan-eth0.network, networkd отказывается применять этот маршрут. Я не знаю, должны ли мы ожидать, что это будет работать с networkd, но или он должен работать, или systemd.network (5), страница справочника должна зарегистрировать это, он не делает и netplan должен отказаться принимать этот yaml. Я рекомендовал бы регистрировать отчет об ошибках против netplan.

Чтобы работать вокруг этого поведения (и дать результаты, которые вообще говоря, более понятны с точки зрения правил маршрутизации), необходимо или добавить дополнительный адрес к локальной машине на 2a01:XXXX:e000:01e5::/64 сеть так, чтобы 2a01:XXXX:e000:01e5:1111:1111:1111:1111 шлюз был достижим, или иначе дайте Ваш 2a01:XXXX:e000:01e5:1111:1111:1111:1111 шлюз дополнительный адрес на 2a01:XXXX::/64 сеть и использование что как Ваш via адрес вместо этого.

0
ответ дан 2 December 2019 в 06:31

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

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