项目组因业务需求使用openstack搭建了一个私有云,本想在vm上搭建一个ftp.源是vsftpd.所有配置都完成了,在远程登录的时候却出现了
这个问题.
初一看以为是文件夹权限的问题,可上上下下全检查了一遍之后也没感觉权限方面有问题.
后来我在vm本地用ftp localhost测试了一下,发现可以使用账号密码登录,操作也全都正常.
于是我就在阿里云上的vm上配置了同样的一个vsftpd,配置什么的全都一样,可以远程登录.
十分纳闷
后来使用ip addr命令分别在项目组私有云上的vm和阿里云上的vm执行,找到了问题的根源
项目组私有云的截图:
阿里云的截图:
阿里云上的vm除了一块eth0网卡,还有一块eth1网卡,eth0网卡是用于openstack内部各组件之间连接的,eth1是用来和外部网络相连,eth1里面的inet的内容就是vm的公网ip,也就是说阿里云上的公网ip是和vm绑定在一起的
再来看看项目组的,只有一块用于openstack内部各组件连接用的eth0,那vm怎么和外部网络相连呢?
原来openstack有一个虚拟路由,在创建vm的时候可以给vm分配(并非绑定)一个floating ip,这个floating ip是可以随时更换的,更换之后也是即时生效.vm在需要连接外部网络的时候,虚拟路由会将eth0和分配给它floating ip进行一个NAT转换
这时候在vsftpd.conf中添加一条配置即可:
pasv_address=ip(即vm的floating ip)
再进行远程连接就可以正常登录了