使用 Netplan 启动但不分配地址

使用 Netplan 启动但不分配地址

我有一个接口,我想在启动时调出它,但除此之外没有配置。没有 DHCP,没有静态 IP。有没有办法在 18.04 中使用 Netplan 来实现这一点?

我尝试了以下操作(enp10s0f1有问题的设备在哪里)但界面仍然无法打开:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp10s0f0:
      dhcp4: yes
    enp10s0f1:
      dhcp4: no

这很重要,因为我有 LXD 容器通过 macvlan 桥接使用该接口,因此接口需要启动,但它不需要(我宁愿没有)主机上的 IP 地址。我真的不希望记住ip link set up enp10s0f1何时重新启动。

更新:

我发现此错误报告在 Netplan 的 Launchpad 中,这看起来是相关的,但据我所知,它适用于相反的情况:告诉 Netplan 配置一个接口,但不自动启动它。然而,它确实暗示我想要做的事情目前还不可能。是这样吗?除了放弃 Netplan 之外,还有其他解决方法吗?

答案1

编辑,2019 年中: 导致该问题的错误已被修复。

修复此错误后,现在可以通过添加空配置来启动一个没有地址的接口:{}

使用问题中的例子,执行此操作enp10s0f1将如下所示:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp10s0f0:
      dhcp4: yes
    enp10s0f1: {}

原始答案:

这实际上是 Netplan 的一个错误:错误 #1728134错误 #1763608。其中一位 netplan 开发人员已经承认了后者,但目前尚不清楚是否会提供修复程序。

一种解决方法是手动创建一个 systemd 单元来启动接口。创建一个/etc/systemd/system/manual-iface.service包含以下内容的文件:

[Unit]
Description=Service to bring up/down unconfigured nic enp10s0f1
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set enp10s0f1 up
ExecStop=/sbin/ip link set enp10s0f1 down

[Install]
WantedBy=multi-user.target

然后,使其在启动时运行:

sudo systemctl enable manual-iface.service

现在一切就绪。enp10s0f1下次启动时,您应该会看到它自动出现。

或者,如果你不想这样做,恢复到 ifupdown 仍然是一个选项,正如问题所述。回退描述如下这里。总而言之,安装 ifupdown,然后您可以使用传统方式/etc/network/interfaces(在网上有详细记录)进行配置。

答案2

作为一种解决方法,如果只需要 IPv4 地址,则可以通过 DHCP 配置 IPv6,从而自动启用接口:

# cat /etc/netplan/10-eth1.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      dhcp4: false
      dhcp6: true
      optional: true

相关内容