XDMCP и GDM3

Автор nixsystem, 01 января 2014, 19:48:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

nixsystem

Доброго времени суток, коллеги.
Прежде всего хочу поздравить всех вас с Новым Годом, пожелать успехов как личных так и профессиональных, а форуму, который неоднократно помогал советом - дальнейшего развития =)

Как не сложно догадаться, пишу я не только из-за желания поздравить форумчан, но и по причине необходимости помощи в поиске/устранении проблемы.
Краткое содержание проблемы: не получается заставить корректно работать XDMCP на GDM3 под Wheezy (архитектура amd64).

Особый интерес в его работе представляет возможность Indirect подключений, к серверу терминалов. Прямые запросы работают нормально, моментально открывается DM и предлагает авторизоваться. При попытке подключиться Indirect запросом - к тому же серверу, отрисовывается  фоновая картинка и на ней появляется пустое окно выбора сервера для подключения. Окно не откликается на попытки его передвинуть по экрану и нажатия клавиш. Соответственно выбрать нужный сервер для подключения (их 2 идентичных) не удается.

Что было сделано/опробовано, какие результаты были получены:
Мучение Google запросами на тему "gdm3" "indirect" "xdmcp"
   - в результате нашел несколько сообщений и ссылку на баг
Затем проверил и убедился, что у меня (сейчас все это работает на VirtulBox'e) действительно XDMCP запросы GDM слушает на udp6,а не на udp
Попробовал несколько методов отключения поддержки ipv6, но либо я не так что-то делал, либо методы не помогали. В итоге было пересобрано ядро с отключенным модулем поддержи ipv6 сетей.
   - результат - действительно после пересборки ядра xdmcp начал принимать запросы на udp:177, а о udp6:177 - благополучно забыл.
После этих действий подключение и отправка запросов проходили успешно (а именно Query и Willing), но дальше, при выборе сервера для подключения машина посредник (Desctop Manager) пытается договориться с клиентом и сервером о соединении. С клиентом - договаривается, а с сервером (конечным устройством, где и будет выводиться экран) - нет, потому что пытается с ним связаться по адресам совершенно не походим на реальные (к примеру у меня в сеть 192.168.1.0/24, а DM  пытается отправить Forwarding query серверу по адресу 104.203.82.9)

В данный момент я застрял на этом этапе и уже несколько дней мои попытки разораться не приносят результатов.

Сознательно не выкладываю никаких конфигураций и параметров/настроек, чтобы не превращать пост в простыню. Готов по первому же запросу выдать всю необходимую информацию.

Заранее благодарен всем участникам форума за любую помощь или идею.

Malaheenee

nixsystem, на виртуалке, говорите? А как там сеть настроена?
[ot]С удовольствием прочли, что такое XDMCP :)[/ot]
Все мы где-то, когда-то и в чем-то были новичками.

nixsystem

На всех виртуалках настроен сетевой мост в реальную сеть. Сеть управляется маршутером Sagemcom F@st 2804, v7 предоставленным провайдером. В каждой виртуалке в hosts прописаны остальные машины (по причине отсутствия внутреннего DNS сервера).

Malaheenee

Нутром чуем, что проблема где-то в настройках сети. Ситуация возникает при использовании только GDM3? Если попробовать lightdm (вместе gtk-greeter)?
Все мы где-то, когда-то и в чем-то были новичками.

nixsystem

Lightdm устанавливал, он работал в этой же сети с неизменными настройками нормально. Сессии открывались, заходил "удаленно"в систему в графическом режиме. Работал весьма шустро и стабильно, вот только он не поддерживает нужного мне функционала.
На всех виртуалках - живой интернет, они спокойно обновляются и устанавливают пакеты из репозиториев. Так же они видны друг для друга как минимум ping запросами и могут подключаться друг к другу по SSH (так же, как и хостовая машина может подключаться к ним).

Malaheenee

#5
А какие функции Вам нужны, если не секрет?
Посмотрели исходники gdm - матерь божья, части для работы с xdmcp написаны в 2007-2008. Патчей полно. В одном из них серьезно патчат работу с xdmcp. Мы бы попробавли параметр <key>xdmcp/ShowLocalGreeter</key> в файле gdm.schemas поставить в false.

Сообщение объединено: 01 января 2014, 21:12:31

Точнее, его настройку ([xdmcp] ShowLocalGreeter=false) в /etc/gdm/custom.conf или где там сейчас gdm настраивается.
Все мы где-то, когда-то и в чем-то были новичками.

nixsystem

Совершенно не секрет. Нужна возможность для пользователя, который сидит перед тонким клиентом (TC) выбрать сервер (TS) из списка доступных серверов. В таком случае тонкий клиент подключается к Менеджеру рабочих столов (DM), который опрашивает сеть и находит активные XDMCP сервера (TS). Это позволяет, например, иметь несколько инстансов терминальных серверов и легко переключаться между ними, без необходимости перенастройки самого тонкого клиента.

