Визуализация состояния сети Samba

Утилита samba-tool позволяет получать информацию о текущем состоянии сети Samba в графическом представлении, в том числе на языке Graphviz DOT, с помощью группы подкоманд visualize.

Результаты работы подкоманд могут использоваться для выявления проблем в работе репликации.

Общие параметры

Общие параметры вызова для всех подкоманд:

  • -H URL|--URL=URL — адрес сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; по умолчанию передается URL текущего хоста в формате ldap://<имя хоста>;

  • -o FILE|--output=FILE — сохранение результата вывода подкоманды в указанный файл;

  • --distance — вывод информации в формате матрицы, в строках и столбцах которой перечислены контроллеры домена, а в ячейках — числовые значения, соответствующие количеству шагов или величине отставания репликации (по умолчанию);

  • --utf8 — вывод информации в кодировке UTF-8;

  • --color-scheme=ansi|ansi-heatmap|xterm-256color|xterm-256color-heatmap|None — цветовая схема;

  • -S|--shorten-names — вывод общих имен (CN) вместо полных уникальных имен (DN);

  • -r|--talk-to-remote — отправка запросов в БД других контроллеров домена; опция обязательна для подкоманды uptodateness;

  • --no-key — отключение вывода поясняющей информации;

  • --color=yes|no — использование цветов в соответствии с выбранной цветовой схемой;

  • --dot — вывод информации о сети в виде графа, в котором контроллеры домена — это вершины, а соединения между ними — ребра, с использованием языка Graphviz DOT;

  • --xdot — вывод информации с использованием языка Graphviz DOT с попыткой запуска средства просмотра графов xdot.py (требуется предварительная установка xdot).

Визуализация соединений (объекты NTDSConnection)

Для визуализации соединений между контроллерами домена в сети Samba используется следующий формат вызова:

samba-tool visualize ntdsconn [options]

Подкоманда выводит информацию о соединениях между контроллерами домена, используемых для репликации всего каталога или отдельного его раздела, в виде графа, представленного матрицей, в которой столбцы и строки — это контроллеры домена, а ячейки содержат числа, соответствущие количеству шагов репликации:

  • 0 — в столбце и строке один и тот же контроллер домена;

  • 1 — прямая связь между двумя контроллерами домена;

  • 2 — транзитивная связь между двумя контроллерами домена, предусматривающая репликацию через промежуточный контроллер домена;

  • - — связь отсутствует.

Параметры

Параметры вызова:

  • --importldif=IMPORTLDIF — построение графа на основе данных в формате LDIF, сформированных samba_kcc.

Примеры

Пример визуализации соединений для контроллера домена в виде матрицы:

samba-tool visualize ntdsconn -S

NTDS Connections known to CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com

                      destination
                  ,--- *,CN=DC1+
                  |,-- *,CN=DC2+
           source ||,- *,CN=DC3+
        *,CN=DC1+ 011
        *,CN=DC2+ 101
        *,CN=DC3+ 110

'*' stands for 'CN=NTDS Settings'
'+' stands for ',CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com'

Data can get from source to destination in the indicated number of steps.
0 means zero steps (it is the same DC)
1 means a direct link
2 means a transitive link involving two steps (i.e. one intermediate DC)
- means there is no connection, even through other DCs

Пример визуализации соединений для контроллера домена в формате Graphviz DOT:

samba-tool visualize ntdsconn -S --dot --no-key

/* generated by samba */
digraph A_samba_tool_production {
label="NTDS Connections known to CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ad,DC=samdom,DC=example,DC=com";
fontsize=10;

node[fontname=Helvetica; fontsize=10];

"CN=NTDS Settings,\nCN=DC1,\n...";
"CN=NTDS Settings,\nCN=DC2,\n...";
"CN=NTDS Settings,\nCN=DC3,\n...";
"CN=NTDS Settings,\nCN=DC1,\n..." -> "CN=NTDS Settings,\nCN=DC2,\n..." [color="#000000", ];
"CN=NTDS Settings,\nCN=DC1,\n..." -> "CN=NTDS Settings,\nCN=DC3,\n..." [color="#000000", ];
"CN=NTDS Settings,\nCN=DC2,\n..." -> "CN=NTDS Settings,\nCN=DC1,\n..." [color="#000000", ];
"CN=NTDS Settings,\nCN=DC2,\n..." -> "CN=NTDS Settings,\nCN=DC3,\n..." [color="#000000", ];
"CN=NTDS Settings,\nCN=DC3,\n..." -> "CN=NTDS Settings,\nCN=DC1,\n..." [color="#000000", ];
"CN=NTDS Settings,\nCN=DC3,\n..." -> "CN=NTDS Settings,\nCN=DC2,\n..." [color="#000000", ];
}

Вывод подкоманды в графическом представлении:

visualize ntdsconn dot

Визуализация направлений репликации разделов каталога (объекты RepsTo и RepsFrom)

Атрибут схемы каталога RepsTo содержит записи со списками серверов, которые каталог уведомляет об изменениях, и серверов, на которые отправляются изменения по запросу в процессе репликации, для каждого раздела каталога.

Атрибут схемы каталога RepsFrom содержит записи со списками серверов, от которых каталог принимает изменения по каждому из разделов каталога.

