AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 788226
Accepted
xealits
xealits
Asked: 2024-12-17 00:26:41 +0800 CST2024-12-17 00:26:41 +0800 CST 2024-12-17 00:26:41 +0800 CST

如何让 NetworkManager 使用 `/etc` 配置以及 `/run` 连接来自哪里?

  • 772

我有一块 Petalinux 开发板(带有 AMD/Xilinx Zynq UltraScale+ MPSoC 的 Trenz Electronic),它启动时网络连接配置错误(无 DHCP)。它没有以下配置/etc:

$ ls /etc/NetworkManager/system-connections/
$ 

配置连接后,sudo nmcli con mod eth0 ...它可以正常工作。 (我修改了 ipv4 和 ipv6 配置,就像stackoverflow 上的那样。) 它会在中创建一个永久配置文件/etc:

/etc/NetworkManager/system-connections/eth0.nmconnection

但是,重新启动后,NetworkManager 会创建一个新的/run配置,该配置以某种方式优先于我的连接/etc:

$ nmcli -f TYPE,FILENAME,UUID,NAME,DEVICE connection
TYPE      FILENAME                                                  UUID                                  NAME  DEVICE 
ethernet  /run/NetworkManager/system-connections/eth0.nmconnection  99e39a32-c0ab-4b3f-be16-75a9bdff1277  eth0  eth0   
loopback  /run/NetworkManager/system-connections/lo.nmconnection    5d84c484-4214-47e4-8f00-01f7730200b3  lo    lo     
ethernet  /etc/NetworkManager/system-connections/eth0.nmconnection  fb365147-6ad9-47a0-a5c8-fbea10080ece  eth0  --     

这里,恶意程序99e39a32已/run连接到eth0设备,并且我的/etc连接配置fb365147保持空闲状态。

如何在 NetworkManager 中正确永久地保存连接配置,或者让其使用/etc配置作为连接的唯一模板eth0?它从哪里获取配置/run?它为什么不用/etc来创建/run配置?

有帖子说 NetworkManager 会为每个用户创建连接。也就是说,建议是/etcroot,然后其他连接会以某种方式用于我的用户。但我不认为这里的情况如此。nmcli不允许我修改没有 root 权限的连接。

互联网上有许多类似的问题:1 (我没有/etc/netplan评论中提到的文件),2,3 。但它们对我的情况没有帮助。

更新:

通过计算机启动后的日志/run可以了解配置如何产生的一些信息:journalctl -u NetworkManager[loggin] level=TRACE/etc/NetworkManager/NetworkManager.conf

NetworkManager[347]: <info>  [1734374462.9312] device (eth0): carrier: link connected
NetworkManager[347]: <trace> [1734374462.9313] ethtool[3]: ETHTOOL_GSET, eth0: success
NetworkManager[347]: <debug> [1734374462.9317] device[e5c0e28febbc1b13] (eth0): unmanaged: flags set to [platform-init,!user-settings=0x4/0x14/unmanaged/unrealized], set-managed [user-settings=0x10])
NetworkManager[347]: <debug> [1734374462.9318] device[e5c0e28febbc1b13] (eth0): unmanaged: flags set to [!platform-init,!user-settings=0x0/0x14/managed/unrealized], set-managed [platform-init=0x4])
NetworkManager[347]: <debug> [1734374462.9318] device[e5c0e28febbc1b13] (eth0): unmanaged: flags set to [!sleeping,!platform-init,!user-settings=0x0/0x15/managed/unrealized], set-managed [sleeping=0x1])
NetworkManager[347]: <trace> [1734374462.9319] dbus-object[e5c0e28febbc1b13]: export: "/org/freedesktop/NetworkManager/Devices/2"

NetworkManager[347]: <info>  [1734374462.9329] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/2)
NetworkManager[347]: <trace> [1734374462.9349] settings: auto-default: cannot create auto-default connection for device eth0: already has a profile
<----- this already existing "profile" must be the config in /etc
       when I added no-auto-default=* or eth0 in NetworkManager.conf
       this line said: cannot create auto-default.. because no-auto
...
NetworkManager[347]: <debug> [1734374462.9356] Connection 'eth0' differs from candidate 'eth0' in ipv4.addresses, ipv4.gateway, ipv4.method
NetworkManager[347]: <debug> [1734374462.9357] manager: (eth0): assume: generated connection 'eth0' (b807ebb2-d7a5-4b26-82c1-c321a6e7d5ba)
NetworkManager[347]: <debug> [1734374462.9357] device[e5c0e28febbc1b13] (eth0): assume-state: set guess-assume=0, connection=(null)
NetworkManager[347]: <trace> [1734374462.9370] keyfile: commit: b807ebb2-d7a5-4b26-82c1-c321a6e7d5ba (eth0) added as "/run/NetworkManager/system-connections/eth0.nmconnection" (nm-generated,volatile,external)

