Centos7.X下搭建KVM创建虚拟机全过程(含NAT配置)

最近实践4核8G    50G centos7.6  (注意检查VNC端口不要和上面的冲突)

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name java-ios-7.6 --memory 8192 --vcpus 4 --disk /data/sys/java-ios-7.6.qcow2,format=qcow2,size=50 --cdrom /data/sys/mnt/CentOS-7.6-x86_64-Minimal-1810.iso --network bridge=br0 --graphics vnc,password=qq3366QQ,listen=0.0.0.0,port=5910 --noautoconsole

最近实践8核16G    50G 2012R2  (注意检查VNC端口不要和上面的冲突)

virt-install --virt-type kvm --os-type=windows --os-variant win2k8 --name wd-2012 --memory 16384 --vcpus 8 --disk /data/sys/wd-2012.qcow2,format=qcow2,size=50 --cdrom /data/sys/mnt/cn_windows_server_2012_r2_x64_dvd_2707961_han_datacenter.iso --network bridge=br0 --graphics vnc,password=qq3366QQ,listen=0.0.0.0,port=5911 --noautoconsole

最近实践4核8G    50G 2008R2  (注意检查VNC端口不要和上面的冲突)

virt-install --virt-type kvm --os-type=windows --os-variant win2k8 --name game-2008r2 --memory 8192 --vcpus 4 --disk /data/game-2008r2.qcow2,format=qcow2,size=50 --cdrom /mnt/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso --network network=default --graphics vnc,password=qq3366QQ,listen=0.0.0.0,port=5910 --noautoconsole

--os-variant rhel7    (安装centos7.x)(也可不指定)
--os-variant win2k8    (安装windows2008、2012)(也可不指定)
--memory 8192,maxmemory=16384
--memory 8192
--vcpus 4,maxvcpus=8
--vcpus 4
--boot hd
--cdrom /boot/CentOS-7.6-x86_64-DVD-1810.iso
--network bridge=br0(桥接模式)
--network network=default(NAT模式)
--graphics vnc,password=qq3366QQ,listen=0.0.0.0,port=5910
--graphics vnc,listen=0.0.0.0
--graphics vnc,password=qq3366QQ,listen=0.0.0.0
--noautoconsole  如果不加,就一直等待虚拟机安装完成,不进行下面操作

连接前工作:

开放5910端口等待连接
firewall-cmd --zone=public --add-port=5910/tcp --permanent
systemctl restart firewalld.service
systemctl status firewalld.service

或是直接将防火墙关闭
systemctl stop firewalld.service  (做转发使用)
systemctl disable firewalld.service(做转发使用)


之后有60s的时候需要快速使用vnc进行连接,以进行操作,配置分区的时候只用一个/分区(Standard Partition)就可以了,因为都是虚拟机,不用使用swap分区
关闭KDUMP 功能
网络连接自动获取地址(NAT模式时使用br0桥接时候可不用)
时区选亚洲/上海(可鼠标点选)
宿主机开启IPV4转发(当KVM是NAT模式时使用)

vim /etc/sysctl.conf

把net.ipv4.ip_forward = 1值原来是0,改成1,如果不存在就新增一行
保存,执行命令sysctl -p 使配置生效

sysctl -a | grep ipv4| grep forward        查看内核的所有参数命令查看是否生效,显示net.ipv4.ip_forward = 1表示的是内核开启了路由转发

NAT模式配置端口转发(配置iptables端口转发)

1、查看NAT是否开启
virsh net-list
default        active        yes        yes
通过上面,我们可以看到NAT方式已经开启。而且default是宿主机安装VM支持模块的时候自动安装的。

2、查看宿主服务器virbr0的网卡信息    ifconfig virbr0

3、查看系统中已经存在的网卡    ifconfig
通过上面,我们可以看出网卡virbr0就是NAT方式连接网络时,所使用到的网卡
通过配置文件,来查看NAT方式的DHCP地址池,该配置文件为:/etc/libvirt/qemu/networks/default.xml

4、开启KVM服务器的IPtables的转发功能,使用如下命令:
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
注意该命令中的网卡时br0,而不是eth0(br0是桥接时创建的网卡名字)

----------------------------------------------------------------------------------

假设该KVM的公网IP为192.168.50.146,VM的IP为192.168.122.159,现在我要求通过访问KVM的8022端口访问VM的22端口

要想达到上述功能,我们需要在KVM服务器上设置如下IPtables规则:https://www.cnblogs.com/whych/p/9147900.html

iptables -t nat -A PREROUTING -d 192.168.50.146 -p tcp -m tcp --dport 8022 -j DNAT --to-destination 192.168.122.159:22
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.159 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.50.146

注意这两条IPtables规则:

第一条规则很好理解,就是把所有访问192.168.50.146:8022的请求转发到192.168.122.159:22的端口上。

第二条规则我的理解是,把所有来自192.168.122.0/255.255.255.0网段访问192.168.122.159:22的数据全部通过192.168.122.1这个网关转发出去。

现在我们来实际效果,如下:
ssh -p 8022 root@192.168.50.146
发现一打开就被关闭.是被防火墙阻止了.
打开防火墙
systemctl start firewalld.service

firewall-cmd --zone=public --add-port=5901-6100/tcp --permanent  //添加一个端口5901-6100
firewall-cmd --zone=public --add-port=8022/tcp --permanent       //添加一个端口8022    
firewall-cmd --zone=public --add-port=873/tcp --permanent        //添加一个端口873
firewall-cmd --zone=public --add-port=80/tcp --permanent         //添加一个端口80
firewall-cmd --zone=public --add-port=443/tcp --permanent        //添加一个端口443

firewall-cmd --reload                                            //重新加载规则
firewall-cmd --list-port                                         //列出添加的端口

代码分析
--zone #作用域
--add-port=1935/tcp    //添加端口,格式为:端口/通讯协议
--permanent            //永久生效,没有此参数重启后失效

如果还是不成功
清空规则
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT                                     //ssh
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT             //http

sudo iptables -I INPUT 1 -i lo -j ACCEPT                             //保持彼此之间的通信--[成功]
sudo iptables -P INPUT DROP                 

实践实用的规则如下(开放53389到3389、81到81、3050到3050、3150到3150、3014到3014):

iptables -t nat -A PREROUTING -d 103.85.84.94 -p tcp -m tcp --dport 53389 -j DNAT --to-destination 192.168.122.44:3389
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.44 -p tcp -m tcp --dport 3389 -j SNAT --to-source 103.85.84.94
iptables -t nat -A PREROUTING -d 103.85.84.94 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.122.44:81
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.44 -p tcp -m tcp --dport 81 -j SNAT --to-source 103.85.84.94
iptables -t nat -A PREROUTING -d 103.85.84.94 -p tcp -m tcp --dport 3050 -j DNAT --to-destination 192.168.122.44:3050
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.44 -p tcp -m tcp --dport 3050 -j SNAT --to-source 103.85.84.94
iptables -t nat -A PREROUTING -d 103.85.84.94 -p tcp -m tcp --dport 3150 -j DNAT --to-destination 192.168.122.44:3150
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.44 -p tcp -m tcp --dport 3150 -j SNAT --to-source 103.85.84.94
iptables -t nat -A PREROUTING -d 103.85.84.94 -p tcp -m tcp --dport 3014 -j DNAT --to-destination 192.168.122.44:3014
iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.44 -p tcp -m tcp --dport 3014 -j SNAT --to-source 103.85.84.94


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值