Для визуализации содержимого атрибутов RepsTo и RepsFrom в сети Samba используется следующий формат вызова:

samba-tool visualize reps [options]

Подкоманда выводит записи из атрибутов RepsTo и RepsFrom для разделов каталога DOMAIN, SCHEMA, CONFIGURATION, DNSFOREST и DNSDOMAIN в виде графа, представленного матрицей, в которой столбцы и строки — это контроллеры домена, а ячейки содержат числа, соответствущие количеству шагов репликации:

  • 0 — в столбце и строке один и тот же контроллер домена;

  • 1 — прямая связь между двумя контроллерами домена;

  • 2 — транзитивная связь между двумя контроллерами домена, предусматривающая репликацию через промежуточный контроллер домена;

  • - — связь отсутствует.

Параметры

Параметры вызова:

  • -p PARTITION|--partition=PARTITION – раздел каталога, для которого требуется вывести записи атрибутов RepsTo и RepsFrom (по умолчанию выводятся записи для всех разделов).

Примеры

Пример визуализации направлений репликации для раздела DOMAIN в виде матрицы:

samba-tool visualize reps -S --partition=domain

RepsTo objects for DOMAIN
                 destination
          ,--- *,CN=DC1+
          |,-- *,CN=DC2+
   source ||,- *,CN=DC3+
*,CN=DC1+ 0--
*,CN=DC2+ 101
*,CN=DC3+ 110

'+' stands for ',CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com'

Data can get from source to destination in the indicated number of steps.
0 means zero steps (it is the same DC)
1 means a direct link
2 means a transitive link involving two steps (i.e. one intermediate DC)
- means there is no connection, even through other DCs

RepsFrom objects for DOMAIN
                 destination
          ,--- *,CN=DC1+
          |,-- *,CN=DC2+
   source ||,- *,CN=DC3+
*,CN=DC1+ 011
*,CN=DC2+ 101
*,CN=DC3+ 110

'+' stands for ',CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com'

Data can get from source to destination in the indicated number of steps.
0 means zero steps (it is the same DC)
1 means a direct link
2 means a transitive link involving two steps (i.e. one intermediate DC)
- means there is no connection, even through other DCs

Пример визуализации направлений репликации для раздела DOMAIN в формате Graphviz DOT:

samba-tool visualize reps -S --partition=domain --dot

/* generated by samba */
digraph A_samba_tool_production {
fontsize=10;

node[fontname=Helvetica; fontsize=10];

"CN=DC1,...";
"CN=DC2,...";
"CN=DC3,...";
"CN=DC1,..." -> "CN=DC2,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC1,..." -> "CN=DC3,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC2,..." -> "CN=DC1,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC2,..." -> "CN=DC3,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC3,..." -> "CN=DC1,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC3,..." -> "CN=DC2,..." [color="#3d4f7f", style="dotted"; arrowhead=empty];
"CN=DC2,..." -> "CN=DC1,..." [color="#3d4f7f", style="dotted"; arrowhead=open];
"CN=DC2,..." -> "CN=DC3,..." [color="#3d4f7f", style="dotted"; arrowhead=open];
"CN=DC3,..." -> "CN=DC1,..." [color="#3d4f7f", style="dotted"; arrowhead=open];
"CN=DC3,..." -> "CN=DC2,..." [color="#3d4f7f", style="dotted"; arrowhead=open];
}
...

Вывод подкоманды в графическом представлении:

visualize reps dot

Визуализация отставания репликации

Для визуализации отставания репликации на основе анализа векторов состояния (up-to-dateness vectors) в сети Samba используется следующий формат вызова:

samba-tool visualize uptodateness -r [options]

На каждом контроллере домена хранится структура, которая содержит максимальные порядковые номера обновления (USN), полученные при последней успешной попытке репликации изменений с остальных контроллеров в сети Samba. Это — векторы обновления (up-to-dateness vector). Если репликация работает корректно и отсутствуют проблемы сетевого взаимодействия, значения векторов обновления на контроллере домена находятся в актуальном состоянии, то есть последний доступный USN для каждого другого контроллера домена совпадает с собственным USN текущего контроллера. В обычном режиме работы в сети может иметь место небольшое отставание от значений векторов обновления. В случае возникновения проблем с репликацией это отставание увеличивается, что и позволяет отследить подкоманда uptodateness.

Параметры

Параметры вызова:

  • -p PARTITION|--partition=PARTITION — раздел каталога, для которого требуется вывести информацию об отставании (по умолчанию информация выводится для всех разделов);

  • --max-digits=MAXDIGITS — максимальная разрядность числа, соответствующего величине отставания для участвующих в репликации контроллеров домена; значение по умолчанию — 3 (максимальное отображаемое значение в этом случае — 999).

Примеры

Пример визуализации отставания репликации:

samba-tool visualize uptodateness -r -S --partition=DOMAIN

DOMAIN

                          out-of-date-ness
                     ,--- CN=DC1+
                     |,-- CN=DC2+
                DC   ||,- CN=DC3+
           CN=DC1+   000
           CN=DC2+   000
           CN=DC3+   000

'+' stands for ',CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com'