对于这两个interface含义的理解一波三折,下面我把各种理解都记录下来.
2014-9-23
#可以把flat_interface理解为Openstack整套生态系统内部的网络接口,内部各节点之间相互通讯用的
#可以把public_interface理解为Openstack系统之外的面向管理员,面向控制端的接口
所以在我的笔记中flat_interface = eth1 (GE网卡,mannual), public_interface = eth0(BBG网卡,static),因为我默认BBG是用来管理的,GE用来内部通讯的.
2014-10-28
回顾github上的一篇文章 (https://github.com/ChaimaGhribi/Icehouse-Installation-Flat-Networking/blob/master/OpenStack-Icehouse-Installation-Nova-Network.rst#install-the-compute-service-nova), 发现文中nova.conf的public_interface=br100, 对此感到非常奇怪!
我尝试将GE网卡比作文中的eth0用来内部通讯+互联网通讯, BBG网卡比作eth1用来管理. 然后创建浮动ip地址池,将3.242.164.4分配给了cirros(内部IP 172.52.17.2), 但是外界无法联系到cirros.
于是我将BBG网卡的gateway取消, 将GE网卡配上ip, netmask, gateway. 此时从我的电脑3.242.164.104可以ping或ssh至cirros了. 但是从cirros内却无法ping通我.
我尝试使用该文中的public_interface = br100方法,可以达到互通的目的,但是不理解原理.
2014-10-29
今天看了一篇文章: https://groups.google.com/forum/#!topic/china-openstack-user-group/7obOGTcv6gk
Q: 请教一个问题,我在主机上一块网卡安装了Openstack(havana)。网络用的nova-network。配置j如下
network_manager=nova.network.manager.FlatDHCPManager flat_network_bridge=br100 flat_interface=eth0 public_interface=eth0 eth0网卡地址为10.10.101.105,网关是10.10.101.254,可以连通外网。 br100以及虚拟机的ip用的网段为192.168.100.0/24。现在问题是虚拟机不能访问外网和主机的局域网。ping命令如下
ping www.baidu.com
PING www.baidu.com(115.239.210.27)
From 192.168.100.1: icmp_seq=2 Redirect Host(New nexthop: 10.10.101.254) From 192.168.100.1: icmp_seq=3Redirect Host(New nexthop: 10.10.101.254)
可以看到DNS应该没问题,但是访问不了外网。
|
A: 由于最近忙别的去了,把这个帖子忘了,今天偶尔看到邮件,有人问这个问题,我把我的解决办法说一下。
1、如果你有两块网卡,当然将flat_interface和flat_interface设成不同的网卡是最好的了。flat_interface是通过网桥连接虚拟机的,随便设置一个网卡就行;public_interface一定要设成你连上外网的那个网卡,这样虚拟机就可以直接上网了。
2、如果你只有一块网卡如”eth0“,那么上面的设置时没有问题的,至于上不去网,是iptables的问题。我的解决办法是执行下面一条命令就行了
iptables -t nat -A POSTROUTING -o br100 -j MASQUERADE |
这是到目前为止我认为正确的理解,即: flat主内,public主外似乎还是没错的, 但是管理网络也是可以充当实例间通讯网络的 (这是和2014-9-23理解的不同之处), 所以flat_interface = eth0(BBG). public_interface=eth1(GE), 用GE网卡充当实例访问互联网的那块网卡.
2014-10-30
昨天的文章中说"flat_interface随便设置一个网卡就行", 今天想了下似乎有道理, 因为一般情况下,所有compute结点的网卡都接在网络中,相互之间肯定可以通讯, 所以flat网卡同时也可以是public网卡.