Вопрос или проблема
network:
version: 2
nm-devices:
NM-bcb01d3c-677b-4980-9c0c-97972b70668c:
renderer: NetworkManager
networkmanager:
uuid: "bcb01d3c-677b-4980-9c0c-97972b70668c"
name: "MyVPN"
passthrough:
connection.type: "vpn"
connection.autoconnect: "false"
connection.permissions: "user:roger:;"
vpn.address: "firebrick.beardandsandals.co.uk"
vpn.certificate: "/home/roger/firebrick/certs/firebrick.beardandsandals.co.uk.pem"
vpn.encap: "no"
vpn.ipcomp: "no"
vpn.local-identity: "peer"
vpn.method: "psk"
vpn.password-flags: "4"
vpn.proposal: "no"
vpn.user: "roger"
vpn.virtual: "yes"
vpn.service-type: "org.freedesktop.NetworkManager.strongswan"
ipv4.method: "auto"
ipv6.addr-gen-mode: "default"
ipv6.method: "auto"
proxy._: ""
roger@dragon:/etc/netplan$ sudo netplan get network.nm-devices.NM-bcb01d3c-677b-4980-9c0c-97972b70668c.networkmanager.passthrough.vpn.method
null
Я ожидаю увидеть значение “psk”.
Я думаю, это связано с вложенными ключами карты yaml.
Ответ или решение
Для решения проблемы с получением значения параметра vpn.method
из фрагмента YAML-файла Netplan, необходимо понять, как структурированы и функционируют ключи и значения в указанных данных. Netplan используется для упрощенной конфигурации сети в системе на базе Ubuntu, позволяя объединить различные сетевые настройки в одном YAML-файле. Этот файл затем интерпретируется в более низкоуровневые конфигурации для NetworkManager или systemd-networkd. В данном случае, настройки переданы NetworkManager через граф «passthrough».
Теоретическая часть
YAML – это текстовый формат сериализации данных, часто используемый для конфигурационных файлов благодаря своей выразительности и читаемости. YAML используются иерархические структуры данных, где вкладка/отступ обозначает вложенность.
Netplan поддерживает такие слои абстракции, как renderer
и passthrough
, которые определяют, через какой сетевой демонтатор интерпретируется конфигурация. В этом контексте NetworkManager используется в качестве интерпретатора.
Сетевые идентификаторы UUID обычно служат для уникальной идентификации сетевых устройств и конфигураций, что позволяет управлять их настройками через интерфейсы D-Bus и CLI (командная строка). В данном случае, UUID bcb01d3c-677b-4980-9c0c-97972b70668c
связан с VPN-конфигурацией, в которую вы хотите внести изменения.
Проблема заключается в том, что использование команды netplan get
для получения значения vpn.method
возвращает null
, хотя в файле явно указано значение "psk"
. Это указывает на потенциальную проблему, связанную с обработкой вложенных ключей или интерпретацией данных командой.
Пример
Рассмотрим пример с YAML-файлом:
network:
version: 2
nm-devices:
NM-bcb01d3c-677b-4980-9c0c-97972b70668c:
renderer: NetworkManager
networkmanager:
uuid: "bcb01d3c-677b-4980-9c0c-97972b70668c"
name: "MyVPN"
passthrough:
connection.type: "vpn"
vpn.method: "psk"
Если структура данных правильна, то команда для получения значения должна отобразить vpn.method
как psk
. Это может свидетельствовать о том, что проблема может быть связана с самой командой или синтаксисом запроса, а не с данными файла YAML.
Применение
Для решения проблемы выполните следующие шаги:
-
Проверка синтаксиса YAML: Убедитесь, что в YAML-файле отсутствуют ошибки синтаксиса. Перепроверьте отступы, пробелы и символы, которые могут нарушать логическую структуру файла.
-
Проверка средство Netplan:
- Возможно, версия Netplan не поддерживает некоторые особенности настройки, такие как глубокая вложенность при использовании
passthrough
. - Обновите пакеты системы, выполнив:
sudo apt update
иsudo apt upgrade
.
- Возможно, версия Netplan не поддерживает некоторые особенности настройки, такие как глубокая вложенность при использовании
-
Использование альтернативных команд:
- Проверьте команду
nmcli
, которая может быть более адекватной для работы с NetworkManager. - Выполните команду:
nmcli connection show uuid bcb01d3c-677b-4980-9c0c-97972b70668c
Просмотрите параметры, связанные с VPN в NetworkManager, напрямую через команду
nmcli
.
- Проверьте команду
-
Перепроверка команды:
- Убедитесь, что команда
netplan get
используется с верной структурой запроса: отсутствуют двойные точкки или пробелы. - Попробуйте использовать альтернативные параметры, такие как:
sudo netplan get network.nm-devices --all
- Убедитесь, что команда
-
Ручное редактирование через NetworkManager:
- Если проблема не решается, попробуйте вручную отредактировать конфигурацию через
nm-connection-editor
— графический интерфейс, который позволяет изменить параметры подключения.
- Если проблема не решается, попробуйте вручную отредактировать конфигурацию через
-
Логирование и отладка:
- Проверьте логи NetworkManager с помощью:
journalctl -xe | grep NetworkManager
Это может дать подсказки о возможных ошибках в конфигурации.
- Проверьте логи NetworkManager с помощью:
Предложенные шаги помогут определить, в чем именно заключается проблема: в некорректной интерпретации netplan get
, конфликтах с NetworkManager или ошибках синтаксиса YAML. Основной акцент стоит сделать на проверке корректности обращения к сложноструктурированным YAML-ключам и использовании более специфичных для NetworkManager инструментов.