Когда сеть к domU подключена через конфигурацию моста, открытое ssh-соединение с dom0 и domU одновременно случайным образом разрывает соединение dom0 (сброс соединения одноранговым узлом) и не позволяет мне вернуться.
Авторизация осуществляется с помощью ключей ssh. Какие-нибудь советы по решению этого вопроса?
РЕДАКТИРОВАТЬ: некоторые подробности об окружающей среде
dom0
# cat /proc/version Linux version 2.6.18-128.1.10.el5xen (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Thu May 7 11:07:18 EDT 2009
domU
# cat /proc/version Linux version 2.6.9-78.0.22.ELxenU (mockbuild@builder10.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-10)) #1 SMP Thu Apr 30 19:39:33 EDT 2009
Xen версии 3.1.2-128.1.10.el5
Важная деталь, которую я сначала забыл упомянуть: это происходит только тогда, когда dom0 имеет связанный с ним внешний IP.
Текущее решение: нет внешнего IP на dom0, доступ к dom0 через domU -> dom0 path. Это может быть относительно безопасно, если у вас есть отдельный domU, который ничего не делает, кроме предоставления этого маршрута. Я все еще могу подключиться к dom0 удаленно и при необходимости перезагрузить другие машины.
EDIT2: дополнительная информация о MAC-адресах на dom0
dom0
# ifconfig|grep HWaddr bond0 Link encap:Ethernet HWaddr 00:04:23:DC:28:60 bond0.100 Link encap:Ethernet HWaddr 00:04:23:DC:28:60 eth0 Link encap:Ethernet HWaddr 00:04:23:DC:28:60 eth1 Link encap:Ethernet HWaddr 00:04:23:DC:28:60 tap0 Link encap:Ethernet HWaddr 7E:CE:49:45:3F:2E vif4.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF vif4.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF vif22.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF xenbr0 Link encap:Ethernet HWaddr 00:04:23:DC:28:60 xenbr1 Link encap:Ethernet HWaddr 00:04:23:DC:28:60
Казалось бы, действительно есть проблема с дублированием MAC-адресов.
Основываясь на информации, которую вы предоставили до сих пор, я бы предположил, что проблема связана с дублированием MAC-адреса, а отключения могут быть связаны с коммутатором, через который проходит порт Ethernet.
Тем не менее, будет некоторое дублирование 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
Без подробностей, запрошенных другими в комментариях к вашему вопросу, я предполагаю, что это какая-то странная проблема с маршрутизацией, например, неправильно настроенный NAT.
Один из способов обходного решения - запустить sshd на другом порту в domU или dom0 и посмотреть, работает ли это. Если это исправит разрывы соединения, то это подтвердит предположение, что NAT настроен неправильно, поэтому запись в таблице преобразования для порта 22-в / из-domU затирается записью для порта-22-в / из-dom0. Не оставляйте это «исправление», если оно работает - вам нужно будет решить проблему маршрутизации, иначе это вызовет другие проблемы в будущем.
Этот обходной путь также может иметь желаемый эффект, если у вас есть дублирующиеся MAC-адреса, как предлагает Катриэль, поэтому сначала проверьте эту возможность.
Я делаю это несколько раз и знаю, что этот метод будет работать. К тому же вам вообще не нужно думать о портах. Чтобы подключиться к терминалу хоста из гостевой виртуальной машины, я должен выполнить следующие действия. Способ настройки xenserver заключается в том, что существуют ограничения на трафик порта. Я попытался изучить это и работать с управляемыми методами, но потом понял, что у меня есть другой вариант. Это требует, чтобы виртуальная машина, на которой вы работаете, имела внешнее подключение к сети, в которой находится хост. Управление с помощью статических IP-адресов - простой способ сделать это.
ДОПУЩЕНИЯ:
- "host_a" (содержит vm_a)
- "vm_a" имеет общий IP-адрес с host_a и настроен внешний ник.
- "host_b"
Вы узнаете, правильно ли настроено предположение 2, если вы можете подключаться по ssh к другим машинам в сети из виртуальной машины. Это необходимо, потому что именно так мы будем подключаться к host_a. Чтобы подключиться из сеанса ssh на VM_A, вы можете подключиться к HOST_B через ssh.
так что ваш терминал будет выглядеть примерно так.
[root@vm_a]$ssh root@host_b
[roo@host_b]#ssh root@host_a
Теперь мы сделали забавный кружочек и подключились к главному терминалу. Есть и другие способы прямого подключения путем портирования, но для меня 2 строчки проще.