systemd.network 虚拟接口

systemd.network 虚拟接口

我有一台运行 Ubuntu 18.04 的专用服务器,它使用 systemd.network 来管理其网络。

该服务器只有一个物理网卡。

作为服务的一部分,主机提供商为我分配了两个 IP 地址和两个 MAC 地址。

这是 /etc/systemd/network 的配置

[Match]
Name=enp4s0

[Network]
Address=<IPv6 Address>/64
Gateway=x.x.x.y
Gateway=xxx::y

[Address]
Address=x.x.x.x
Peer=x.x.x.y/32

上述配置仅包含我分配的两个 IPv4 地址中的一个。

我需要添加一个虚拟接口,其中包含我的第二个分配的 MAC 地址和 IPv4 地址。但是,我不确定如何实现这一点。

两个接口都需要使用相同的物理网卡。

我知道如何用 NetworkManager 实现这一点,但不知道 systemd 能做到。我也不确定 systemd.network 能做什么……我是否需要创建两个虚拟接口,每个接口都有自己的 IPv4 和 MAC 地址,并让它们共享物理网卡以实现连接?还是应该将物理网卡上的现有配置保留原样(如上所述),并使用第二组详细信息创建额外的虚拟接口?

为简单起见,假设以下内容;

Address One (currently configured on physical NIC):
IP Address: x.x.x.x
MAC Address: XX:XX:XX:XX:XX:XX
Gateway: x.x.x.y

Address Two (currently unconfigured):
IP Address: a.a.a.a
MAC Address: AA:AA:AA:AA:AA:AA
Gateway: x.x.x.y

一旦虚拟接口启动 (aaaa),我将直接将其传递给 PFSense VM。然后它将充当所有其他 VM 的边缘 NAT 路由器。

答案1

这是 50% 的答案和 50% 的提问,但是需要太多空间来容纳评论。

网络计划它可以根据需要呈现给 networkd/networkManager,如下所示(当然使用我的示例地址):

network:
    version: 2
    ethernets:
        ens3:
            dhcp4: false
            addresses:
                - 192.168.122.228/24
                - 10.0.0.7/24

这样我就可以在一台设备/Mac 上获得正常的 2 个地址,正如您所需要的那样,对吗?

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:a8:b4:96 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.228/24 brd 192.168.122.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet 10.0.0.7/24 brd 10.0.0.255 scope global ens3
       valid_lft forever preferred_lft forever

注意:您可以通过添加匹配规则使其匹配更可靠(以防设备类型或插槽分配可能发生变化):

    match:
        macaddress: 52:54:00:a8:b4:96

我必须承认,由于 networkd 的复杂性,如果我需要知道在 networkd 中如何操作,我仍然会编写 netplan 规则并让它呈现它们,这样我就可以读取它创建的内容。如果您只想使用 networkd,您可以像这样创建它:

[Match]
Name=ens3

[Network]
Address=192.168.122.228/24
Address=10.0.0.7/24

上述操作将允许您拥有您想要的两个 IP(如果这是您所需要的),但还不能使用两个 MAC。

我并不指望你的 NIC 真的有两个 MAC(我看不出这如何工作)。但我可以想象你的 NIC 有一个 MAC,并且你“被允许”在其上使用另一个 MAC,就像你过去使用 macvlan 时一样?

ip link add link eth0 address AA:AA:AA:AA:AA:AA ens3.1 type macvlan

如果你的设备上确实有 MAC,我想每个人都会很高兴看到networkctl status -a输出,以便进一步考虑。否则我会假设你有一个基本的MAC(XX:...)并且允许/应该添加另一个(AA:...)。

如果你确实属于后者,并且添加上述 IP 还不够,那么我认为你被这个阻止了漏洞如果是这样,请加入进来,给这个错误一个评论,并解释为什么上面的内容还不够 - 否则我希望保持状态愿望清单可能需要一段时间才能修复。

相关内容