当通过桥接配置连接网络到 domU 时,同时打开到 dom0 和 domU 的 ssh 连接会随机断开 dom0 连接(对等方重置连接)并且不允许我重新登录。
授权是通过 ssh 密钥完成的。有什么解决方法吗?
编辑:有关环境的更多细节
dom0
# 猫/proc/版本 Linux 版本 2.6.18-128.1.10.el5xen ([电子邮件保护]) (gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP 2009 年 5 月 7 日星期四 11:07:18 EDT
域名
# 猫/proc/版本 Linux 版本 2.6.9-78.0.22.ELxenU([电子邮件保护]) (gcc 版本 3.4.6 20060404 (Red Hat 3.4.6-10)) #1 SMP 2009 年 4 月 30 日星期四 19:39:33 EDT
Xen 版本 3.1.2-128.1.10.el5
我首先忘记提及的重要细节:仅当 dom0 具有关联的外部 IP 时才会发生这种情况。
当前解决方案:dom0 上没有外部 IP,通过 domU -> dom0 路径访问 dom0。当有一个单独的 domU 只提供此路由时,这可能相对安全。我仍然可以远程连接到 dom0 并在需要时重新启动其他机器。
EDIT2:有关 dom0 上的 MAC 地址的其他信息
dom0
# ifconfig|grep HWaddr bond0 链路封装:以太网 HWaddr 00:04:23:DC:28:60 bond0.100 链路封装:以太网 HWaddr 00:04:23:DC:28:60 eth0 链路封装:以太网 HWaddr 00:04:23:DC:28:60 eth1 链路封装:以太网 HWaddr 00:04:23:DC:28:60 tap0 链路封装:以太网 HWaddr 7E:CE:49:45:3F:2E vif4.0 链路封装:以太网 HWaddr FE:FF:FF:FF:FF:FF vif4.1 链路封装:以太网 HWaddr FE:FF:FF:FF:FF:FF vif22.0 链路封装:以太网 HWaddr FE:FF:FF:FF:FF:FF xenbr0 链路封装:以太网 HWaddr 00:04:23:DC:28:60 xenbr1 链路封装:以太网 HWaddr 00:04:23:DC:28:60
看起来重复 MAC 地址确实存在一些问题。
答案1
根据您目前提供的信息,我认为问题在于 MAC 地址重复,而断开连接可能是由于以太网端口所经过的交换机造成的。
也就是说会有一些 MAC 地址重复。我刚刚检查了我正在使用的一台 Xen 服务器,当我运行以下命令时,我得到了以下结果:ifconfig | grep HWaddr
eth0 Link encap:Ethernet HWaddr 00:E0:81:2D:66:AC
eth1 Link encap:Ethernet HWaddr 00:E0:81:2D:66:AD
peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
peth1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
vif0.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
vif31.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
vif31.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
这是在 RHEL5 Xen 3.0.3 服务器上,所以我假设接口差异是基于 3.0.3 和 3.1.2 之间的变化。除此之外,您可以看到我的 eth0 和 eth1 接口是不同的 MAC 地址,而您的接口是相同的。pethX 和 vifX.X 条目都是 Xen 的虚拟接口,因此 MAC 地址 FE:FF:FF:FF:FF:FF 完全没问题。
xenbr0 是 eth0 连接的网桥,xenbr1 是 eth1 的网桥,使用相同的 MAC 地址。virbr0 接口是内部虚拟网络的网桥,由于启用了生成树协议,因此 MAC 地址为 00:00:00:00:00:00。您可以通过运行以下命令来确认系统上的桥接,运行后brctl show
应显示以下内容:
bridge name bridge id STP enabled interfaces
virbr0 8000.000000000000 yes
xenbr0 8000.feffffffffff no vif31.0
peth0
vif0.0
xenbr1 8000.feffffffffff no vif31.1
peth1
vif0.1
答案2
由于没有其他人在您的问题评论中要求的详细信息,我猜测是一些奇怪的路由问题,例如错误配置的 NAT。
可以尝试的一种解决方法是在 domU 或 dom0 中的不同端口上运行 sshd,看看是否有效。如果此方法可以解决连接断开问题,则将支持以下建议:NAT 设置错误,因此 port-22-to/from-domU 的转换表条目会被 port-22-to/from-dom0 的条目破坏。不过,如果此“修复”有效,请不要将其保留在原处 - 您需要解决路由问题,否则会导致其他问题。
如果您有重复的 MAC 地址,此解决方法也可能会产生预期的效果,正如 katriel 所建议的那样,因此请先检查这种可能性。
答案3
我做了很多次,知道这个方法会起作用。另外,您根本不需要考虑端口。要从挂载到的 vm guest 连接到主机的终端,我执行以下操作。xenserver 的设置方式是限制端口流量。我尝试学习这一点并尝试使用托管方法,但后来意识到我还有另一种选择。它要求您操作的 vm 与主机所在的网络建立外部连接。通过静态 ip 进行管理是一种简单的方法。
假设:
- “host_a”(包含vm_a)
- “vm_a”与host_a共享ip,并且配置了外部网卡。
- “主机_b”
如果您可以从虚拟机通过 ssh 连接到网络上的其他计算机,则说明假设 2 已正确配置。这是必需的,因为我们将通过这种方式连接到“host_a”。要从 VM_A 上的 ssh 会话进行连接,您可以 ssh 到 HOST_B。
你的终端看起来会像这样。
[root@vm_a]$ssh root@host_b
[roo@host_b]#ssh root@host_a
现在我们已经制作了一个有趣的小圆圈,并连接到主机终端。还有其他方法可以通过移植直接连接,但 2 条线对我来说更简单。