ОС: Ubuntu 20.04.3, установлены все последние обновления.
Я пытаюсь создать интерфейс моста, чтобы поработить ток (eno1)
Конфигурация Netplan:
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [eno1]
addresses: [10.20.0.21/24]
gateway4: 10.20.0.1
nameservers:
search: [example.com]
addresses: [10.20.0.1,10.20.0.10]
dhcp4: false
dhcp6: false
Когда я запускаю «netplan try», я вижу:
** (generate:2332): WARNING **: 12:54:41.673: Problem encountered while validatingdefault route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in br0 but also in eno1
Если я перезагружу систему, результаты будут следующими:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.20.0.1 0.0.0.0 UG 0 0 0 br0
default 10.20.0.1 0.0.0.0 UG 0 0 0 eno1
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
Система по-прежнему пригодна к использованию, но конфигурация явно ненормальная.
$ networkctl
networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eno1 ether routable configured
3 br0 bridge routable configured
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
inet 10.20.0.21/24 brd 10.1.0.255 scope global eno1
valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
inet 10.20.0.21/24 brd 10.1.0.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::700e:94ff:fea6:fc98/64 scope link
valid_lft forever preferred_lft forever
Как сделать eno1 подчиненным и запретить ему создавать дубликаты записей маршрутизации/IP-адресов?
Обновление от 21 января: других файлов конфигурации нет./etc/netplan
решение1
Обходной путь от 22 января 2022 г.:
Похоже, что netplan и/или networkd в настоящее время слишком глючны, чтобы поддерживать указанную конфигурацию без дублирования IP-адресов/маршрутов.
Решением стало возвращение к NetworkManager.
В .yaml netplan обязательно замените строку renderer на
renderer: NetworkManager
Убедитесь, что вы включили интерфейсы управления сетью в /etc/NetworkManager/NetworkManager.conf (соответствующий раздел указан ниже)
[ifupdown] managed=true
Определите, какие типы интерфейсов фильтруются в etc/NetworkManager/conf.d/10-globally-managed-devices.conf:
[keyfile] unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
Примечание: убедитесь, что файл /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf пуст (имеет нулевой размер).
Перезапустите NetworkManager или, лучше, перезагрузите систему:
sudo systemctl restart network-manager
Примечание: может потребоваться отключить автозапуск для проводного подключения в разделе «Настройки»>«Сеть» в случае использования графического режима, чтобы отключить постоянные сообщения NetworkManager о невозможности активировать соответствующее подключение.
решение2
@KonstantinBoyandin - Здесь просто недостаточно информации о вашей системе, чтобы прийти клюбойзаключение. Тем не менее, вот обоснованное предположение о том, с чем вы столкнулись:
IIRC, установка по умолчанию 20.04 NetworkManager
уже будет использоваться. Это означает, что из коробки, NetworkManager
скорее всего, уже настроен eno1
и создан тот маршрут по умолчанию, который вы наблюдали:
default 10.20.0.1 0.0.0.0 UG 0 0 0 eno1
Ничто не мешает вам попробовать использовать оба варианта.NetworkManager
и systemd-networkd
- Я не могу придуматьпричинасделать это, но ничто не мешает. Я использовал это, чтобы избежать необходимости иметь дело с NetworkManager
настройкой интерфейсов Wireguard на уже работающих системах NetworkManager
. При этом выдолженпомните, что эти инструменты могут взаимодействовать друг с другом, например, что произойдет, если физический адаптер Ethernet, управляемый с помощью, NetworkManager
выйдет из строя? Виртуальный интерфейс, который полагается на этот физический, может выйти из строя, может и нет... зависит от конфигурации виртуального адаптеравнешнийк NetworkManager
.
Когда вы переключили рендерер на NetworkManager
, в этот момент все начало работать, потому что теперь вы использовали netplan
для настройкиNetworkManager
как единственная услуга для настройки сети, предотвращая любую «перекрестную конфигурацию».
Для тех, кто еще сталкивается с этой проблемой, есть несколько способов ее решить: вы можете либо прекратить NetworkManager
настройку интерфейсов, которые вы хотите настроить с помощью другого рендерера, либо просто NetworkManager
полностью отключить. Я предпочитаю переключиться на netplan
with systemd-networkd
и отключить NetworkManager
на серверах, в то время как на настольном Linux я оставляю NetworkManager
и использую другие сетевые службы только при необходимости.
На типичном сервере Ubuntu 20.04 вот как использовать netplan и избежать конфликта в OP:
- Сервер предоставления услуг (установка Ubuntu и т. д.)
- Создайте нужную конфигурацию netplan
- Отредактируйте
/etc/network/interfaces
и закомментируйте все разделы, которые относятся к интерфейсу, который вы настроили вnetplan
:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
- Перезапуск (или остановка)
NetworkManager
:sudo systemctl <restart|stop> NetworkManager.service
- Проверьте свою
netplan
конфигурацию:sudo netplan try
- Если все выглядит правильно и работает, нажмите,
Enter
как указано.
(Необязательный)
- Запрещать
NetworkManager
:sudo systemctl disable NetworkManager.service
(Примечание)
- Хотя это должно быть очевидно, вышеизложенное предполагает, что у вас есть либо доступ к локальной консоли, либо ваше SSH-подключение не зависит от настраиваемого вами интерфейса, поскольку в противном случае вы можете быть отключены и не сможете завершить настройку.