Я царапал голову об этом весь день. В основном у меня есть несколько серверов на частной сети, каждом с частным присвоенным адресом 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, и я борюсь с официальной документацией.
Так как Вашими маршрутами является IPv6, который необходимо использовать ip -6 route show
ip route list
показывает, что IPv4 направляет только, который Вы не имеете в своем netplan.
ip -6 route add ipv6network/prefixlength via ipv6address
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
адрес вместо этого.