kvm虚拟化管理平台WebVirtMgr部署
经过以下三篇文章,kvm虚拟化管理平台webvirtmgr环境的部署和安装已经完成:
kvm虚拟化管理平台WebVirtMgr部署-虚拟化环境安装-完整记录(0)
kvm虚拟化管理平台 WebVirtMgr 部署 - 完整记录(一)
kvm 虚拟化管理平台 WebVirtMgr 部署 - 完整记录(二)
正常情况下,虚拟机(以下简称 vm)通过网卡与主机进行通信网桥,只要宿主机能连接互联网,虚拟机也能顺利连接互联网。
不过,我的测试环境中的网络环境比较特殊:
没有内网交换机设置,也就是说内网没有网关,主机的默认网关是外网地址。
如下,主机开启了两张网卡:em1(外网),em2(内网,添加到网桥br0上)
[root@openstack ~]# ip addr #查看同期机的闹钟配置情况
1: lo:
link/loopback 00:00:00:00: 00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 范围主机 lo
inet6 ::1/128 范围主机
valid_lft 永远首选_lft 永远
2: em1:
链接/以太 44:a8:42:21:a6:00 brd ff:ff:ff:ff:ff:ff
inet 103.10.86.17/26 brd 111.101.186.163 范围全局 em1
inet6 fe80::46a8:42ff:fe21:a600/64 范围链接
永远有效_lft 永远首选_lft
3: em2:
链接/以太 44:a8:42:21:a6:01 brd ff:ff:ff:ff:ff:ff
inet6 fe80::46a8:42ff:fe21:a601/64 范围链接
valid_lft 永远 Preferred_lft 永远
4: em3:
链接/乙醚 44:a8 :42:21:a6:02 brd ff:ff:ff:ff:ff:ff
5:em4:
链接/以太 44:a8:42:21:a6:03 brd ff:ff:ff:ff:ff:ff
6: br0:
链接/以太 44:a8:42:21:a6:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.17/24 brd 192.168.1.255 范围全局 br0
inet6 fe80::46a8:42ff:fe21:a601/64 范围链接
valid_lft 永远 Preferred_lft 永远
8: vnet0:
链接/以太 fe:54:00:08:cf:9a brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe08:cf9a/64 范围链接
永远有效_lft 永远首选_lft 永远
[root@openstack ~]#route -n #查看路由,默认路由网关为外网
内核IP路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
103.10.86.0 0.0 。 0.0 255.255.255.192 U 0 0 0 em1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.25 5.0.0 U 1002 0 0 em1
169.254.0.0 0.0 .0.0 255.255.0.0 U 1006 0 0 br0
0.0.0.0 111.101.186.1 0.0.0.0 UG 0 0 0 em1
由于不存在内网网关,且虚拟机与主机之间采用桥接模式,因此虚拟机无法通过桥接模式连接互联网。
为了将安装好的虚拟机连接到互联网,我们需要手动进行一些特殊的配置:
1)主机部署了squid代理环境,即虚拟机的外部访问请求通过主机鱿鱼代理。
2)对vm的访问请求是通过主机的iptables的NAT或者nginx反向代理(proxy_pass)转发的。
------------------------------------------------------------ --- ---------------------------------------------------------- --- --------
以下是http模式的squid代理;
如果是https的squid代理,可以参考我的另一篇技术博客内容:Squid代理http和https上网操作记录
------------ ------------------------------------------------ -------------- ------------------------------------------------------------------------
宿主机的Squid代理部署记录
yum命令直接在线安装squid
[root@openstack ~]#yum install squid
安装完成后,修改squid.conf文件内容。修改前可以先备份一下文件
[root@openstack ~]# cd /etc/squid/
[root@openstack squid]#cp squid.conf squid.conf_bak
[root@openstack squid ]#vim squid.conf
1.在文件中找到 http_access Deny all,修改为http_access allowed all ,表示所有用户都可以访问此代理,
2。找到 http_port 3128,修改为http_port 192.168.1.17:3128,这里的IP和端口是Squid的代理IP(这里是主机的IP)和端口,
然后在启动之前执行以下命令来测试Squid
[root@openstack squid]# squid -k parse
2016/08/09 13:35:04|处理配置文件:/etc /squid/squid.conf(深度0)
2016/08/09 13:35:04|处理:acl管理器原型cache_object
............
............
2016/08/09 13:35:04|处理:refresh_pattern。 0 20% 4320
2016/08/09 13:35:04|初始化 https 代理上下文
[root@openstack鱿鱼]# squid -z
2016/08/09 13:35:12|创建交换目录
[root@openstack鱿鱼]# /etc/init.d/squid start
启动鱿鱼: . [好]
[root@openstack squid]# netstat -nltp
活动互联网连接(仅限服务器)
Proto Recv-Q Send-Q 本地地址外部地址状态 PID/程序名称
..... ........
tcp 0 0 192.168.1.17:3128 0.0.0.0:* 听71848/(鱿鱼)
........................
------------------------------------------------------------ --- ---------------------------------------
如果主机已启用iptables 防火墙规则,您还需要将以下行添加到 /etc/sysconfig/iptables:
-A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
然后重新启动 iptables 服务
[root@openstack ~]# /etc/init.d/iptables restart
在虚拟机 VM 上配置 Squid 代理
只需将以下行添加到系统环境变量配置文件 /etc/profile 中(添加在文件底部)
[root@vmserver001 ~] # vim /etc/profile
.....
export http_proxy=http://192.168.1.17:3128
[root@vmserver001 ~]#source /etc/profile #使上述配置生效
测试虚拟机是否可以外部访问:
[root@vmserver001 ~]#curl http://www.introzo.com #可以正常访问
[root@vmserver001 ~]#yum list #yum 可以正常在线使用
[root@vmserver001 ~]#wget http://www.introzo.com/mingpeng/blog/293744 #可以正常下载
--------- --- ---------------------------------------------------------- --- --------------------------
虚拟机内部访问请求是通过主机的iptables的NAT端口转发来实现的:
? 8.1.151虚拟机3:ip-192.168.1.152
需要访问宿主机的8088、8089、8090端口,分别转发到虚拟机1、虚拟机2、虚拟机3的80端口
虚拟机操作
1)关闭防火墙iptables
#/etc/init.d/iptables stop
#chkconfig iptables off
然后修改/etc/sysconfig/中的“SELINUX” selinux =禁用“
#setenforce 0
#getenforce
#reboot
…..
网关=192.168.1.17
#/etc/init.d/网络重启
主机操作
首先开启主机的IP转发功能:
[root@openstack ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
设置nat转发规则
[root@kvmserver ~]# cat /etc/sysconfig/iptables
# 由 iptables-save v1.4.7 于 2016 年 8 月 16 日星期二 09:48:24
*filter
:INPUT ACCEPT 生成[0:0]
:转发接受 [0:0]
:输出接受 [449:63333]
-A 输入 -m 状态 --state 相关,已建立 -j 接受
-A输入 -p icmp -j 接受
-A 输入 -i lo -j 接受
-A 输入 -p tcp -m 状态 --state 新 -m tcp --dport 22 -j 接受
-A输入-p tcp -m状态--状态新-m tcp--dport 80 -j接受
-A 输入 -p tcp -m 状态 --state 新 -m tcp --dport 6080 -j 接受 6080端口是vnc服务端口,也必须打开
-A INPUT -p tcp - m 状态 --state 新 -m tcp --dport 8088 -j 接受
-A 输入 -p tcp -m 状态 --state 新 -m tcp --dport 8089 -j 接受
-A 输入 -p tcp -m 状态 --state 新 -m tcp --dport 8090 -j 接受
-A 输入 -s 192.168.1.0/24 -p tcp -m 状态 --state 新 -m tcp --dport 3128 -j Accept##-A input -j Reject-Reject-With ICMP-HOST-PROHIBITED // 这两行注释掉,否则重新发布NAT端口时会出现问题! W# -A Forward -j Reject-Reject-With ICMP-HOST-PROHIBITED
Commit
# 于 2016 年 8 月 16 日星期二 09:48:24 完成
# 由 IPTABLES 生成 - 保存 v1。 4.7 2016年8月16日星期二09:48:24
*nat
:carouting接受[9:32464]
:后路由接受[9:8580]
:OUTPUT接受[9:9:8第580章]
-A PREROUTING -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.1.150:80 //注意DNAT规则必须放在SN中高于AT规则!
-A 预路由 -p tcp -m tcp --dport 8089 -j DNAT --到目的地 192.168.1.151:80
-A 预路由 -p tcp -m tcp --dport 8090 -j DNAT --到目的地 192.168.1.152:80
-A POSTROUTING -d 192.168.1.150 -p tcp -m tcp --sport 80 -j SNAT --到源 192.168.1.17
-A POSTROUTING -d 192 。 168. 1.151 -p tcp -m tcp --sport 80 -j SNAT --to-源 192.168.1.17
-A POSTROUTING -d 192.168.1.152 -p tcp -m tcp --sport 80 -j SNAT --to- source 192.168.1.17
COMMIT
# Completed on Tue Aug 16 09:48:24 2016
然后重启 iptables 即可生效!
[root@openstack ~]#service iptables restart
************************************
或者在终端命令行操作:
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.1.150:80
[root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.150 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.168.1.17
[root@openstack ~]#iptables -t 过滤器 -A INPUT -p tcp -m state - -状态新-m tcp --dport 8088 -j接受
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8089 -j DNAT --to-destination 192.168.1.151:80
[root@openstack ~]# iptables -t nat -A POSTROUTING -d 192.168.1.151 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m 状态 --state 新 -m tcp --dport 8089 -j 接受
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8090 -j DNAT --to-destination 192.168.1.152:80
[root@openstack ~]# iptables -t nat -A POSTROUTING -d 192.168.1.152 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.168.1.17
[root@openstack ~]#iptables -t filter -A INPUT -p tcp -m 状态 --state 新 -m tcp --dport 8090 -j 接受
保存规则并重启iptables
[root@openstack ~]#service iptables save
[root@openstack ~]#service iptables restart
#在终端命令行添加规则后一定要先保存然后重启~
#将规则添加到/etc/sysconfig/iptables文件后,需要重启才能生效~
#查看设置的规则
[root@openstack ~]#iptables -L #查看过滤表的规则
[root@openstack ~]#iptables -L -t nat #查看过滤表的规则nat表
****************************
注意:
nat端口转发设置成功后,记得在/etc/sysconfig/iptables 文件注释掉以下两行!不然nat转发会有问题!一般情况下,如上设置nat转发规则并保存并重启防火墙后,/etc/sysconfig/iptables文件中的以下两行会被自动删除。
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
**************************************************** ****** ********************************************** *****
同理,如果是其他端口的NAT转发,例如想通过3306端口访问虚拟机1的数据。
可设置:主机63306->虚拟机3306
主机操作:
[root@openstack ~]#iptables -t nat -A PREROUTING -p tcp -m tcp --dport 63306 -j DNAT --to-destination 192.168.1.150:3306
[ root@openstack ~]#iptables -t nat -A POSTROUTING -d 192.168.1.150 -p tcp -m tcp --dport 3306 -j SNAT --to-source 192.168.1.17
[root@openstack ~]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 63306 -j ACCEPT #防火墙释放63306端口
[root@openstack ~]#/etc/init.d/iptables save
[root@openstack ~]#/etc/init.d/iptables 重启
虚拟机需要提前在mysql中授权给主机
**************************************************** ****** ********************************************** *****
**************************************************** ****** ********************************************** *****
注:
比如访问宿主机的8080端口,转发到虚拟机的80端口,除了使用上面iptables的nat转发规则外,还可以使用nginx的proxy_pass反向代理实现。
宿主机上nginx配置如下:
[root@bastion-IDC ~]# cat /Data/app/nginx/conf/vhosts/80-vm.conf
server {
监听 8088;
server_name localhost;
位置/ {
root /opt/;
索引index.html index.htm;
proxy_pass http://192.168.1.150/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set _header 主机 $host;
}
}
重启nginx服务,iptables开放8080端口
这样访问主机8080,即http://111.101.186.163:8080时,显示的结果就是http://192.168.1.150的结果
**************************************************** ******
除了使用nginx反向代理外,还可以使用haproxy反向代理(其他章节介绍过)
相关文章
- 10-05 什么是共享单车黑名单制度?共享单车黑名单制度
- 10-05 如何开启Android手机的便携式热点功能
- 10-05 360n5s发布会直播地址360n5s新品发布会视
- 10-05 【第200期】面试官:您能简单讲一下SpringM
- 10-05 【第411期】Docker连杀15题,你能坚持哪题
- 10-05 【第432期】面试官:您的项目中使用Redis的目
- 10-05 ZEEKR 001 FR高性能车型预热:搭载4电机
- 10-05 我国网民规模达10.79亿,互联网普及率达76.4
- 10-05 《2023年标准地图》正式上线
- 10-05 stm32内存包括哪些类型(stm32内存分为几个
- 10-05 stm32采集+数据处理程序(stm32采集+数据
- 10-05 stm32仿真图的引脚如何连接(stm32仿真器接
- 10-05 Zabbix警告问题
- 10-05 Zabbix集成云预警(瑞祥云)实现电话短信预警
- 10-05 利用企业微信实现预警(shell+python)
- 10-05 高通CEO爆料苹果自研5G芯片明年准备就绪
- 10-05 全球智能手机市场被扰乱:iPhone与Androi
- 10-05 苹果最新巧克力广告:Apple Card激活到付款
- 10-05 苹果推出iOS 15.6正式版固件:我们来看看iO
- 10-05 iPadOS 16 允许应用程序使用 M1 设备存
- 最近发表