Openstack neutron多个external network


基于Openstack kilo版本


Neutron本身的设计可以支持多个external network, 今天试了一下这个功能,由于环境的局限,外网和管理网是同一个,

外网上建立了一个网桥br-eth2, 同时建立了另外一个网桥br-ex,这两个网桥提供外网的服务。


实验一, 测试两个external network是否能绑定到同一个物理网桥上, 失败

配置:

Ml2的配置/etc/neutron/plugins/ml2/ml2_conf.ini

[ml2_type_flat]

flat_networks = default,physnet1,ext1,ext2

OVS的配置文件/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini

[OVS]

bridge_mappings =default:br-eth1,ext1:br-ex,ext2:br-ex

l3_agent的配置文件 /etc/neutron/l3_agent.ini

[DEFAULT]

gateway_external_network_id =

external_network_bridge =

该实验已失败告终,因为br-int上的流表会产生错乱,因为ext1 和ext2网络的in-port是同一个。


实验二,测试两个external network绑定到两个物理网桥上, 成功

Ml2的配置/etc/neutron/plugins/ml2/ml2_conf.ini

[ml2_type_flat]

flat_networks = default,physnet1,ext1,ext2

OVS的配置文件/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini

[OVS]

bridge_mappings =default:br-eth1,ext1:br-eth2,ext2:br-ex

l3_agent的配置文件 /etc/neutron/l3_agent.ini

[DEFAULT]

gateway_external_network_id =

external_network_bridge =


步骤:

1. 创建两个external network

$ neutron net-create --shared --router:external --provider:network_type flat --provider:physical_network ext1 external1

$ neutron subnet-create --name external1-sub --gateway 10.160.57.254 --allocation-pool start=10.160.57.194,end=10.160.57.200 --disable-dhcp external1 10.160.57.0/24

$ neutron net-create --shared --router:external --provider:network_type flat --provider:physical_network ext2 external2

$ neutron subnet-create --name external2-sub --gateway 10.160.57.254 --allocation-pool start=10.160.57.201,end=10.160.57.209 --disable-dhcp external2 10.160.57.0/24


2. 创建两个router,分别把网关绑定到两个external network

$ neutron router-create test-router1

$ neutron router-create test-router2

$ neutron router-gateway-set test-router1 external1

$ neutron router-gateway-set test-router2 external2


3. 创建内部网络,并创建两个subnet分别绑定到两个路由上

$ neutron net-create --name lan-test

$ neutron subnet-create lan-test 172.16.1.0/24

$ neutron subnet-create lan-test 172.16.2.0/24

$ neutron router-interface-add test-router1 6507b2f6-4409-42fd-862e-c41db4653147

$ neutron router-interface-add test-router2 a2ac2ca9-e7d1-4e86-9320-1987b72880a1


NOTE:做这个测试的目的是我们希望一个虚拟机可以通过两个floatingip提供服务

4. 部署虚拟机指定网络的其中一个subnet

$ nova boot --image centos7-x64 --nic net-id=5abf3f34-428b-4f3a-82e8-82d8a092d5b4  --flavor 1 instance01


5. 创建另外一个subnet的port,并绑定到这个虚拟机上

$ neutron port-create lan-test --fixed-ip subnet_id=6507b2f6-4409-42fd-862e-c41db4653147

$ nova interface-attach instance01 --port-id aa4e02ee-e514-426d-85c3-43b72ecab3a5

这时候会虚拟机上会有两个网卡,不过只有一个默认路由


6. 创建两个floatingip,分别绑定到虚拟机的两个网卡上

$ neutron floatingip-create external1

$ neutron floatingip-create external2

$ neutron floatingip-associate 5b9a1c92-13e2-4ec5-84b6-00c72e4d9bbb aa4e02ee-e514-426d-85c3-43b72ecab3a5

$ neutron floatingip-associate ceb75c33-fcee-4552-9942-d3f75858facd 49d50bc5-0684-42fa-bd16-8cb27fd1db17

两个floatingip的地址分别为10.160.57.195和10.160.57.202

这个时候只用通过其中的floatingip访问,因为虚拟机内部只有一个默认路由。


7. 在其中的一个router中创建SNAT规则,使得从该router进来的ip都转化成该subnet的网关

$ ip netns exec qrouter-ce1b4d87-d138-45ce-a0a7-892e8c01a928 iptables -t nat -A neutron-vpn-agen-POSTROUTING -o qr-f67f701e-0b -j SNAT --to-source 172.16.1.1


这时候两个ip应该都能访问了

[root@controller1 ~]# ping -c 4 10.160.57.195
PING 10.160.57.195 (10.160.57.195) 56(84) bytes of data.
64 bytes from 10.160.57.195: icmp_seq=1 ttl=63 time=1.19 ms
64 bytes from 10.160.57.195: icmp_seq=2 ttl=63 time=0.718 ms
64 bytes from 10.160.57.195: icmp_seq=3 ttl=63 time=0.766 ms
64 bytes from 10.160.57.195: icmp_seq=4 ttl=63 time=0.918 ms
[root@controller1 ~]# ping -c 4 10.160.57.202
PING 10.160.57.202 (10.160.57.202) 56(84) bytes of data.
64 bytes from 10.160.57.202: icmp_seq=1 ttl=63 time=1.79 ms
64 bytes from 10.160.57.202: icmp_seq=2 ttl=63 time=0.857 ms
64 bytes from 10.160.57.202: icmp_seq=3 ttl=63 time=0.760 ms
64 bytes from 10.160.57.202: icmp_seq=4 ttl=63 time=2.86 ms


问题: 虚拟机里面获取不到真正的源ip地址!!!








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值