centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发

centos7 && centos6.5 部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发

一、准备工作:

1: 检查kvm是否支持
a: grep ‘(vmx|svm)‘ /proc/cpuinfo

vmx是intel cpu支持的
svm是AMD cpu支持的
如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。

b: 确保BIOS里开启VT: Intel(R) Virtualization Tech [Enabled]

c:lsmod | grep kvm

命令输出中必须存在 kvm_intel (intel CPU的情况下)
如果没有输出 则运行 modprobe kvm-intel

d: 设置桥接网络

yum install -y bridge-utils 

复制ifcfg-eth0 为 ifcfg-br0,并将ifcfg-br0改为如下配置

NM_CONTROLLED=no
DEVICE=br0
STP=yes
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=br0
UUID=924f955d-4623-499c-8179-fc22420cb0d8  #可不写
ONBOOT=yes
IPADDR=192.168.169.92
NETMASK=255.255.255.0

修改ifcfg-eth0:

HWADDR=00:26:B9:36:54:FB
TYPE=Ethernet
BOOTPROTO=none
BRIDGE=br0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=d20d1fd5-e3bc-43c2-ac37-c0c4a9484a71
ONBOOT=yes
NM_CONTROLLED=no

重启网络
service network restart
检查桥接:
brctl show
e: 安装kvm
yum -y install kvm python-virtinst libvirt virt-manager qemu-kvm-tools virt-viewer virt-v2v
执行 systemctl enable libvirtd && systemctl start libvirtd
virsh list --all

