问题导读 1.本文解决ping通外网的思路是什么? 2.如何实现ping通外网? 3.ping域名bad address该如何解决? 前面是概述,这里给大家在详细说一下,openstack网络。 由于在安装部署中,我们遇到了实例ping不通外网、ping不通节点,ping不通域名。而且有的甚至获取不到ip。 获取不到ip,一直没有遇到过这个问题,只要是完全按照 about云openstack入门宝典 应该不会遇到这个问题。 要么使用dhcp自动分配,要么是自己手工配置。入门宝典采用的是自动分配。 学习openstack的过程中,为什么我们会遇到问题。总结原因如下: 1.存在专门跳坑现象 刚开始学习,我们一般对一门技术理解的并不深刻,可能只是停留在皮毛阶段。这时候我们所做的最多的是模仿。当我们会走了之后,我们在学跑。有的同学不是,是上来就想跑,结果到处往坑里掉。 有的同学,可能会想,我改动下,可以明白原理,这样理解更深刻。道理是没有错的,但是这样会浪费你更多的时间,而且可能解决不了。因为有很多问题,是跟自己的操作有关系。 对于新手最好的学习方式,是多找资料,然后模仿。为什么要多找资料那,网上的资料是非常多的,同样书籍和视频也是不少的,但是如果你单纯的按照一个文档来操作,能操作正确,当然是好的。但是从概率上来说,一个完全正确的文档几乎没有。即使官方文档,比如openstack kilo官网文档,刚发布之后,也经过几次修改。所以我们在学习的时候,一定要先积累资料,这样避免多次掉坑现象。 资料有了,我们开始学习和实践,特别是在实践的过程中,应避免在一知半解的情况改动。 比如在keystone部署的过程中,mysql都有默认的密码,我们觉得比较懂,就修改了密码,但是由于这个密码在多个组件中都是用,如果在配置的过程中,有一处没有修改,那么就会产生问题。 2.遇到问题如何提问 当我们遇到问题的时候,存在以下几种情况。 1.遇到问题,发到qq群,或则论坛 我们发我们的,说不定能解决,发完之后,自己在尝试解决。 遇到过很多这种情况,有的人在帮忙,偶尔会有人帮助,而且可能在互动中,解决了问题。 但是不得不说很多情况是楼主自己解决的,而且会把自己的解决办法分享给大家。 这样的人还是比较令人欣赏的,一个对大家有贡献的人,谁又会不喜欢,不欢迎。 2.遇到问题自己搞 要么百度,谷歌等,总之总想自己搞定。但是有时候会搞不定,怎么办。就到处找资料,找视频等。总之不太喜欢去问人,如果能够成为逗逼,那么前途无量,否则职业发展会遇到瓶颈。推荐:程序员职业发展瓶颈:被别人信任才能有广阔未来[写给代码技术同事] 3.发帖、提问就想得到现成的答案 遇到一些新手,当然也有一些工作多年的,当提问题,或则把问题发到qq群,如果没有人回答,可能会直接退群,而且愤愤然。 即使问题解决了,当然不会分享给别人,会将它所得到知识如数收藏。 上面其实当别人遇到问题的时候,有时候很多人确实是想帮助的,但是有心无力,确实帮不上。有些确实想帮,就说出自己看法,但是对于想得到正确答案的提问者来说,这无疑是废话,根本帮不上。 真正的大神是没有多少的,需要懂原理,而且有丰富的实践经验。这样的人是非常少的,因为想达到融会贯通至少需要两三年的时间,成为大师级人物则需要10年,而且还需要是一个勤奋思考的人。 对于多数人而言,我们只是负责某一个工作,甚至可能原理都不懂,但是我会做。就是这么简单。如果说你遇到了,那么只能根据它的经验来解决你的问题。 ############################ 说了这么多,那么我们遇到问题,到底是该提问,还是不该提问。有问题不问,憋着更不会。三人行必有我师,即使你的问题得不到你想要的答案,最起码起到下面作用 1.缓解你遇到问题的压力 2.在跟别人交流的过程,也是整理问题的过程,对问题有一个认识。 同样这里希望问问题的人,调整自己的心态,并不是所有的问题,别人都会给你一个正确的答案。跟别人交流自己的问题,这本身是一个很大的进步,而且可能得到一些灵感,自己就可以解决。 如果自己确实找不到答案,又没人帮助,你该怎么做。不断找资料,书籍、文档、视频,不断逛论坛,你的问题,肯定有解决的一天。而且这个问题的解决,会带给你质的飞跃。 ###################################################### 上面说了我们学习的过程中,是如何学习,该如何解决我们学习过程中遇到的问题。 我们就说说openstack的网络。 按照about云openstack入门宝典,安装部署完毕openstack。我们就想测试实例。 可是不幸的是,我们经常ping不通实例或则实例ping不通外部节点和外网互联网。当然也有获取不到ip,这个是由于基本的配置的问题,这里不在详述,如果是ubuntu,详细查看about云openstack入门宝典。 这里主要讲讲为什么实例ping不通外网。如果能够ping通外网,那么ping通其它节点自然不问题。 在三节点安装的过程中,首先我们需要确定上网模式。 这里是以mware为例: 我们知道mware有三种上网模式(虚拟机三种网络模式该如何上网指导),openstack安装部署,是需要至少有一个网卡上网的。 在网络节点我们知道,需要三个网卡(如果这里不了解,可能基础薄弱一些,参考about云openstack入门宝典中openstack【juno】入门 【准备篇】零:整体介绍),那么这三个网卡的网络模式是个关键。 我们一般采用的网络模式有很多种组合: 1.在原先三个网卡的基础上,我们使用第四个网卡上网。另外三个网卡采用host-only 2.三个网卡中,使用管理网络来上网。 等模式。 上面最关键是第三块网卡,这块网卡连接着虚拟网络与物理网络,也就是这块网卡的配置
?
代码语言:javascript复制# The external network interface
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
如果你仍然不明白,同样参考上面准备篇,(此篇同样会录制视频,欢迎捐助淘宝链接) 此网卡没有ip地址,官网给的网段是下面:
?
代码语言:javascript复制203.0.113.0/24为外部网络
但是采用这个网段,使用虚拟机,相信很多人会遇到ping不通网络的现象。 这个问题该如何解决,这里给提供另外一个思路: 这里在上篇已经有所截图,直接拿过来: 控制节点:
网络节点
计算节点
如果你一直被这个问题困扰,那么看到上面图,可能已经有所灵感。 上面采用的网络模式,是管理网络来上网, 10.0.0.0/24 第三块网卡使用的网段。 10.0.0.0网段 无论是采用nat,还是host-only,我们都可以来上网。 网段配置完毕,接着我们在实例化网络。 实例化网络这里稍有不同,我们不再使用 使用 203.0.113.0/24 , floating IP 地址范围 203.0.113.101 to 203.0.113.200: 而是使用 10.0.0.0/24,floatingIP 地址范围 start= 10.0.0.100,end=10.0.0.200 这个问题解决,剩下我们创建实例,进行测试:
?
代码语言:javascript复制nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=c5820bc3-9612-407b-8f67-eaf167192c7f
--security-group default --key-name demo-key demo-instance1
?
代码语言:javascript复制nova list
进入控制台
我们ping下about云(www.aboutyun.com)
我们看到
?
代码语言:javascript复制ping : bad address 'www.aboutyun.com'
这里是因为我们没有修改/etc/resolv.conf 添加
?
代码语言:javascript复制nameserver 8.8.8.8
修改完毕,我们在
?
代码语言:javascript复制ping 'www.aboutyun.com'
至此我们的网络也就ping通了