Ubuntu Server 20.10-netplan 中的虚拟接口

Ubuntu Server 20.10-netplan 中的虚拟接口

我正在尝试向裸机 Ubuntu Server 20.10 安装添加虚拟接口。

我读到过,在 20 之前的版本中,这在 netplan 中是不可能的,人们正在恢复到 ifup/ifdown。但据我所知,这应该是可能的。

我正在尝试为我的服务器提供第二个接口,以便我可以将 pihole docker 容器绑定到该接口。

我在 netplan 文档中看到了各种接口类型,最接近的是 vlan 类型,但该类型似乎不适用于未标记的 vlan。

无论如何,我感谢您能给我的任何帮助。

答案1

我假设“虚拟接口”的意思是您想要有一个主接口(例如:“eth0”),它可能有一个子网上的地址,也可能没有,并且您想要创建一个标签不同的接口(例如:“eth0:0”),其地址在另一个子网上。

在 netplan 0.100 版本之前,不支持此功能。但是,0.100 版本添加了寿命标签属性地址值。

您可以使用以下命令检查已安装的 netplan 版本:dpkg -l | grep netplan

下面是一个示例 .yaml,它将尝试使用 dhcp 为eth0接口,并将分配静态 IP 地址192.168.55.151/24到标有eth0:0

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp6: no
      dhcp4: yes
      optional: true
      addresses: 
        - 192.168.55.151/24: 
            lifetime: 0
            label: "eth0:0"

这将产生以下结果(当然eth0如果连接到 DHCP 服务器就会有一个 IP):

odroid@odroid:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::21e:6ff:fe48:114  prefixlen 64  scopeid 0x20<link>
        ether 00:1e:06:48:01:14  txqueuelen 1000  (Ethernet)
        RX packets 6389  bytes 966018 (966.0 KB)
        RX errors 0  dropped 1649  overruns 0  frame 0
        TX packets 531  bytes 160364 (160.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 21  

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.55.151  netmask 255.255.255.0  broadcast 192.168.55.255
        ether 00:1e:06:48:01:14  txqueuelen 1000  (Ethernet)
        device interrupt 21  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 31816  bytes 2259360 (2.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31816  bytes 2259360 (2.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

odroid@odroid:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1e:06:48:01:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.55.151/24 brd 192.168.55.255 scope global deprecated eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::21e:6ff:fe48:114/64 scope link 
       valid_lft forever preferred_lft forever

答案2

“虚拟接口”可以指各种不同的技术。通常,容器连接到桥接器。您可以在 netplan 中创建桥接器,使用以下语法:

network:
  version: 2
  bridges:
    dockernet:
      addresses: [10.1.1.1/24]

答案3

更新已编辑的问题。

Netplan 可以为单个接口分配多个地址,并且不支持接口别名(例如 eth0:0)。

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
         addresses:
             - 10.100.1.38/24
             - 10.100.1.39/24
         gateway4: 10.100.1.1

摘自此链接https://netplan.io/examples/#using-multiple-addresses-on-a-single-interface

Docker 默认尝试绑定到所有接口。可以指定给定接口上的 IP 地址。 docker run -d -p 10.0.0.1:8080:80 nginx

答案4

也许这个可以完成这个工作:https://netplan.io/examples/#attaching-vlans-to-network-interfaces

network:
version: 2
renderer: networkd
ethernets:
    mainif:
        match:
            macaddress: "de:ad:be:ef:ca:fe"
        set-name: mainif
        addresses: [ "10.3.0.5/23" ]
        gateway4: 10.3.0.1
        nameservers:
            addresses: [ "8.8.8.8", "8.8.4.4" ]
            search: [ example.com ]
vlans:
    vlan15:
        id: 15
        link: mainif
        addresses: [ "10.3.99.5/24" ]
    vlan10:
        id: 10
        link: mainif
        addresses: [ "10.3.98.5/24" ]
        nameservers:
            addresses: [ "127.0.0.1" ]
            search: [ domain1.example.com, domain2.example.com ]

相关内容