1. 问题
《Ubuntu16手动安装OpenStack——vxlan网络》一文中,已经配置好了vxlan网络,并且成功创建了cirros1实例。
但是,进入实例后,发现一个问题:实例无法连通外网。这个问题我们在《Ubuntu16手动安装OpenStack——horizon篇》一文中就遇到过,也找到了解决办法。如今更换了网络模式,我们再来研究一下实例访问外网的问题。
2. 解决办法
2.1. traceroute
1、登录cirros1ssh cirros@10.0.0.201
2、路由跟踪traceroute 8.8.8.8
从上图可以看出,从虚拟机发出的包,依次经过了192.168.100.1和10.0.0.1,然后就出不去了。这说明,问题出在网桥(10.0.0.1)和外网的连接。
2.2. snat
参照《Linux配置SNAT上网》和《Ubuntu16手动安装OpenStack——horizon篇》,对控制节点网络进行设置。
1、接受虚拟机数据包iptables -I INPUT -i eth2 -j ACCEPT
2、开启路由功能echo 1 > /proc/sys/net/ipv4/ip_forward
3、伪装数据包iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j SNAT --to 172.16.0.105
2.3. 测试
1、登录cirros1ssh cirros@10.0.0.201
2、测试访问ping 8.8.8.8 -c3
3、修改resolv.confsudo vi /etc/resolv.conf
添加:
1 | nameserver 180.76.76.76 |
4、测试访问ping www.baidu.com -c3