![可以 Ping 但无法通过 SSH 连接到 Openstack VM 实例](https://linux22.com/image/1102596/%E5%8F%AF%E4%BB%A5%20Ping%20%E4%BD%86%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20Openstack%20VM%20%E5%AE%9E%E4%BE%8B.png)
有一个多节点 MAAS-JUJU-Openstack 设置,即 nova-cloud-controller、nova-compute 和 quantum/neutron 网关位于不同的主机上。在此设置中,MAAS 和 openstack 共享 10.0.0.0/24 作为其管理网络,而 Quantum charm 通过 eth0 连接到公共网络 10.0.10.0。我可以生成实例并为它们分配浮动 IP 地址。我还可以 ping 公共网络。此外,位于同一子网上的 2 个 cirros 实例可以相互 ssh。但是,我无法通过路由器命名空间(即)ip netns exec qr-xxxx ssh -i <full path to key> cirros@privateipaddr
或从外部 ssh 到实例。我已经通过仪表板和 nova 生成了密钥对,结果相似。也试过了chmod 0600 key
,ssh-add key
但无济于事。此处显示了示例输出http://pastebin.ubuntu.com/7676660/,最终超时。通过 vnc 连接到 cirros 图像显示,在 /var/log 消息下,有以下内容:
Jun20 14:29:21 cir3 authpriv.info dropbear[364]: Child connection from GatewayPrivateIp:32818
Jun20 14:29:21 cir3 authpriv.info dropbear[364]: Exit before auth: Timeout before auth
从公网 ssh 连接时,也会观察到类似的日志。在公网访问的情况下,wireshark 显示从源到 VM 的公网地址反复重传 ssh ACK,ARP 调用询问谁拥有源或 VM 的 ip 地址,最后,VM 发送 [FIN, ACK] 并关闭连接。
我已经设置了元数据服务器,并按照OpenStack 中的云实例无法导入公共 SSH 密钥,在启动过程中看到以下内容,http://pastebin.ubuntu.com/7676789/。(不确定这些是否重要:无法获取 http:// 169.254.169.254
/2009-04-04/user-data 警告:没有 user-data 的 ec2 元数据)为了隔离测试,我创建了一个新的安全组,允许所有 tcp 范围在入口和出口方向。在我看来,这不是防火墙或策略问题,因为可以连接到端口 22,我想知道启动期间是否生成了错误的元数据。任何和所有的建议都值得赞赏。干杯,
答案1
在我们的多节点环境中,问题最终是数据包碎片。解决方法是将计算节点和中子节点的管理网卡上的 mtu 增加到 1700,例如 ifconfig ethxxx mtu 1700
答案2
在我的 3 节点 openstack 实例 (ML2 - OpenVSwitch - GRE 隧道) 中,我必须将 MTU 设置为 1400。默认 MTU 为 1500。尝试各种 MTU 大小。
答案3
我在元数据方面遇到了类似的问题,我的解决方案是创建一个dnsmasq-neutron.conf
以以下内容命名的文件:
dhcp-option-force=26,1400
并将其指向/etc/neutron/dhcp_agent.ini
使用
dnsmasq_config_file=/etc/neutron/dnsmasq-neutron.conf
还要检查auth_region = regionOne
内部/etc/neutron/metadata_agent.ini
,在我的配置中它是用的r
,在元数据默认配置中它是用的R
。
答案4
问题:VM 节点无法通过 ssh 连接到物理节点,物理节点也无法通过 ssh 连接到 VM 节点,但所有节点之间均可 ping 通。物理节点上的 VM 可以成功通过 ssh 连接到彼此。
解决方案:
将虚拟机节点网卡 MTU 值从 改为1500
。1420
现在
虚拟机节点和物理节点可以互相 ssh 了。