安装了多个 NIC 和 KVM 服务器的 Ubuntu 20.04 服务器。
使用 netplan 创建了一座桥梁:
enp0s31f6:
dhcp4: no
addresses: []
bridges:
netbr0:
addresses: [192.168.14.20/24]
dhcp4: no
interfaces:
- enp0s31f6
nameservers:
addresses:
- 192.168.14.1
- 8.8.8.8
- 8.8.4.4
- 1.1.1.1
parameters:
stp: false
forward-delay: 0
enp0s31f6 连接到路由器端口(VLAN14)。192.168.14.1 是路由器的 VLAN14 地址。
虚拟机的网卡连接到此网桥。虚拟机的 IP 地址手动设置为 192.168.14.25/24,网关为 192.168.14.1,DNS 服务器为 8.8.8.8,8.8.4.4
我可以 ping 外部 IP 地址,但无法 pingwww.google.com。因此名称解析显然不起作用。
(Ubuntu 20.04 虚拟机):
nslookup www.google.com
;; connection timed out; no servers could be reached
resolvectl status
Link 2 (enp3s0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8
DNS Domain: ~.
在服务器上:
ping -I 192.168.14.20 www.google.com
作品。
当我将计算机连接到路由器(192.168.14.1)时,名称解析就可以正常工作。
我不知道是什么原因导致了这个问题。
答案1
我尝试了以下方法:
enp5s0:
addresses: [10.10.5.15/24, 10.10.5.90/24, 10.10.5.110/24]
gateway4: 10.10.5.1
dhcp4: no
match:
macaddress: 1c:1b:0d:9a:43:d0
mtu: 1500
nameservers:
addresses:
- 10.10.5.1
- 8.8.8.8
- 8.8.4.4
search: []
bridges:
netbr0:
addresses: [192.168.14.20/24]
dhcp4: no
interfaces:
- enp0s31f6
mtu: 1500
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
- 1.1.1.1
- 192.168.14.1
search: []
routes:
- to: 0.0.0.0/0
via: 192.168.14.1
metric: 100
table: 801
routing-policy:
- from: 192.168.14.0/24
table: 801
priority: 301
parameters:
stp: false
forward-delay: 0
以下为桥梁工作:
dig www.google.com @8.8.8.8 -b 192.168.14.20
但名称解析在客户机上仍然不起作用。
为了测试目的,我尝试使用 NAT 和路由网络连接到 enp0s31f6,而 netplan 中没有配置网桥。没有用。连接到 enp5s0 的虚拟机运行正常。是什么导致了这个问题 libvirt、netplan 和我的多个 NIC 设置?我不知道。
对我来说唯一完美的解决方案是使用主机设备 enp0s31f6 - macvtap处于桥接模式。为了与主机通信,我创建了一个隔离网络,并为客户虚拟机添加了第二个 NIC(连接到此网络)。