为了更方便的理解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接口的地址。实现了私有网络上网