qemu-kvm 网络 nat模式 (四)

本文介绍了一个用于QEMU虚拟机NAT网络配置的bash脚本。该脚本能够设置网桥、启用IP转发、添加NAT规则,并启动dnsmasq服务以实现DHCP及DNS服务。适用于需要快速配置QEMU虚拟机网络环境的场景。
qemu-ifup-NAT

#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
{
if brctl show | grep "^BRIDGE" &> /dev/null;then
return 1
else
return 0
fi
}
function create_bridge()
{
brctl addbr "BRIDGE"
brctl stp "BRIDGE" on
brctl setfd "BRIDGE" 0
ifconfig "$BRIDGE" "GATEWAY" netmask "$NETMASK" up
}
function enable_ip_forward()
{
echo 1 > /proc/sys/net/ipv4/ip_forward
}
function add_filter_rules()
{
iptables -t nat -A POSTROUTING -s "$NETWORK"/"$NETMASK" ! -d "$NETWORK"/"$NETMASK" -j MASQUERADE
}
function start_dnsmasq()
{
ps -ef | grep "dnsmasq" |grep -v "grep" &> /dev/null
if [ $? -eq 0 ];then
echo "warning:dnsmasq is already running"
return 1
fi
dnsmasq --strict-order --except-interface=lo --interface=$BRIDGE --listen-address=$GATEWAY --bind-interfaces --dhcp-range=$DHCPRANGE --conf-file="" --pid-file=/var/run/qemu-dhcp-$BRIDGE.pid --dhcp-leasefile=/var/run/qemu-dhcp-$BRIDGE.leases --dhcp-no-override ${TFTPROOT:+"--enable-tftp"} ${TFTPROOT:+"--tftp-root=$TFTPROOT"} ${BOOTP:+"--dhcp-boot=$BOOTP"}
}
function setup_bridge_nat()
{
check_bridge "$BRIDGE"
if [ $? -eq 0 ];then
create_bridge
fi
enable_ip_forward
add_filter_rules "$BRIDGE"
start_dnsmasq "$BRIDGE"
}
if [ -n "$1"];then
setup_bridge_nat
ifconfig "$1" 0.0.0.0 up
brctl addif "$BRIDGE" "$1"
exit 0
else
echo "Error:no interface specified"
exit 1
fi



qemu-ifdown-NAT

#!/bin/bash
BRIDGE="virbr0"
if [ -n "$1" ];then
ip link set $1 down
brctl delif "$BRIDGE" $1
ip link set "$BRIDGE" down
brctl delbr "$BRIDGE"
iptables -t nat -F
exit 0
else
echo "Error: no interface specified"
exit 1
fi
<think>好的,我现在需要解决用户关于qemu-kvm、libvirt和virt-install的安装配置问题。首先,用户可能是在安装或配置这些虚拟化工具时遇到了困难。我需要根据提供的引用信息,整理出一个清晰的步骤指南。 首先,根据引用[4],KVM需要硬件虚拟化支持,比如Intel VT或AMD-V。因此,第一步应该是检查用户的CPU是否支持这些技术。可以用egrep命令来查看/proc/cpuinfo中的标志,确保vmx或svm存在。 接下来,用户提到需要删除系统自带的libvirt,如引用[2]所示。这里需要注意,用户可能在使用某些Linux发行版时,系统自带的libvirt版本可能冲突,需要先卸载。但需要提醒用户谨慎操作,避免误删重要文件,尤其是在生产环境中。 然后是安装步骤,根据引用[1],使用yum安装相关软件包,包括qemu-kvm、virt-manager、virt-install和libvirt。但需要确认用户的系统是基于yum的,比如CentOS或RHEL。如果是其他发行版,比如Ubuntu,可能需要使用apt-get命令,但用户提供的引用中没有相关说明,所以这里应专注于yum的步骤。 安装完成后,启动libvirtd服务并设置开机自启,这是常规的系统服务管理步骤。用户可能需要知道如何管理服务,因此需要给出具体的systemctl命令。 网络配置部分,默认的NAT网络可能无法满足需求,需要创建桥接网络。这里需要解释如何修改网络配置文件,创建桥接接口,并重启网络服务。同时,使用virsh命令定义和启动网络,确保虚拟机能够通过桥接网络连接外部。 用户权限方面,将用户加入kvm和libvirt组,可以避免每次使用sudo,提升便利性。需要提醒用户重新登录或使用newgrp命令使组生效。 验证安装部分,运行virsh list --all和virt-install命令,检查是否正常工作。如果出现权限问题,可能需要调整SELinux或防火墙设置,但引用中没有具体提到,可能需要进一步提示用户检查这些方面。 最后,常见问题处理,比如无法启动虚拟机,需要检查日志和依赖项。删除旧版本libvirt时要注意备份配置,避免数据丢失。引用中的例子是查找并删除相关文件,但需要谨慎操作。 整个过程中,需要确保步骤清晰,命令准确,同时提醒用户注意可能遇到的坑,比如权限问题、服务未启动、网络配置错误等。参考引用[3]的翻译来源,可能还需要考虑文档的准确性和最新性,但用户提供的引用中没有更新信息,所以按现有步骤处理。</think>### 解决 qemu-kvm、libvirt、virt-install 安装配置问题 #### 1. **验证硬件虚拟化支持** - KVM 需要 CPU 支持虚拟化扩展(Intel VT-x 或 AMD-V)。 执行以下命令验证: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo ``` 若输出大于 `0`,则支持虚拟化[^4]。 #### 2. **卸载旧版本 libvirt(可选)** - 若系统中存在旧版 libvirt,可能导致冲突。 通过以下命令查找并删除相关文件(需谨慎操作)[^2]: ```bash find / -name libvirt-admin* find / -name libvirt-lxc* find / -name libvirt-qemu* find / -name libvirt.so* ``` 手动删除查找到的旧版本文件。 #### 3. **安装依赖包** - 使用 `yum` 安装必要组件[^1][^4]: ```bash yum install qemu-kvm virt-manager virt-install libvirt -y ``` #### 4. **启动并配置 libvirtd 服务** - 启动服务并设为开机自启: ```bash systemctl start libvirtd systemctl enable libvirtd ``` #### 5. **配置网络桥接(可选)** - **默认 NAT 网络**: 通常已自动创建,可通过 `virsh net-list --all` 查看。 - **自定义桥接网络**: 编辑网络配置文件(如 `/etc/sysconfig/network-scripts/ifcfg-br0`)并重启网络服务: ```bash systemctl restart network virsh net-define bridge.xml # 定义桥接网络 virsh net-start br0 # 启动桥接网络 ``` #### 6. **用户权限配置** - 将用户加入 `kvm` 和 `libvirt` 组以获取权限: ```bash usermod -aG kvm,libvirt <用户名> ``` 需重新登录或执行 `newgrp libvirt` 使配置生效。 #### 7. **验证安装** - 检查 libvirt 服务状态: ```bash virsh list --all ``` 若输出无报错,则服务正常。 - 尝试创建虚拟机(需 ISO 镜像路径): ```bash virt-install --name=test-vm --vcpus=2 --memory=2048 --cdrom=/path/to/os.iso --disk size=20 ``` #### 8. **常见问题处理** - **虚拟机无法启动**: 检查 `/var/log/libvirt/qemu/` 日志,确认虚拟化驱动(如 `kvm_intel`)已加载: ```bash lsmod | grep kvm ``` - **权限不足**: 确保用户组配置正确,并检查 SELinux 或防火墙是否拦截(可临时禁用测试)。 - **依赖冲突**: 若安装失败,尝试清理旧版本残留文件后重新安装[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值