我想现在的问题是Connection 'eth0' differs from candidate 'eth0' ...- 候选者是什么?也就是说,设备本身可能还有一些配置eth0,当/etc配置与该配置冲突时,NetworkManager 会创建一个新的配置?

我尝试添加此文件,但行为没有任何变化(它可能已被弃用):

$ cat /etc/network/interfaces
auto eth0
iface eth0 inet dhcp

更新 2:

需要指出的是,我曾尝试添加no-auto-default配置,但在这种情况下没有任何区别:

/etc/NetworkManager/NetworkManager.conf

[main]
no-auto-default=*
# or no-auto-default=eth0

添加连接/etc/network/interfaces也无济于事:

# Wired interfaces
auto eth0
iface eth0 inet dhcp
    hwaddress ether <MAC address>

我认为,正如@telcoM 所建议的那样,这是 Petalinux 特有的行为。您在构建映像时定义 eth0 设备的设置(显然 NetworkManager 可以以某种方式从设备读取设置,或者其他什么?),并且在构建映像后您无法在 Petalinux 中修改以太网设置ZynqMP>。可能,您在 uboot控制台中也无法修改任何内容。

所以,我最终做的是:重命名我的连接并eth0dhcp添加启动后连接它的 systemd 单元。

sudo nmcli c mod fb365147-6ad9-47a0-a5c8-fbea10080ece con-name eth0dhcp

连接配置如下:

$ sudo cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0dhcp
uuid=fb365147-6ad9-47a0-a5c8-fbea10080ece
type=ethernet
autoconnect=false
interface-name=eth0
timestamp=1734377647
 
[ethernet]
mac-address=<mac address>
 
[ipv4]
method=auto
 
[ipv6]
addr-gen-mode=default
method=auto
 
[proxy]

一次性的 systemd 单元:

[Unit]
Description=UP the eth0dhcp for eth0 after boot
 
After=network.target
Requires=network.target
 
[Service]
Type=oneshot
RemainAfterExit=yes
User=root
ExecStart=nmcli con up eth0dhcp
 
SuccessExitStatus=0
Restart=on-failure
RestartSec=20
 
StartLimitInterval=300
StartLimitBurst=5
 
[Install]
WantedBy=multi-user.target

对我来说,这已经足够了。稍后我们将使用所需的任何设置来构建图像。

networkmanager
  • 2 2 个回答
  • 44 Views

2 个回答

  • Voted
  1. Best Answer
    telcoM
    2024-12-17T17:01:18+08:002024-12-17T17:01:18+08:00

    Petalinux 是一个用于嵌入式的发行版,在我看来,它的设计是在创建目标映像之前进行配置,之后不再进行修改。配置应在准备 Petalinux 项目时运行的工具的以太网设置部分中进行。petalinux-config

    ChatGPT 没有认识到 Petalinux 是一个嵌入式发行版,而不是典型的桌面/服务器发行版。

    Petalinux 中使用的 NetworkManager 版本大概是尽可能最小化的。一般来说,NetworkManager 可以有多个配置存储插件,以匹配各个发行版的经典配置样式,再加上keyfile始终包含的标准插件。

    在 Petalinux 中,可能只存在keyfile插件,而负责将网络设置转换为petalinux-config活动的 NetworkManager 配置的任何机制显然不是只触发一次,而是在每次启动时触发,最终会与您的自定义尝试发生冲突。

    • 2
  2. davolfman
    2024-12-17T04:39:44+08:002024-12-17T04:39:44+08:00

    与 systemd 非常相似,配置/run/是自动生成的。如果您想要关闭给定网络接口的自动配置文件(例如,强制自己创建配置文件以连接以太网,即使在 DHCP 网络上),则需要配置 NetworkManager 以关闭默认配置文件或创建您自己的配置文件。

    为此,添加一个配置文件,将/etc/NetworkManager/conf.d/其设置no-auto-default为您不想接收自动配置文件的接口。

    [main]
    no-auto-default=eth0
    

    剩余文件/run/NetworkManager/是 NetworkManager 的运行时系统状态,不应删除。

    • 1

相关问题

  • 蜂窝调制解调器:pppd 调制解调器挂断

  • 网络管理器:完全互联网访问,但通过哪个设备/连接

  • shorewall 启动时 NetworkManager 1.10.2 出现段错误

  • Wi-Fi 无法在 Ubuntu 17.10 上运行

  • 备份和恢复网络管理器配置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve