模拟CloudStack的NAT实现

来源:互联网 发布:阿里云 谷歌api 编辑:程序博客网 时间:2024/06/07 12:31

为了更方便的理解CloudStack高级网络模式中的NAT功能,使用现有环境。使用iptables工具实现NAT转发功能。模拟CloudStack高级网络模式-NAT

实验拓扑图:

实验准备:        

KVM 中虚拟化出两台计算机                                                     kvm名称为:cloudstack-kvm71

Centos7:用作网关设备(以下简称网关).                                 Centos7虚拟机名称为VM-2d05374a-6199-4f8d-be82-8154affc1520

Win7:用作Client设备(以下简称客户端),网关指向Centos7.            

Begin:

为网关设备添加网卡。保证一张网卡通向192.168.1.0/23网段,一张用作私网网关

根据MAC地址后五位区分。网关设备在KVM中的对应网卡应该为 vnet9  vnet10,Win7对应的网卡为vnet11

当前结构为:三张网卡都桥接到了cloudbr0上,cloudbr0为公司内部网络:192.168.0.0/23

[root@cloudstack-kvm71 ~]# brctl show

bridge name    bridgeid        STP enabled    interfaces

cloud0            8000.fe00a9fe00f1 no           vnet0

                                                 vnet4

                                                 vnet5

cloudbr0         8000.782bcb479a7a       no           em1

                                                 vnet1

                                                 vnet10

                                                 vnet11

                                                 vnet2

                                                 vnet3

                                                 vnet6

                                                 vnet7

                                                 vnet8

                                                 vnet9

virbr0            8000.52540027a4a0       yes          virbr0-nic

[root@cloudstack-kvm71 ~]# brctl addbr br0                                         #添加一个网桥,用于私网连接

[root@cloudstack-kvm71 ~]# brctl delifcloudbr0 vnet10                        #分配网桥,实验目的为让Win7采用网关设备的公网地址上网

[root@cloudstack-kvm71 ~]# brctl delifcloudbr0 vnet11

[root@cloudstack-kvm71 ~]# brctl addif br0vnet10

[root@cloudstack-kvm71 ~]# brctl addif br0vnet11

[root@cloudstack-kvm71 ~]# brctl show

bridge name    bridgeid        STP enabled    interfaces

br0         8000.fe5400a1bb23       no           vnet10

                                                 vnet11

cloud0            8000.fe00a9fe00f1 no           vnet0

                                                 vnet4

                                                 vnet5

cloudbr0         8000.782bcb479a7a       no           em1

                                                 vnet1

                                                 vnet2

                                                 vnet3

                                                 vnet6

                                                 vnet7

                                                 vnet8

                                                 vnet9

virbr0            8000.52540027a4a0       yes          virbr0-nic

配置Win7 IP地址及网关


配置网关IP地址

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

IPADDR=1.1.1.254

NETMASK=255.255.255.0

ONBOOT=yes

 

配置网桥地址,启用网桥:

[root@cloudstack-kvm71 ~]# ifconfig br0 1.1.1.10

测试客户端能否Ping通网关



好了,基本环境已经搭好。开始配置iptables服务,启用nat转发。

目前的结构是这样的:

 

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520~]# yum install net-tools               #安装网络工具

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520~]# route                                    #查询当前路由表,目前拥有两个直连网段和一条默认路由。

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         192.168.1.1     0.0.0.0         UG   100    0        0 eth0

1.1.1.0         0.0.0.0         255.255.255.0   U    100    0        0 eth1

192.168.0.0    0.0.0.0         255.255.254.0   U    100    0        0 eth0

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]# rpm -qa |grep iptables-services        #查询是否安装iptables服务,如果未安装,使用yum install 安装

iptables-services-1.4.21-17.el7.x86_64

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]# vi /etc/sysctl.conf                   #写入net.ipv4.ip_forward = 1  表示开启路由转发功能 

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]# sysctl -p

net.ipv4.ip_forward = 1

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]#iptables -F

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]#iptables -P INPUT ACCEPT

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]#iptables -P FORWARD ACCEPT

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  #eth0 为网络出口

[root@VM-2d05374a-6199-4f8d-be82-8154affc1520/]#service iptables save

 

测试:1.1.1.0 网段内的地址已经可以ping通外网



抓包测试:

访问外网的流量已经被转换为eth0接口的地址。实现了私有网络上网


0 0
原创粉丝点击