Я в исходниках gdm-3.4.1 нигде не нашел упоминания такой опции. На машинах ее выставил, какого-либо заметного эффекта опция не дала.

Malaheenee

#7
Ой, это мы для версии 3.8.4 посмотрели  ::)

??? Если не принципиален Wheezy, имеет смысл попробовать testing - хотя бы только на посреднике.
Все мы где-то, когда-то и в чем-то были новичками.

nixsystem

Нет, принципиального момента нет совершенно, единственное требование - стабильность. Предыдущий сервер проработал 6 лет без остановки, только дважды винты меняли. Поэтому выбор пал именно на Wheezy.
К слову сказать, на третьей VM устновлен gentoo c gdm 2.20 и там он работает нормально. К нему можно подключиться, он видит другие сервера, но вот при попытке с него выбрать какой-то другой сервер из списка - получаем черный экран.
Основная цель, в настоящий момент не столько сделать так чтобы работало, а разобраться почему то, что работало раньше - не работает сейчас (в ветке обсуждения бага xdmcp на Debian.org видел комментарии о сокращении функционала, может оно так и есть)

Обновил sources.list обновляю gdm до 3.8, говорит будет готово через 15 минут с моим интернетом.


Malaheenee

nixsystem, проблем хапнуть можно и на стабильной ветке. У нас вот уже более двух лет без переустановок (тьфу-тьфу) unstable, ломают что-то большое редко (и то обычно чинят в течение двух-трех дней).
Все мы где-то, когда-то и в чем-то были новичками.

nixsystem

На одной из машин обновил gdm до версии 3.8.4-6.
Результаты следующие, попытка подключиться к обновленной машине с другой(не обновленной), где установлен gdm 3.4.1 как прямым, так и indirect запросом ни к чему, кроме черного экрана и курсора "Х" и вывода в консоль таких сообщений не приводит
Открыть содержимое (спойлер)

~$ Xephyr :2 -query dm01
_XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
_XSERVTransOpen: transport open failed for inet6/test2:2
_XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
XDMCP warning: INET6 UDP socket creation failed
[dix] Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
[dix] Could not init font path element /var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType, removing from list!
[mi] EQ overflowing.  Additional events will be discarded until existing events are processed.

Backtrace:
0: Xephyr (xorg_backtrace+0x36) [0x7fd9db435786]
1: Xephyr (mieqEnqueue+0x26b) [0x7fd9db36851b]
2: Xephyr (0x7fd9db2a9000+0x73a52) [0x7fd9db31ca52]
3: Xephyr (0x7fd9db2a9000+0x97200) [0x7fd9db340200]
4: Xephyr (0x7fd9db2a9000+0x976f7) [0x7fd9db3406f7]
5: Xephyr (0x7fd9db2a9000+0x39be4) [0x7fd9db2e2be4]
6: Xephyr (0x7fd9db2a9000+0x97835) [0x7fd9db340835]
7: Xephyr (BlockHandler+0x4a) [0x7fd9db30cd6a]
8: Xephyr (WaitForSomething+0x114) [0x7fd9db432b44]
9: Xephyr (0x7fd9db2a9000+0x5fd01) [0x7fd9db308d01]
10: Xephyr (0x7fd9db2a9000+0x37865) [0x7fd9db2e0865]
11: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xfd) [0x7fd9d8932ead]
12: Xephyr (0x7fd9db2a9000+0x37b3d) [0x7fd9db2e0b3d]

[mi] These backtraces from mieqEnqueue may point to a culprit higher up the stack.
[mi] mieq is *NOT* the cause.  It is a victim.
[mi] Increasing EQ size to 512 to prevent dropped events.
[mi] EQ processing has resumed after 4 dropped events.
[mi] This may be caused my a misbehaving driver monopolizing the server's resources.
[свернуть]

Прямое подключение (с обновленной VM на не обновленную) проходит нормально, появляется окно логина, можно войти в систему.
Indirect подключение в том же направлении - проходит так:
Открыть содержимое (спойлер)
    сначала черный экран с курсором "Х"
    через несколько секунд окно Xephyr разворачивается до размеров окна DM появляется фон
    еще через 10-20 секунд появляется пустое окно выбора доступных TS, в таком положении может висеть до минуты
    затем снова черный экран, фоновое изображение, появляется окно выбора, в нем есть два TS (тот к которому подключаюсь и с которого подключаюсь, т.к. оба "отзываются на запросы") но окно выбора не реагирует на нажатия/перемещения
    снова черный экран, снова загружается окно выбора, на этот раз можно выбрать TS и нажать "Подключиться"
    если в окне выбора TS выбрать не обновленную машину, то подключение успешно произойдет
    если в качестве TS выбрать ту же машину, на которой отображается список выбора (обновленную) - получим черный экран
    вне зависимости от выбора подключение не происходит, все остается на стадии черного окна с "Х" курсором
[свернуть]