Вопрос или проблема
Я настроил свой Linux как маршрутизатор и точку доступа. Все работает очень хорошо, за исключением одного момента. После каждой перезагрузки мне нужно выполнять sudo netplan apply
, чтобы все работало корректно. Также есть разница в результате команды ip a
, которую можно увидеть после применения настроек netplan. Здесь вы можете видеть результат ip a
после перезагрузки:
rdlver@rdlver1:~$ ip a
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 noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN group default qlen 1000
link/ether 2c:cf:67:75:12:6d brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 2c:cf:67:75:12:6e brd ff:ff:ff:ff:ff:ff
4: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 1a:f1:3f:8c:c8:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
и после применения настроек netplan:
rdlver@rdlver1:~$ ip a
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 noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN group default qlen 1000
link/ether 2c:cf:67:75:12:6d brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 2c:cf:67:75:12:6e brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 1a:f1:3f:8c:c8:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::18f1:3fff:fe8c:c877/64 scope link
valid_lft forever preferred_lft forever
Здесь вы можете видеть файл /etc/netplan/01-netcfg.yaml
, который применяется:
network:
version: 2
renderer: networkd
ethernets:
wlan0:
dhcp4: no
eth0:
dhcp4: no
bridges:
br0:
interfaces: [wlan0,eth0]
dhcp4: no
addresses:
- 192.168.1.1/24
Обычно это применяется при запуске системы. Вот журнал загрузки, если кто-то сможет понять, что происходит:
rdlver@rdlver1:~$ journalctl -b | grep netplan
Aug 27 16:37:49 rdlver1 systemd[1]: netplan-ovs-cleanup.service - OpenVSwitch configuration for cleanup was skipped because of an unmet condition check (ConditionFileIsExecutable=/usr/bin/ovs-vsctl).
Aug 27 16:37:51 rdlver1 (udev-worker)[483]: eth0: Config file /run/systemd/network/10-netplan-eth0.link is applied to device based on potentially unpredictable interface name.
Feb 01 05:13:12 rdlver1 systemd-networkd[1035]: /run/systemd/network/10-netplan-eth0.network: DHCPv6 client is enabled but IPv6 link-local addressing is disabled. Disabling DHCPv6 client.
Feb 01 05:13:12 rdlver1 systemd-networkd[1035]: eth0: found matching network '/run/systemd/network/10-netplan-eth0.network', based on potentially unpredictable interface name.
Feb 01 05:13:12 rdlver1 systemd-networkd[1035]: eth0: Configuring with /run/systemd/network/10-netplan-eth0.network.
Feb 01 05:13:12 rdlver1 systemd-networkd[1035]: wlan0: Configuring with /run/systemd/network/10-netplan-wlan0.network.
Feb 01 05:13:12 rdlver1 systemd-networkd[1035]: br0: Configuring with /run/systemd/network/10-netplan-br0.network.
Feb 01 05:15:18 rdlver1 generate[1249]: Permissions for /etc/netplan/01-netcfg.yaml are too open. Netplan configuration should NOT be accessible by others.
Спасибо за любую помощь!
Вывод команды ip a
показывает, что br0
находился в состоянии DOWN
, а после применения Netplan изменился на UP
.
Это может быть проблемой в вашей конфигурации Netplan, поэтому добавьте команду post-up
, чтобы поднять интерфейс моста в вашей конфигурации Netplan:
network:
version: 2
renderer: networkd
ethernets:
wlan0:
dhcp4: no
eth0:
dhcp4: no
bridges:
br0:
interfaces: [wlan0, eth0]
dhcp4: no
addresses:
- 192.168.1.1/24
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
post-up:
- ip link set br0 up
Затем снова примените Netplan и перезагрузите систему, чтобы проверить, решает ли это вашу проблему.
Также, согласно журналам, есть проблема с правами:
Permissions for /etc/netplan/01-netcfg.yaml are too open. Netplan configuration should NOT be accessible by others.
Конфигурационный файл Netplan не должен быть доступен другим пользователям. Чтобы решить эту проблему, введите следующую команду:
sudo chmod 600 /etc/netplan/01-netcfg.yaml
Если вышеуказанные шаги не решат проблему, вы можете создать службу systemd, чтобы обеспечить выполнение netplan apply при загрузке.
sudo vi /etc/systemd/system/netplan-apply.service
Добавьте следующее содержание:
[Unit]
Description=Apply Netplan configuration at boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/netplan apply
[Install]
WantedBy=multi-user.target
Затем активируйте эту службу:
sudo systemctl enable netplan-apply.service
sudo systemctl start netplan-apply.service
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что после перезагрузки вашей Linux-машины, которую вы настроили в качестве маршрутизатора и точки доступа, необходимо повторно применять конфигурацию Netplan. Давайте разберемся с этим вопросом, учтя все предоставленные детали и сопутствующие факторы, чтобы предложить комплексное решение.
Теория
Netplan — это современный инструмент управления сетевыми настройками в дистрибутивах на базе Ubuntu. Он использует YAML-файлы для описания конфигураций сети и позволяет применять их через netplan apply
. Однако, как показывает ваш случай, иногда конфигурации могут не примениться автоматически при загрузке системы. В основе вашей проблемы лежит несовершенство процесса инициализации сетевых интерфейсов и их конфигурации через Netplan.
Имеется несколько возможных причин этой проблемы:
-
Проблемы с порядком загрузки сервисов: Некоторые сетевые интерфейсы могут быть не готовы в момент, когда Netplan пытается их настроить.
-
Ошибки конфигурации Netplan: Возможны ошибки в самом конфигурационном файле YAML, включая несовместимости или конфликтующие настройки.
-
Права доступа к файлу конфигурации: Журнал указывает, что права на файл
/etc/netplan/01-netcfg.yaml
слишком открытые, что может стать причиной проблем с безопасностью и возможностью применения конфигурации.
Пример
Ваш исходный конфигурационный файл выглядит следующим образом:
network:
version: 2
renderer: networkd
ethernets:
wlan0:
dhcp4: no
eth0:
dhcp4: no
bridges:
br0:
interfaces: [wlan0, eth0]
dhcp4: no
addresses:
- 192.168.1.1/24
Как видно из вывода команды ip a
, интерфейс br0
находится в состоянии DOWN сразу после загрузки и только после применения Netplan вручную становится UP.
Применение
Шаги для решения проблемы
-
Проверьте и скорректируйте права доступа: Убедитесь, что ваш YAML файл имеет правильные права:
sudo chmod 600 /etc/netplan/01-netcfg.yaml
-
Измените конфигурацию Netplan: Добавьте секцию
post-up
в конфигурационный файл, чтобы принудительно поднимать интерфейс после загрузки:network: version: 2 renderer: networkd ethernets: wlan0: dhcp4: no eth0: dhcp4: no bridges: br0: interfaces: [wlan0, eth0] dhcp4: no addresses: - 192.168.1.1/24 post-up: - ip link set br0 up
-
Перепроверьте порядок загрузки сервисов: Убедитесь, что другие сетевые службы и связи с ними настроены правильно, чтобы ваш интерфейс был доступен для конфигурации в нужный момент.
-
Создание и настройка системного сервиса: Если предыдущие шаги не помогли, создайте системный сервис для принудительного применения Netplan при загрузке:
Создайте новый файл службы:
sudo vi /etc/systemd/system/netplan-apply.service
Вставьте следующее содержание:
[Unit] Description=Apply Netplan configuration at boot After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/netplan apply [Install] WantedBy=multi-user.target
Затем активируйте и запустите этот сервис:
sudo systemctl enable netplan-apply.service sudo systemctl start netplan-apply.service
Экспериментируйте с этими методами и проверьте, будет ли проблема решена после перезагрузки системы. В случае успешного разрешения проблемы дальнейшая настройка может потребоваться для оптимизации работы и повышения устойчивости сети вашей системы. Этот подход не только решит вашу текущую проблему, но и повысит общую надежность и безопасность сетевых конфигураций.