我正在尝试向裸机 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 ]