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 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防火墙端口转发...相关推荐
- Centos6.3安装KVM
Centos6.3安装KVM 一.安装kvm 1 在安装CentOS6.3时可以选择安装好kvm 2 如果未安装好kvm,请按照下列方式安装 [创建本地yum源] 挂载iso文件 mount -o l ...
- VMware的centos7安装及IP上网(NAT模式)
一.VMware的centos7安装步骤 1.安装好VMware,如下图所示: 2.挂载Linux镜像,这里选择centos7镜像.首先点击 文件==>新建虚拟机 3.出现新建虚拟机弹出框,刚开 ...
- KVM的NAT网络和bridge网络安装
KVM的安装使用 安装前准备 NAT网络 第一大步:安装相关包 第二大步:创建磁盘 第三大步:安装配置 第四大步:进入管理端 点左上角1的部分,查看ip 创建bridge网络虚拟机 安装前准备 实验目 ...
- vmware设置centos虚拟机nat联网(转)
今天在vmware虚拟主机中安装hearbeat,为了使用最新的版本,选用编译安装了.在编译过程中,需要连接被墙的网站下载文件,那只能用vpn,但我使用的是桥接方式联网,使用不了真实主机的vpn,于是 ...
- CentOS6.5部署KVM及实现在线迁移
CentOS6.5部署KVM及实现在线迁移 一.前言 虚拟化技术已经成为未来计算机技术的一个重要的发展方向.Linux在虚拟化方面已经有了很多种解决方案:VMware.VirtualBox.Xen和K ...
- 虚拟机里的服务器怎么实现联网,如何实现nat方式的VMware虚拟机联网
接触过Vmware虚拟机的朋友都知道,VMware自带3种上网方式:NAT模式.Host-Only(仅主机模式)以及brigde桥接.在这其中,brigde桥接是通过网线连接路由器上网,可以配置静态I ...
- centOS7\centOS6 防火墙设置与端口开放的方法
centOS7: firewalld: 防火墙开启某端口: firewall-cmd --zone=public --add-port=8888/tcp --permanent 防火墙关闭某端口: f ...
- VMware虚拟机内部错误以及NAT联网问题
今天,打开Vmware虚拟机出现内部错误,如下: 其解决办法:在宿主系统的计算机管理中找到服务和应用程序,将Vmvare相关服务启动并改为自动: 当虚拟机不能联网时检查虚拟机设置 已连接和启动时连接一 ...
- KVM 虚拟机 配置 NAT 连接方式上网
1.命令行安装方式 virt-install \ --name=kvm99 --ram 1024 --vcpus=1 \ --disk path=/home/vms/kvm99.qcow2,size= ...
- 运维之道 | CentOS7.6 安装部署KVM虚拟机(GUI图形化安装)
前言 KVM虚拟技术是完全的虚拟化,VPS之间不共用母机CPU和内存,VPS之间资源使用是独立的,互不影响.由于是完全的虚拟化,KVM虚拟技术的VPS理论上支持安装linux和windows任何版本, ...
最新文章
- NLP/CV模型跨界进行到底,视觉Transformer要赶超CNN?
- AI-2048 注释
- 比特币的矿工为什么讨厌开发组Core?
- ABAP 程序运行锁
- mysqld 进程非常多_MySQL binlog后面的编号最大是多大?
- Oracle入门(十四.21)之创建DML触发器:第二部分
- 【PAT - 甲级1005】Spell It Right (20分) (递归输出,水题)
- ofstream的使用方法--超级精细。C++文件写入、读出函数(转)
- 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结
- Cygwin下cscope的配置
- 5款免费又好用的甘特图软件,总有一款适合你
- Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
- 数据结构导论【五】之 图
- 一种便携式导弹飞控系统外场实时仿真测试系统设计
- php干货网,php高手干货【必看】
- 5G,仅仅是更快的网速吗?
- cydia软件路径_Cydia源目录结构解析
- 天呐?发现一个媲美 “百度” 的程序员网站
- 没错,Linux需要更多的憎恨者
- 利安德巴赛尔启动韩国年产能40万吨的聚丙烯生产设施;固特异完成收购固铂轮胎 | 能动...
热门文章
- python中的变量是动态类型的什么意思_python基础语法之变量
- Python机器学习库——Sklearn
- linux 软件应用
- HTML5 定位 —— Geolocation API的正确使用
- 杀手级的ASUS EEE 901GO?
- Javascript学习之创建对象
- Android ListView下拉刷新点击加载更多
- MySQL left join right join inner join 区别
- list.h双循环链表的实现,拷贝自Linux内核(2.6.20.1)
- 虚伪,不只是形容一个人