f: 安装桥接网络
创建br0.xml 配置文件(文件中uuid保证唯一即可

<network>
<name>br0</name>
<uuid>fb48b969-b9f4-e859-d957-50aedd850fb4</uuid>
<forward mode=‘bridge‘>
<bridge name =‘br0‘/>
</forward>
</network>

执行命令 virsh net-define br0.xml     virsh net-undefine br0 删除桥接网络   virsh net-list all 查看桥接网络
virsh net-list --all
virsh net-start br0

二、安装映像:

1: 创建磁盘文件

创建VM硬盘,使用如下命令:

qemu-img create -f qcow2 nat.img 200G   两种格式或qemu-img create -f raw win2008.img 200G(虚拟机的硬盘一定要是 qcow2 格式,否则无法使用快照功能、nat联网功能等)

2: 下载 centos7.iso或上传到服务器 (虚拟机.iso)

Windows镜像需下载 virtio for windows driver (https://launchpad.net/kvm-guest-drivers-windows/+download)

3: 启动qemu-kvm安装centos7(启动创建虚拟机)

virt-install -n nat -r 2048 --vcpus=1 --os-type=linux --boot cdrom,menu=on -c centos7.iso --disk path=nat.img,format=qcow2,bus=ide --network network=default --vnc --vnclisten=0.0.0.0 --vncport=5901

4: 使用root执行firewall-cmd --add-port=5901/tcp 允许5901vnc端口被外网访
5: 
在自己电脑上下载vnc客户端,mac osx可以用Remote Desktop - VNC
windows电脑可以使用tightvnc
打开链接vnc://43.243.130.89:5901  进行一步步安装

VM系统安装完毕后,我们进入VM中。默认情况下VM此时使用的DHCP方式获取IP地址,如果你在安装系统时未进行网络配置。我们现在修改VM使用静态IP地址,如下:

vi /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

centos7_firewalld配置方法,如下 :

firewall-cmd --permanent --direct --passthrough ipv4  -t nat -A POSTROUTING -o br0 -j MASQUERADE

firewall_cmd --reload

注意该命令中的网卡时br0,而不是eth0。

此时,我们再切换VM中测试的网络通信情况。如下:如果还不通请加上DNS:8.8.8.8 等其他可用DNS。

通过上图我们可以很明显的看到,目前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 [email protected]

通过上图我们可以看出,我们通过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端口讲解完毕。

时间: 2024-11-25 04:38:04

centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发的相关文章

VMware搭建内网并通过iptables实现端口转发实现联网

整体流程图 配置Server1 新建两块网卡 一块网卡设置为桥接模式,另外一块设置为仅主机模式 查看两块网卡配置 [email protected]:~# ifconfig ens33 Link encap:Ethernet HWaddr 00:0c:29:42:81:1c inet addr:192.168.31.159 Bcast:192.168.31.255 Mask:255.255.255.0 inet6 addr: ffff::fff:29ff:fe42:811c/64 Scope:L

CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法

CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zone=dmz --list-ports 允许 tcp 端口 8080 至 dmz 级别 # firewall-cmd --zone=dmz --add-port=8080/tcp 允许某范围的 udp 端口至 public 级别,并永久生效 # firewall-cmd --zone=public 

centos6.3 搭建KVM虚拟机

突然接到老总需求,需要在现有机房的服务器上边部署KVM,让内网测试机到达外网去测试.说实话有些头疼,因为我们的硬件资源实在是太缺了(小公司...),只有100G的剩余空间,让我在上边跑俩台虚拟机,还得应付时刻增涨的数据,这无疑让我很无语...hadoop可是在这台服务器的...所以,同学们懂了吧,那数据量,每天哗哗滴啊...废话少说,开始搭建~ 一.服务器硬件环境 服务器型号 DELL R710 CPU型号 Intel(R) Xeon(R) CPU  [email protected]*2 物理

CENTOS6.4上KVM虚拟机环境搭建

关键词: KVM,虚拟机,windows7, VNC, 桥接网络,br0, SCSI, IDE 环境: host: CENTOS6.4 guest: windows 7 sp1 主要步骤: 安装软件包 配置桥接网络 配置VNC 安装虚拟机 1.安装软件包 yum install qemu-kvm yum install libvirt   yum install libvirt-python 其实CENTOS6.4上已经安装了这三个软件包,不用再装了. rpm -qa | grep qumu-k

CentOS6.5部署KVM及实现在线迁移

CentOS6.5部署KVM及实现在线迁移 一.前言 虚拟化技术已经成为未来计算机技术的一个重要的发展方向.Linux在虚拟化方面已经有了很多种解决方案:VMware.VirtualBox.Xen和KVM!现在给大家分享下本人在KVM里遇到坑及解决方法.大牛们别喷..... KVM简介 KVM是一个全虚拟化的解决方案.可以在x86架构的计算机上实现虚拟化功能.但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD

Centos7&Centos6 Root密码破解详解

Centos7&Centos6 Root密码破解详解 说到Linux的root登录密码,相信作为一个运维管理员都是一个敏感的问题,如果当管理员忘记root登录密码,需要破解的话是及其方便的,不像windows的登录密码破解,windows登录的密码破解我们需要介入工具进行破解,现在使用最多的是老毛桃等工具.而今天我们主要介绍一下centos7和cenos6的登录密码的破解方法.使用过Centos7的童鞋来说是有体会的,Centos7和Centos6版本的命令是有一定差别的,防火墙类型最为显著,从

KVM使用NAT模式启动,错误:qemu-ifup-nat failed with status 256

KVM使用NAT模式启动,错误: 启动客户机命令 qemu-system-x86_64 -m 1024 -smp 2 centos.img -net nic -net tap,script=/etc/qemu-ifup-nat,downscript=/etc/qemu-ifdoun-nat daemonzie 然后出现错误:qemu-ifup-nat failed with status 256 出现这个问题解决步骤: 1.检查两个脚本内容是否有问题/etc/qemu-ifup-nat /etc

Centos6.5系统安装kvm虚拟机之克隆、拷贝文件安装新虚拟机

Centos 6.5 x86_64系统安装kvm虚拟机-克隆.拷贝xml文件安装新虚拟机 一.通过模板虚拟机克隆新虚拟机 IP规划: 宿主机:10.0.1.149 模板虚拟机:10.0.1.228 克隆虚拟机:10.0.1.100 关闭或者暂停模板虚拟机,再进行克隆安装新虚拟机. [[email protected] ~]# virt-clone -o kvm_mode_5566 -n mysql-server -f /data/kvmdisk/mysql-server.qcow2 ERROR 

Centos6.5安装kvm虚拟化

Centos6.5安装kvm虚拟化 KVM简介:1.KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机).2.是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案.3.KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡.磁盘.图形适配器--) 一.设置虚拟机支持虚拟化 二.先关闭防火墙和selinux