虚拟机网络设置 与dhcp 获取ip

 

在宿主机(例如 Linux 服务器)中运行虚拟机时,虚拟机通常通过 DHCP 服务器获取 IP 地址。以下是如何配置和排查虚拟机 DHCP 获取 IP 的过程:

1. 检查虚拟机的网络配置

虚拟机的网络配置类型通常有以下几种:

  • NAT (Network Address Translation): 虚拟机通过宿主机的 IP 地址访问外部网络,宿主机会为虚拟机分配一个虚拟的 IP 地址。通常,宿主机会运行一个内部的 DHCP 服务器来为虚拟机分配 IP 地址。

  • 桥接模式 (Bridged Networking): 虚拟机直接连接到宿主机所在的物理网络,像物理机一样获取 IP 地址。此时,虚拟机从网络中现有的 DHCP 服务器获取 IP。

  • 仅主机模式 (Host-Only Networking): 虚拟机仅与宿主机通信,通常用在开发或测试环境。宿主机会提供一个内部的 DHCP 服务来分配 IP 地址。

 

 

在使用 virsh 管理 KVM 虚拟机时,可以通过命令行查看虚拟机的网络模式。以下是一些常用的方法来检查虚拟机的网络模式:

1. 使用 virsh domiflist

virsh domiflist 命令可以列出虚拟机的网络接口信息,其中包括网络接口名称、MAC 地址、源网络、模型(驱动类型)等信息。

bash
virsh domiflist <虚拟机名称或ID>

输出示例:

bash
Interface Type Source Model MAC ------------------------------------------------------- vnet0 bridge br0 virtio 52:54:00:01:02:03
  • Type: 这里的 bridge 表示虚拟机使用的是桥接模式 (bridge)。
  • Source: 表示虚拟机连接到的网络资源(例如 br0 表示桥接网络接口)。

2. 使用 virsh dumpxml

你可以通过 virsh dumpxml 命令查看虚拟机的详细 XML 配置文件,其中包括网络配置。

bash
virsh dumpxml <虚拟机名称或ID> | grep -A 10 "<interface"

这条命令会显示虚拟机网络接口的详细配置,包括网络模式和连接的网络

 

 

1. 启动dhcp 服务器

systemctl status isc-dhcp-server.service

 

记录了客户机分配IP的详细信息。下面我们进入/var/lib/dhcpd/dhcpd.leases

 

2. 启动 dhcp 客户端

dhclient

 

NetworkManager 默认调用 DHCP 客户端,dhclient

 

3. 虚拟机网络配置

需要 桥接

 

 

===========

dhcpd 与 isc-dhcp-server 区别 :

isc-dhcp-server.service 和 dhcpd.service 在 Linux 系统中都与 DHCP 服务相关,但它们之间有一些区别。主要的区别在于它们的命名和使用背景:

1. isc-dhcp-server.service
背景: isc-dhcp-server 是 ISC(Internet Systems Consortium)提供的一个开源 DHCP 服务器软件,广泛应用于各种 Linux 发行版中。isc-dhcp-server.service 是在基于 systemd 的 Linux 系统中用于管理 ISC DHCP server 的服务单元文件。

命名: 在现代 Linux 发行版中,使用 systemd 管理服务,服务通常以 .service 作为后缀。因此,对于 ISC DHCP server,服务文件被命名为 isc-dhcp-server.service。

使用:

bash
复制代码
sudo systemctl start isc-dhcp-server.service
sudo systemctl stop isc-dhcp-server.service
sudo systemctl status isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service
以上命令用于启动、停止、查看状态和设置开机自启 ISC DHCP server。

2. dhcpd.service
背景: dhcpd 是 ISC DHCP server 的守护进程(daemon)的名称,代表 DHCP Daemon。在早期或一些基于 SysVinit 系统的 Linux 发行版中,服务管理是通过 init.d 脚本进行的,通常脚本会被命名为 dhcpd。

命名: 一些系统可能仍然使用 dhcpd.service 来命名这个服务单元文件,或者在旧版的 Linux 发行版中,你会看到通过 /etc/init.d/dhcpd 或 /etc/init.d/isc-dhcp-server 脚本来启动和管理 DHCP 服务。

使用:

bash
复制代码
sudo systemctl start dhcpd.service
sudo systemctl stop dhcpd.service
sudo systemctl status dhcpd.service
sudo systemctl enable dhcpd.service
在这些系统中,dhcpd.service 可能被用作与 isc-dhcp-server 相同的服务。

3. 总结与区别
命名差异:

isc-dhcp-server.service 是现代 systemd 系统中管理 ISC DHCP server 的标准服务名。
dhcpd.service 可能是早期使用的名称,或者在某些特定发行版中仍然沿用的名称。
兼容性:

在大多数基于 systemd 的现代发行版中,推荐使用 isc-dhcp-server.service 来管理 DHCP 服务。
如果你的系统使用 dhcpd.service,它通常也是指向同一 ISC DHCP server 守护进程的,只是名称不同。
在使用时,建议根据你所使用的 Linux 发行版的实际情况选择正确的服务名称,通常可以通过 systemctl list-units | grep dhcp 来查看系统中实际使用的 DHCP 服务名称。

 

posted @ 2024-08-12 16:34  redrobot  阅读(26)  评论(0编辑  收藏  举报