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 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端口讲解完毕。

转载于:https://www.cnblogs.com/liuyansheng/p/6023920.html

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

  1. Centos6.3安装KVM

    Centos6.3安装KVM 一.安装kvm 1 在安装CentOS6.3时可以选择安装好kvm 2 如果未安装好kvm,请按照下列方式安装 [创建本地yum源] 挂载iso文件 mount -o l ...

  2. VMware的centos7安装及IP上网(NAT模式)

    一.VMware的centos7安装步骤 1.安装好VMware,如下图所示: 2.挂载Linux镜像,这里选择centos7镜像.首先点击 文件==>新建虚拟机 3.出现新建虚拟机弹出框,刚开 ...

  3. KVM的NAT网络和bridge网络安装

    KVM的安装使用 安装前准备 NAT网络 第一大步:安装相关包 第二大步:创建磁盘 第三大步:安装配置 第四大步:进入管理端 点左上角1的部分,查看ip 创建bridge网络虚拟机 安装前准备 实验目 ...

  4. vmware设置centos虚拟机nat联网(转)

    今天在vmware虚拟主机中安装hearbeat,为了使用最新的版本,选用编译安装了.在编译过程中,需要连接被墙的网站下载文件,那只能用vpn,但我使用的是桥接方式联网,使用不了真实主机的vpn,于是 ...

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

    CentOS6.5部署KVM及实现在线迁移 一.前言 虚拟化技术已经成为未来计算机技术的一个重要的发展方向.Linux在虚拟化方面已经有了很多种解决方案:VMware.VirtualBox.Xen和K ...

  6. 虚拟机里的服务器怎么实现联网,如何实现nat方式的VMware虚拟机联网

    接触过Vmware虚拟机的朋友都知道,VMware自带3种上网方式:NAT模式.Host-Only(仅主机模式)以及brigde桥接.在这其中,brigde桥接是通过网线连接路由器上网,可以配置静态I ...

  7. centOS7\centOS6 防火墙设置与端口开放的方法

    centOS7: firewalld: 防火墙开启某端口: firewall-cmd --zone=public --add-port=8888/tcp --permanent 防火墙关闭某端口: f ...

  8. VMware虚拟机内部错误以及NAT联网问题

    今天,打开Vmware虚拟机出现内部错误,如下: 其解决办法:在宿主系统的计算机管理中找到服务和应用程序,将Vmvare相关服务启动并改为自动: 当虚拟机不能联网时检查虚拟机设置 已连接和启动时连接一 ...

  9. KVM 虚拟机 配置 NAT 连接方式上网

    1.命令行安装方式 virt-install \ --name=kvm99 --ram 1024 --vcpus=1 \ --disk path=/home/vms/kvm99.qcow2,size= ...

  10. 运维之道 | CentOS7.6 安装部署KVM虚拟机(GUI图形化安装)

    前言 KVM虚拟技术是完全的虚拟化,VPS之间不共用母机CPU和内存,VPS之间资源使用是独立的,互不影响.由于是完全的虚拟化,KVM虚拟技术的VPS理论上支持安装linux和windows任何版本, ...

最新文章

  1. NLP/CV模型跨界进行到底,视觉Transformer要赶超CNN?
  2. AI-2048 注释
  3. 比特币的矿工为什么讨厌开发组Core?
  4. ABAP 程序运行锁
  5. mysqld 进程非常多_MySQL binlog后面的编号最大是多大?
  6. Oracle入门(十四.21)之创建DML触发器:第二部分
  7. 【PAT - 甲级1005】Spell It Right (20分) (递归输出,水题)
  8. ofstream的使用方法--超级精细。C++文件写入、读出函数(转)
  9. 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结
  10. Cygwin下cscope的配置
  11. 5款免费又好用的甘特图软件,总有一款适合你
  12. Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
  13. 数据结构导论【五】之 图
  14. 一种便携式导弹飞控系统外场实时仿真测试系统设计
  15. php干货网,php高手干货【必看】
  16. 5G,仅仅是更快的网速吗?
  17. cydia软件路径_Cydia源目录结构解析
  18. 天呐?发现一个媲美 “百度” 的程序员网站
  19. 没错,Linux需要更多的憎恨者
  20. 利安德巴赛尔启动韩国年产能40万吨的聚丙烯生产设施;固特异完成收购固铂轮胎 | 能动...

热门文章

  1. python中的变量是动态类型的什么意思_python基础语法之变量
  2. Python机器学习库——Sklearn
  3. linux 软件应用
  4. HTML5 定位 —— Geolocation API的正确使用
  5. 杀手级的ASUS EEE 901GO?
  6. Javascript学习之创建对象
  7. Android ListView下拉刷新点击加载更多
  8. MySQL left join right join inner join 区别
  9. list.h双循环链表的实现,拷贝自Linux内核(2.6.20.1)
  10. 虚伪,不只是形容一个人