linux的KVM如何设置网络虚拟机中的linux怎么连接网络方式

linux下配置和安装KVM虚拟机的步骤
&更新时间:日 09:45:01 & 作者:阅心笔记
本篇文章主要介绍了linux下配置和安装KVM虚拟机的步骤,详细的介绍了kvm虚拟机的安装和网络配置等问题,有需要的可以了解一下。
最近要在外网搞一套监控系统,正好有一台服务器配置比较高,也没跑什么重要的业务,就拿来划了一个KVM虚拟机,可能是平时各种虚拟机用的比较多,配置起来感觉比想象中简单的多,简单记录下过程
宿主机为centos 6.8 64位,检查宿主机CPU是否支持虚拟化:
cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l;
结果大于0表示支持
KVM核心软件包:
yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils
如果服务器上有桌面环境,想使用图形界面管理器virt-manager,可以安装完整的KVM环境:
yum groupinstall Virtualization 'Virtualization Client' 'Virtualization Platform' 'Virtualization Tools'
验证内核模块是否加载:
lsmod | grep kvm
启动虚拟机管理接口服务:
/etc/init.d/libvirtd start
设置开机启动:
chkconfig libvirtd on
启动libvirtd后,会自动创建了一个网卡,并启动dnsmasq服务,用来为虚拟机分配IP地址
创建虚拟机
下载虚拟机要安装的ISO系统镜像文件,之后需创建存储池,指定在宿主机上虚拟机磁盘的存储位置,创建存储目录:
mkdir -p /opt/kvm
定义一个储存池和绑定目录:
virsh pool-define-as vmspool --type dir --target /opt/kvm
建立并激活存储池:
virsh pool-build vmspool
virsh pool-start vmspool
使用存储池创建虚拟机,并通过vnc连接:
virt-install \
--hvm \ #全虚拟化
--name=zabbix \#虚拟机名字
--ram=4096 \ #分配内存
--vcpus=4 \ #分配CPU数
--cdrom=/opt/kvm/iso/CentOS-7-x86_64-DVD-1511.iso \ #使用的ISO
--virt-type=kvm \ #虚拟机类型
--disk path=/opt/kvm/zabbix.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 \ #磁盘大小,格式
--network netwrok=default \ #网络设置,defalut为NAT模式
--accelerate \ #KVM内核加速
--graphics vnc,listen=0.0.0.0,port=5922,password=123123\ #vnc配置
--autostart
之后使用vnc客户端连接 宿主机IP:5922,即可使用图形安装系统;也可以选择nographics模式,无需vnc在命令行下安装,建议使用vnc
安装完成后会生成:
虚拟机的配置文件:/etc/libvirt/qemu/zabbix.xml
虚拟硬盘文件:/opt/kvm/zabbix.qcow2
NAT网络配置文件:/etc/libvirt/qemu/networks/default.xml
KVM可以配置两种:
NAT网络: 虚拟机使用宿主机的网络访问公网,宿主机和虚拟机能互相访问,但不支持外部访问虚拟机
桥接网络: 虚拟机复用宿主机物理网卡,虚拟机与宿主机在网络中角色完全相同,支持外部访问
配置NAT网络
默认会有一个叫default的NAT虚拟网络,查看NAT网络:
virsh net-list --all
如果要创建或者修改NAT网络,要先编辑default.xml:
virsh net-edit default
重新加载和激活配置:
virsh net-define /etc/libvirt/qemu/networks/default.xml
启动NAT网络:
virsh net-start default
virsh net-autostart default
启动NAT后会自动生成一个虚拟桥接设备virbr0,并分配IP地址,查看状态:
brctl show
正常情况下libirtd启动后就会启动virbr0,并自动添加IPtables规则来实现NAT,要保证打开ip_forward,在/etc/sysctl.conf中:
net.ipv4.ip_forward = 1
启动虚机并设置自动获取IP即可,如果想手动指定虚拟机IP,要注意配置的IP需在NAT网段内
配置桥接网络
系统如果安装了桌面环境,网络会由NetworkManager进行管理,NetworkManager不支持桥接,需要关闭NetworkManger:
chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network start
不想关闭NetworkManager,也可以在ifcfg-br0中手动添加参数"NM_CONTROLLED=no"
创建网桥:
virsh iface-bridge eth0 br0
创建完后ifconfig会看到br0网桥,如果eth0上有多个IP,更改下相应的文件名,& 如:ifcfg-eth0:1改为ifcfg-br0:1
编辑虚拟机的配置文件,使用新的网桥:
virsh edit zabbix
找到网卡配置,改为:
&interface type='bridge'&
&mac address='52:54:00:7a:f4:9b'/&
&source bridge='br0'/&
&model type='virtio'/&
&address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/&
&/interface&
我是用的br0,为虚拟机添加多块网卡只需复制多个interface,并确保mac address和PCI地址不同即可
重新加载配置:
virsh define /etc/libvirt/qemu/zabbix.xml
重启虚拟机:
virsh shutdown zabbix
virsh start zabbix
之后使用VNC连接虚拟机并设置下网络即可
KVM相关操作都通过vish命令完成,参数虽然多,但是功能一目了然,很直观
创建虚拟机快照:
virsh snapshot-create-as --domain zabbix --name init_snap_1
也可以简写成:
virsh snapshot-create-as zabbix init_snap_1
快照创建后配置文件在/var/lib/libvirt/qemu/snapshot/zabbix/init_snap_1.xml
查看快照:
snapshot-list zabbix
删除快照:
snapshot-delete zabbix init_snap_1
1、ERROR Format cannot be specified for unmanaged storage.
virt-manager 没有找到存储池,创建储存池即可
2、KVM VNC客户端连接闪退
使用real vnc或者其它vnc客户端连接kvm闪退,把客户端设置中的ColourLevel值设置为rgb222或full即可
3、virsh shutdown 无法关闭虚拟机
使用该命令关闭虚拟机时,KVM是向虚拟机发送一个ACPI的指令,需要虚拟机安装acpid服务:
yum -y install acpid && /etc/init.d/acpid start
否则只能使用virsh destroy 强制关闭虚拟机
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具linux的KVM如何设置网络连接方式_百度知道
linux的KVM如何设置网络连接方式
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
热心网友知道合伙人
在Linux主机下,用kvm无论速度和性能都 超过任何一款虚拟机。如,vbox、vmware等。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。本文由提供友情赞助,首发于。
在前面的文章中,我们介绍KVM的虚拟机(以下简称VM)都是通过桥接方式进行联网的。
本篇文章我们来介绍KVM的VM通过NAT方式进行联网,并且通过配置IPtables做端口映射,这个也是前几天一家公司面试我的问题。直接问我KVM如何做端口转发,当时因为确实没有做过这方面的应用,所以就直接回答不知道了。
NAT(网络地址)方式连接网络在桌面虚拟化使用是比较多的,比如VMware Workation。使用NAT方式联网可以节省IP地址。说实话这个对于公网IP地址比较少的公司,也节省了成本。
而KVM默认的网络连接方式就是NAT,只是我们一直没有使用。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网(需要对KVM服务器做配置),但不支持外界访问虚拟机(不过可以通过KVM服务器配置IPtables端口转发解决)。
本篇文章主要包括两个部分:
1、KVM为VM配置NAT网络
2、为VM配置iptables端口转发
一、KVM为VM配置NAT网络
我们可以通过如下命令,查看NAT是否开启。如下:
virsh net-list
通过上图,我们可以看到NAT方式已经开启。而且default是宿主机安装VM支持模块的时候自动安装的。
我们也可以查看,系统中已经存在的网卡。使用ifconfig命令,如下
通过上图,我们可以看出网卡virbr0就是NAT方式连接网络时,所使用到的网卡。
除此之外我们还可以通过配置文件,来查看NAT方式的DHCP地址池。该配置文件为:/etc/libvirt/qemu/networks/default.xml。如下:
通过上图我们可以看出,目前NAT使用的IP地址池是192.168.122.2-192.168.122.254,网关为192.168.122.1,子网掩码为255.255.255.0。
因为是和KVM相关的VM(虚拟机),所以我们首先为VM新建硬盘。今天我们的实验不使用裸设备,直接使用文件的方式为虚拟机创建硬盘。这样有利于虚拟机的迁移,但是性能方面没有裸设备好。有关VM如何使用裸设备,可以参考我的另外一篇文章《》。
创建VM硬盘,使用如下命令:
qemu-img create -f qcow2 /natdisk/nat.img 20G
硬盘创建完毕后,我们使用如下命令创建VM,如下:
virt-install -n nat -r 2048 –vcpus=1 –os-type=linux –boot cdrom,menu=on -c /iso/CentOS-6.4-i386-minimal.iso –disk path=/natdisk/nat.img,format=qcow2,bus=ide –network network=default –vnc –vnclisten=0.0.0.0 –vncport=5991
注意该条命令中有关网络的配置–network network=default,我们使用的是默认网络配置default。这个就是NAT方式。
同时有关硬盘的格式与接口模式也一定要注意:
–disk path=/natdisk/nat.img,format=qcow2,bus=ide
下面开始为VM安装系统,如下:
VM系统安装完毕后,我们进入VM中。默认情况下VM此时使用的DHCP方式获取IP地址,如果你在安装系统时未进行网络配置。我们现在修改VM使用静态IP地址,如下:
more /etc/sysconfig/network-scripts/ifcfg-eth0
网络配置完毕后,我们来测试下网络通信情况。如下:
通过上图我们发现,此时VM通过NAT网络获取的IP地址无法与其他网段的服务器进行通信。是不是我们的NAT配置出错?还是其他原因?
这个其实不是我们NAT配置出错,而是要是NAT网络与其他服务器进行正常通信还需要做其他工作。
现在切换到KVM服务器,开启KVM服务器的IP转发功能。编辑/etc/stsctl.conf文件,把其中的net.ipv4.ip_forward = 0修为net.ipv4.ip_forward = 1,如下:
vi /etc/sysctl.conf
或者使用如下命令:
echo 1 &/proc/sys/net/ipv4/ip_forward
不过这种方法是暂时的,系统重启后消失。要使其永久生效,建议使用直接修改/etc/stsctl.conf文件的方法。
/etc/stsctl.conf文件修该完毕后,我们要使用sysctl –p使其生效。如下
以上配置完毕后,我们还要开启KVM服务器的IPtables的转发功能,使用如下命令:
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
注意该命令中的网卡时br0,而不是eth0。
此时,我们再切换VM中测试的网络通信情况。如下:
通过上图我们可以很明显的看到,目前VM可以与服务器以及外网正常通信。
以上就是KVM为VM配置NAT网络的整个过程。下面我们开始为VM配置端口。
二、为VM配置iptables端口转发
为什么要为VM配置iptables端口转发呢?这个是因为有些业务是在公网的,有时候为了资金考虑不得不尽量节省公网IP的个数。比如现在我想管理KVM中的VM,通过SSH方式。但是KVM服务器对外只有一个公网IP,而且KVM服务器是在IDC机房中。
如果要达到我上述的要求,只能在KVM服务器为VM配置IPtables端口转发。
现在我们还以上述VM为例,目前该KVM的公网IP为192.168.1.102,VM的IP为192.168.122.173,现在我要求通过访问KVM的8022端口访问VM的22端口。
要想达到上述功能,我们需要在KVM服务器上设置如下IPtables规则:
iptables -t nat -A PREROUTING -d 192.168.1.102 -p tcp -m tcp –dport 8022 -j DNAT –to-destination 192.168.122.173:22
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.173 -p tcp -m tcp –dport 22 -j SNAT –to-source 192.168.122.1
注意这两条IPtables规则:
第一条规则很好理解,就是把所有访问192.168.1.102:8022的请求转发到192.168.122.173:22的端口上。
第二条规则我的理解是,把所有来自192.168.122.0/255.255.255.0网段访问192.168.122.173:22的数据全部通过192.168.122.1这个网关转发出去。
现在我们来实际效果,如下:
ifconfig eth0|grep “inet addr”|awk ‘{print $2}’|cut -d: -f2
ssh -p 8022 root@192.168.1.102
通过上图我们可以看出,我们通过192.168.1.213这台服务器使用ssh通过8022端口登录到IP为192.168.122.173的VM。
很明显这个已经达到我们的要求。
在这只是一个例子,其实我们也完全可以在VM192.168.122.173上搭建一个web,然后通过KVM的IPtables端口转发下,公网就可以访问了。下面再来个例子,如下:
iptables -t nat -A PREROUTING -d 192.168.1.102 -p tcp -m tcp –dport 8023 -j DNAT –to-destination 192.168.122.173:80
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.173 -p tcp -m tcp –dport 80 -j SNAT –to-source 192.168.122.1
以上这个例子是通过192.168.102:8023访问VM92.168.122.173的web服务器。
为了在下次重启KVM服务器后,这些IPtables规则继续使用。我们要把这些规则保存下,使用如下命令:
/etc/init.d/iptables save
more /etc/sysconfig/iptables
至此我们有关KVM的NAT方式网络连接以及为VM配置IPtables端口讲解完毕。
2018年八月
6789101112
13141516171819
20212223242526
2728293031
clustrmaps分类目录
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
支付宝扫一扫打赏
微信扫一扫打赏Linux虚拟化KVM基础介绍、虚机管理与虚拟网络配置
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:
在文档使用中是否遇到以下问题:
文档内容不全面,重点不清晰
文字描述过于冗余、复杂
描述的步骤有问题
文档内容更新不及时
上一篇:下一篇:
售前咨询服务时间:09:00-24:00
蓝队云-小熊
蓝队云-小和
蓝队云-小宇
蓝队云-小轩
蓝队云-张超
您可能遇到了下面的问题:
售后咨询服务时间:00:00-24:00
24H值班技术
您可能遇到了下面的问题:
备案咨询服务时间:00:00-24:00
您可能遇到了下面的问题:当前位置:&>&&>&
Linux KVM虚拟机的安装及设置
发布时间:
来源:服务器之家
KVM是一个基于linux内核的虚拟机解决方案。本文介绍KVM的使用方法,以及注意要点。
参考资料:&KVM虚拟机和QEMU&linux brctl
先决条件 硬件环境
x86(包括32位和64位),就是我们常用的系统。
CPU硬件虚拟化
kvm需要系统CPU支持,下面命令如果有输出,说明CPU支持硬件虚拟化:
egrep&"flags.*:.*(svm|vmx)"&/proc/cpuinfo
32位与64位
下面是32bit与64bit和主机系统与虚拟操作系统的关系:
主机操作系统
虚拟机操作系统
总结为一句话:不能在32位主机上装64位的操作系统。
yao@debian:~$&apt-get&install&kvm&qemu&uml-utilities
一般情况下,安装好kvm后能就自动加载内核模块,你也可以手动加载:
yao@debian:~$&modprobe&kvm_intel&#or&kvm_amd
虚拟机连网
虚拟机连网是头等大事,所以我们先解决这个问题。通过桥接可以实现联网,主要用到的命令有:brctl,ifconfig,tunctl,route
brctl是一个以太网桥接工具,常见的用法有:
brctl show
brctl show
显示已有网桥
brctl addbr &bridge&
brctl addbr br0
增加网桥br0
brctl delbr &bridge&
brctl delbr br0
删除网桥br0
brctl addif &bridge& &device&
brctl addif br0 eth0
将接口eth0接到网桥br0
brctl delif &bridge& &device&
brctl delif br0 eth0
从网桥上删除一个接口
如果发现无法删除网桥,那么可能是还没有将其关闭:
yao@twomoon:~$&sudo&brctl&delbr&br0
bridge&br0&is&still&&can't&delete&it
yao@twomoon:~$&sudo&ifconfig&br0&down
yao@twomoon:~$&sudo&brctl&delbr&br0
说了这么多,到这才是重点。首先,将物理网卡桥接:
yao@twomoon:~$&ifconfig&-a&|grep&eth
eth0&&&&&&Link&encap:Ethernet&&HWaddr&90:fb:a6:14:cd:42
yao@twomoon:~$&brctl&addbr&br0
yao@twomoon:~$&brctl&addif&br0&eth0
yao@twomoon:~$&ifconfig&eth0&0.0.0.0
yao@twomoon:~$&ifconfig&br0&192.168.1.51&up
这样又多了一个网络设备br0:
yao@twomoon:~$&LANG=C&ifconfig&-a&|grep&Ethernet
br0&&&&&&&Link&encap:Ethernet&&HWaddr&2a:24:d3:aa:99:e7
eth0&&&&&&Link&encap:Ethernet&&HWaddr&90:fb:a6:14:cd:42
如果没有弄明白为什么,可以上网找找桥接的资料和brctl的用法。
当然不能每次开机后都要手工输入这么多命令。你可以将这些命令写成一个脚本,每次开机就执行这个脚本:
#!/bin/bash
#&networking.sh
#&change&eth0&to&your&network&interface(eg.&eth1)
ifconfig&lo&127.0.0.1&up
if&[&!&-z&"`ifconfig&-a&|&grep&br0`"&];&then
&&&&ifconfig&br0&down
&&&&brctl&delif&br0&eth0
&&&&brctl&delbr&br0
brctl&addbr&br0
brctl&addif&br0&eth0
ifconfig&eth0&0.0.0.0&up
ifconfig&br0&192.168.1.51&up
route&add&default&gw&192.168.1.1
也可以写到网卡的配置文件配置文件(/etc/network/interfaces)里,效果是一样的:
iface&lo&inet&loopback
iface&br0&inet&static
address&192.168.1.51
netmask&255.255.255.0
gateway&192.168.1.1
bridge_ports&eth0
安装以及运行虚拟机 kvm常用命令
-hda /data/windows.img
指定windows.img作为硬盘镜像
-hda /data/windows.iso
指定windows.iso作为光盘镜像
从硬件启动
从光盘启动
分配512M内存给虚拟系统
作为vnc服务器
列出支持的CPU
-cpu core2duo
指定CPU为core2duo
指定虚拟机有2个CPU
为虚拟机网卡(默认为tap0)
系统分配tap设备(默认为tap0)
-net nic -net tap
将虚拟机的网卡eth0连接真机里的tap0
安装虚拟操作系统
生成镜像文件:
yao@twomoon:~$&sudo&kvm-img&create&windows2003-x86.img&25G&-f&"vmdk"
安装系统:
yao@twomoon:~$&sudo&kvm&-boot&d&-m&512&-hda&~/kvm/windows2003-x86.img&-cdrom&~/software/wzmb2003.iso
运行系统:
yao@twomoon:~$&sudo&kvm&-boot&c&-m&512&-hda&~/kvm/windows2003-x86.img&-net&nic&-net&tap
可以发现多了一个网络设备tap0,这是系统自动创建的。
yao@twomoon:~$&LANG=C&ifconfig&-a&|grep&Ethernet
br0&&&&&&&Link&encap:Ethernet&&HWaddr&2a:24:d3:aa:99:e7
eth0&&&&&&Link&encap:Ethernet&&HWaddr&90:fb:a6:14:cd:42
tap0 Link encap:Ethernet HWaddr 2a:24:d3:aa:99:e7 远程登录
如果虚拟机是linux,那么就用ssh;如果是windows,那么就用rdesktop。
yao@debian:~$&rdesktop&-u&username&-p&passwd&192.168.1.52&-f&&
记得用Ctrl-Alt-Enter从全屏中切回来。
SQL Error: select * from ***_***_news where id in ()
Copyright © . 版权所有

我要回帖

更多关于 linux设置网络连接 的文章

 

随机推荐