You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu虚拟机通过libvirt/QEMU获取非预期DHCP地址(10.0.2.15)的问题求助

Ubuntu虚拟机通过libvirt/QEMU获取非预期DHCP地址(10.0.2.15)的问题求助

我在RedHat主机上配置了libvirt的默认网络,virbr0网桥已经启动,网络设置为NAT模式,DHCP地址池是192.168.122.2-254,还专门加了规则给名为fw-core的Ubuntu虚拟机分配固定IP192.168.122.2。但奇怪的是,虚拟机里的dhclient拿到的却是10.0.2.15,完全不是我配置的网段。

主机端验证信息

网桥状态

brctl show

输出:

bridge name     bridge id               STP enabled     interfaces
virbr0          8000.52540024cafa       yes             virbr0-nic

virbr0的IP配置

ip addr show virbr0|grep inet

输出:

inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

虚拟机列表

virsh list --all

输出:

Id    Name                           State
---------------------------------------------------
2     fw-core                        running

默认网络XML配置

sudo virsh net-dumpxml default

输出:

<network>
<name>default</name>
<uuid>b270007c-ada2-4c16-9b34-3abecc1c4b94</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:24:ca:fa'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
<host mac='52:54:00:6d:e4:ae' name='fw-core' ip='192.168.122.2'/>
</dhcp>
</ip>
</network>

虚拟机端异常表现

我能通过virsh console fw-core连接到虚拟机,但无法用SSH连接10.0.2.15。看起来虚拟机完全跳过了virbr0网桥,从企业网络拿到了IP?dhclient是从10.0.2.2获取的地址,而不是我配置的192.168.122.1,而且我也没法从主机用分配的固定IP连接虚拟机。

虚拟机执行dhclient的输出

sudo dhclient -v ens3

输出:

Listening on LPF/ens3/52:54:00:6d:e4:ae
Sending on   LPF/ens3/52:54:00:6d:e4:ae
Sending on   Socket/fallback
DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 3 (xid=0xf27cb27a)
DHCPOFFER of 10.0.2.15 from 10.0.2.2
DHCPREQUEST for 10.0.2.15 on ens3 to 255.255.255.255 port 67 (xid=0x7ab27cf2)
DHCPACK of 10.0.2.15 from 10.0.2.2 (xid=0xf27cb27a)
bound to 10.0.2.15 -- renewal in 32873 seconds.

强制指定DHCP服务器的尝试(失败)

sudo dhclient -v ens3 -s 192.168.122.1

输出:

Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.

Listening on LPF/ens3/52:54:00:6d:e4:ae
Sending on   LPF/ens3/52:54:00:6d:e4:ae
Sending on   Socket/fallback
DHCPREQUEST for 10.0.2.15 on ens3 to 192.168.122.1 port 67 (xid=0x1557fbe4)
DHCPREQU

其他奇怪的现象

虚拟机可以正常访问外网,也能连接主机的SSH服务:

curl -s google.com|sed 1q

输出:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
sleep 1 | telnet 192.168.122.1 22

输出:

Trying 192.168.122.1...
Connected to 192.168.122.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
Connection closed by foreign host

虚拟机内部的SSH服务也正常运行:

sleep 1|telnet localhost 22

输出:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.4
Connection closed by foreign host.

防火墙排查情况

我怀疑是主机防火墙的问题,已经把virbr0加到了internal区域:

sudo firewall-cmd --zone=internal --list-all

输出:

internal (active)
target: default
icmp-block-inversion: no
interfaces: virbr0
sources:
services: dhcp dhcpv6-client mdns samba-client ssh
ports: 67/tcp 67/udp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

主机所有网卡信息

ip addr

输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 0a:6c:8e:88:52:62 brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 3c:ec:ef:d1:18:54 brd ff:ff:ff:ff:ff:ff
inet 10.48.86.33/24 brd 10.48.86.255 scope global noprefixroute eno1
valid_lft forever preferred_lft forever
inet6 fe80::310c:bed0:9e4f:f53d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 3c:ec:ef:d1:18:55 brd ff:ff:ff:ff:ff:ff
13: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:24:ca:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
14: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:24:ca:fa brd ff:ff:ff:ff:ff:ff

再次确认网桥状态

brctl show

输出:

bridge name     bridge id               STP enabled     interfaces
virbr0          8000.52540024cafa       yes             virbr0-nic

虚拟机创建命令

我是用这条命令创建的虚拟机:

virt-install --name core --ram $((1024*4)) --file=fw-core.img --file=ubuntu-22.04.3-live-server-amd64.iso

备注:内容来源于stack exchange,提问作者Will

火山引擎 最新活动