centos8.5安装kvm及kvm虚拟机的端口映射问题
1.安装KVM
grep -Ei 'vmx|svm' /proc/cpuinfo|more #查看硬件是否支持虚拟化
yum install -y virt-* libvirt qemu-img #安装KVM虚拟机
lsmod | grep kvm #是否支持kvm模块
systemctl enable libvirtd #系统启动时自动启动kvm服务
systemctl start libvirtd #启动kvm服务
常用操作:
virsh list --all #查看本机创建的kvm虚拟机列表
virsh start 虚拟机名 #启动
virsh shutdown 虚拟机名 #关闭
virsh autostart 虚拟机名 #配置开机自启动虚拟机
默认虚拟机存储位置: /var/lib/libvirt/images/
2.安装Cockpit运维工具
yum install cockpit #安装 cockpit
systemctl enable --now cockpit.socket #开机自启动cockpit
yum install cockpit-machines #安装软件包使cockpit支持WEB管理
firewall-cmd --add-service=cockpit --permanent #打开防火墙与cockpit相关的策略
firewall-cmd --reload
访问: 使用9090端口通过浏览器访问 开始创建kvm虚拟机吧
3.在kvm中新建的虚拟机使用NAT网络时, 把虚拟机端口映射到宿主机上,使通过公网可访问虚拟机端口
添加相应的iptables策略:
添加filter 表的forward链
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
添加nat 表的prerouting链, 例: 公网2538端口映射到虚拟机192.168.122.199的22端口
iptables -t nat -I PREROUTING -p tcp --dport 2538 -j DNAT --to-destination 192.168.122.199:22
查看一下策略还在不在
iptables -L -n -t nat|grep 2538
=========================================================================
正常工作:
iptables -I FORWARD -d 0.0.0.0/0 -j ACCEPT
firewall-cmd --zone=public --add-forward-port=port=2538:proto=tcp:toport=22:toaddr=192.168.122.199
不正常工作:
firewall-cmd --permanent --zone=public --direct --add-rule ipv4 filter FORWARD 0 -d 0.0.0.0/0 -j ACCEPT
firewall-cmd --permanent --zone=public --add-forward-port=port=2538:proto=tcp:toport=22:toaddr=192.168.122.199
4.命令方式创建虚拟机:
命令创建虚拟机: 名称为ubuntu-01,4G内存,2个CPU,50G的qcow2格式磁盘,网络为桥接口virbr0
virt-install --name ubuntu-01 --memory 4096 --vcpus 2 --cdrom=/data/ubuntu-20.10.iso --disk size=50 --network=bridge:virbr0,model=virtio
命令行连接虚拟机:
virsh console --domain ubuntu-01 --force
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~