Керування мережею
Вступ
У деяких дистрибутивах Linux для надання користувачеві доступу до керування мережевими з’єднаннями використовується фонова служба NetworkManager. У KDE основними графічними інтерфейсами до NetworkManager є KNetworkManager (KDE3 і KDE4) та Керування з’єднаннями (плазмоїд KDE4).
Вади
Сповіщення про вади
Щоб створити корисне повідомлення про ваду у Керуванні мережею, вкажіть такі дані:
- версію вашого дистрибутива;
- Чи використовується NetworkManager? У деяких дистрибутивах використання цієї системи є необов’язковим, оскільки ця система непотрібна для статичних серверних систем. Якщо NetworkManager не використовується, повідомляти про ваду у ньому, ймовірно, не варто.
- версію аплету Керування мережею (NetworkManager-kde4.rpm у openSUSE, plasma-widget-network-manager у Kubuntu 9.04, plasma-widget-networkmanagment у Kubuntu 9.10, kde-plasma-networkmanagement у fedora)
- версію пакунка NetworkManager;
- версію пакунка ModemManager;
- архітектуру вашого комп’ютера, якщо це комп’ютер, несумісний з архітектурою x86. Користувач PPC? Авторам варто знати це.
- версію обладнання для роботи у мережі (скористайтеся командою lshal для отримання цих даних);
- записи журналу системи, що стосуються роботи NetworkManager під час спроби з’єднання;
- для openSUSE: /var/log/NetworkManager
- для kubuntu: /var/log/syslog
- для fedora: /var/log/messages
- Для бездротових мереж:
- Чи використовується прихований SSID?
- Тип захисту бездротової мережі: WEP/WPA-PSK/WPA-EAP?
- Довжина ключа.
- Тип ключа (пароль або шістнадцятковий ключ для WEP).
- Шифри (TKIP/AES).
- Механізми розпізнавання (TLS/TTLS/PEAP/...).
- Для мобільних широкосмугових мереж:
- обладнання;
- використані драйвери (отримати ці дані можна за допомогою dmesg під час виконання з’єднання);
- мережа, яка використовується;
- тип мережі (GSM/CDMA/UMTS);
- чи використовується apn.
- журнали ModemManager ("killall NetworkManager", "killall modem-manager", start "modem-manager --debug", "NetworkManager --no-debug") можуть бути корисними для визначення того, чи вдалося NetworkManager виявити ваше обладнання.
І дуже важливі дані: чи можете ви встановити з’єднання за допомогою іншої клієнтської програми? Наприклад, nm-applet у GNOME або cnetworkmanager у консолі. Якщо з’єднання можна встановити, будь ласка, спробуйте додати порівняльні відомості, описані наприкінці цієї статті.
Обробка повідомлень про вади
Керування мережею у більшості стільничних систем Linux є вершиною великого та дуже нестійкого стосу компонентів. Причиною цього є потреба у роботі у багатьох різних системах. Якщо спроба з’єднання зазнає невдачі, причиною цього може бути один або декілька елементів стосу, але повідомлення про невдачу, зазвичай, є подібними до «З’єднання встановлено на 28%, після чого спроба зазнала невдачі». Обробка повідомлень про вади на bugs.kde.org полягатиме у пошуках шару, на якому сталася помилка, так, щоб точно визначити відповідальний за помилку компонент.
Структура компонентів
Обладнання
У обладнанні для бездротового зв’язку є неочікувано багато вад. Якщо вам поталанить, ці вади можна виправити на наступному рівні.
Ядро
На цьому рівні працює справжній драйвер, що керує обладнанням. Тут також є багато доволі цікавих вад. З часу впровадження шару стандартного бездротового зв’язку MAC у ядро Linux ситуація з вадами покращується. Для частини обладнання не існує драйвера для Linux, користувачі керують ним за допомогою програми ndiswrapper, яка завантажує драйвери Windows і всі вади з ними пов’язані. Повідомлення драйвера можна знайти у журналі системи, обмінюватися даними з драйвером можна за допомогою набору програм iwtools.
Допоміжна програма (wpa_supplicant)
wpa_supplicant — низькорівнева програма для обміну даними з драйвером, яка забезпечує роботу можливостей розпізнавання та шифрування. Код цієї програми є відкритим і, загалом, досить високої якості. До створення NetworkManager користувачам доводилося налаштовувати програму вручну за допомогою файлів керування у каталозі /etc. Недосвідченим користувачам важко було налаштувати програму. Журнал програми можна, зазвичай, знайти за адресою /var/log/wpa_supplicant.log. У сучасних системах програмою віддалено керує...
NetworkManager
NetworkManager — фонова служба системи, яка перебуває у центрі підсистеми керування мережею у більшості стільничних системах Linux. Служба працює від імені адміністратора системи (користувача root), що потрібно для керування нижчими рівнями, і надає можливості керування з боку клієнта за допомогою системи D-Bus. Журнал служби записується до /var/log. Крім того, NM керує клієнтами DHCP за потреби і перезаписує файл /etc/resolv.conf власними даними щодо серверів DNS. Крім того, NetworkManager надає у розпорядження користувача модуль Системних параметрів, призначеним для читання (загальносистемних) файлів налаштування мережі вашого дистрибутива і надання отриманих даних NetworkManager.
Клієнтські програми
KNetworkManager — аплет KDE 4, Плазмоїд керування мережею у KDE 4, KNetworkManager у KDE 3, nm-applet у GNOME і cnetworkmanager, як остання надія. Ці програми відповідальні за
- надання користувачеві даних щодо стану роботи мережі системи,
- передавання повідомлень про дії користувача до NetworkManager
- та зберігання обміну даними щодо параметрів мережевого з’єднання користувача (правил) у NM.
Хоча ці програми є найпомітнішими частинами системи, вони є малозначущими для успішного встановлення з’єднання. Оскільки всі ці програми користуються стандартним інтерфейсом NetworkManager, вони є взаємозамінними.
Якщо щось не працює
Де шукати джерело негараздів?
Дуже просто. Почніть з вершити стосу і спускайтеся вниз. Якщо вам вдасться знайти щось, що працює, вам вдасться знайти джерело проблеми. Якщо всі внесені вами зміни не дадуть результату, передайте проблему на розгляд експерат (ймовірно, учасника відповідальної команди вашого дистрибутива Linux).
- Чи справді NetworkManager використовується у вашій системі? У Mandriva ця система не використовується. У Moblin використовується Connman.
- Спробуйте скористатися іншою клієнтською програмою NetworkManager. Якщо інша програма виявиться працездатною, перейдіть до наступного пункту і спробуйте локалізувати проблему у Керуванні мережею. Після цього звітуйте на bugs.kde.org щодо продукту «Network Management».
- Спробуйте налаштувати з’єдання за допомогою інструментів налаштування системи вашого дистрибутива, щоб Системні параметри отримали ці налаштування. Навряд чи це спрацює, але варто спробувати.
- Спробуйте налаштувати з’єднання за допомогою wpa_supplicant. Документація до програми доволі куца, але у ній є приклад налаштувань. Список підтримуваного обладнання наведено тут. Якщо сам wpa_supplicant працює, джерелом помилок є NetworkManager. Повідомте до вашого дистрибутива або до системи стеження за вадами bugs.freedesktop.org.
- Якщо це не спрацювало, змініть налаштування бездротового маршрутизатора так, щоб він використовував інший (слабший) тим шифрування або взагалі не використовував шифрування. Якщо після цього вдасться встановити з’єднання, проблемним є wpa_supplicant або драйвер. Яким би не було джерело проблеми, повідомте про нього до системи стеження за вадами вашого дистрибутива.
Це все кляте KDE!
Якщо ви читаєте ці рядки, вам вдалося встановити з’єднання за допомогою іншої клієнтської програми NetworkManager.
Спочатку переконайтеся, що у системі не працює інша клієнтська частина, не пов’язана з Керуванням мережею. Одночасна робота двох систем може призвести до непередбачуваних результатів. Якщо таку систему було запущено, вилучіть і перезапустіть Керування мережею. Якщо бажаєте, можете запустити систему з Плазми за допомогою команди
plasmoidviewer networkmanagement
Вам слід спробувати визначити, чим з’єднання, яке намагається встановити Керування мережею, відрізняється від з’єднання, яке встановлюється іншою клієнтською програмою. Якщо Керування мережею було зібрано з початкових кодів, ви можете скористатися програмою qdbusfornm, різновидом qdbus, можливості якого розширено для обробки типів даних NM.
Якщо програму не було зібрано з початкових кодів, просто замініть
./qdbusfornm --system
на
qdbus --system --literal
у командному рядку, наведеному нижче. Дані буде трошки важче читати, але їхня змістовність залишиться незмінною. Якщо ви скористалися командою
qdbus --system --literal
будь ласка, виправте форматування даних так, щоб у одному рядку було одне повідомлення, подібно до наведених нижче даних, виведених qdbusfornm. Виконати форматування дуже просто, крім того, ви зекономите час розробника.
Наведене нижче значення 0 відповідає з’єднанню. Змінюйте його, якщо у вашій системі декілька з’єднань, доки не буде виведено дані щодо потрібного вам з’єднання.
./qdbusfornm --system org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings/0 org.freedesktop.NetworkManagerSettings.Connection.GetSettings
виведе щось таке:
a{sa{sv}}(==802-11-wireless== band: bg mode: infrastructure security: 802-11-wireless-security ssid: opensuse-guest ==802-11-wireless-security== auth-alg: open key-mgmt: wpa-psk wep-tx-keyidx: 0 ==connection== autoconnect: true id: openSUSE type: 802-11-wireless uuid: {951cc7d9-1fa0-4525-9ab7-7199849e1b19} ==ipv4== dns-search: method: auto )
Тепер спробу з’єднання слід повторити за допомогою іншої клієнтської програми, яка є працездатною, потім скопіювати обидва набори виведених даних і долучити їх до звіту щодо вади на bugs.kde.org. На основі цих даних ваду буде швидко виправлено.
Аварійні завершення роботи
Якщо програма аварійно завершує роботу, встановіть пакунки символів для зневаджування і отримайте дані зворотного трасування. У Kubuntu вам слід додати сховище debug і встановити пакунок plasma-widget-networkmanagement-dbgsym.