Решено, но не совсем: Где лежит конфигурация сети? (ещё остался один вопрос)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

Здравствуйте.
У меня Debian squeeze + поставил кеды(может в них дело).
С чего всё началось: wi-fi автоматически не подключается к сети, хотя в апплете networkmanager-а галка стоит "подключаться автоматически"(извините за тавтологию).
Решил я посмотреть /etc/network/interfaces, а там только лупбэк:

Код: Выделить всё

root@server:/# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback


поиски wpa_supplicant.conf не дали ничего полезного

Код: Выделить всё

root@server:/# find / -name wpa_supplicant.conf
/etc/dbus-1/system.d/wpa_supplicant.conf


Код: Выделить всё

root@server:/# cat /etc/dbus-1/system.d/wpa_supplicant.conf
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
        <policy user="root">
                <allow own="fi.epitest.hostap.WPASupplicant"/>

                <allow send_destination="fi.epitest.hostap.WPASupplicant"/>
                <allow send_interface="fi.epitest.hostap.WPASupplicant"/>
        </policy>
        <policy group="netdev">
                <allow send_destination="fi.epitest.hostap.WPASupplicant"/>
                <allow send_interface="fi.epitest.hostap.WPASupplicant"/>
        </policy>
        <policy context="default">
                <deny own="fi.epitest.hostap.WPASupplicant"/>
                <deny send_destination="fi.epitest.hostap.WPASupplicant"/>
                <deny send_interface="fi.epitest.hostap.WPASupplicant"/>
        </policy>
</busconfig>


При этом NetworkManager знает параметры двух wi-fi сетей, к которым я уже подключался и подключается к ним по одному клику => где-то хранятся настройки и ключи.
Может вы подскажете где их искать(или как решить проблему с автоподключением).
Спасибо сказали:
MrClon
Сообщения: 838
ОС: Ubuntu 10.04, Debian 7 и 6

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение MrClon »

NetworkManager не использует /etc/network/*
На сколько я понимаю у него всё своё /etc/NetworkManager/
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

MrClon писал(а):
04.03.2012 23:15
NetworkManager не использует /etc/network/*
На сколько я понимаю у него всё своё /etc/NetworkManager/


Код: Выделить всё

root@server:/etc/NetworkManager# ls
dispatcher.d  NetworkManager.conf  system-connections  VPN
root@server:/etc/NetworkManager# cat NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false


ничего полезного

system-connections - пустая папка
Спасибо сказали:
MrClon
Сообщения: 838
ОС: Ubuntu 10.04, Debian 7 и 6

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение MrClon »

А у меня как-раз в system-connections настройки соединений (у меня ubuntu). Видимо индивидуальные для пользователя настройки где-то в ~ хранятся, вот только у себя ничего подходящего не нашёл.
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

MrClon писал(а):
04.03.2012 23:38
А у меня как-раз в system-connections настройки соединений (у меня ubuntu). Видимо индивидуальные для пользователя настройки где-то в ~ хранятся, вот только у себя ничего подходящего не нашёл.


в ~ тоже вроде ничего толкового нет.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение SLEDopit »

Небольшой оффтоп:
нетворкманагер никогда не славился стабильной надёжной работой. попробуйте какой-нибудь wicd. оно хоть и тоже глючит безбожно, но с ним хотя бы работать можно.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sash-kan »

igsilya писал(а):
04.03.2012 22:40
где-то хранятся настройки и ключи
настройки не хранятся·
хранится состояние·
где-то в районе /var/lib/blablabla·
лезть туда руками смысла не имеет: network-manager — это вам не unix-way (и уж тем более не kiss)·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sgfault »

igsilya писал(а):
05.03.2012 00:11
MrClon писал(а):
04.03.2012 23:38
А у меня как-раз в system-connections настройки соединений (у меня ubuntu). Видимо индивидуальные для пользователя настройки где-то в ~ хранятся, вот только у себя ничего подходящего не нашёл.


в ~ тоже вроде ничего толкового нет.

Они действительно хранятся в другом месте.
За системные настройки отвечает сервис, запущенный по адресу org.freedesktop.NetworkManagerSystemSettings на системной шине DBus. Этим сервисов, скорей всего, будет сам демон NetworkManager:

Код: Выделить всё

$ dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:'org.freedesktop.NetworkManagerSystemSettings'
method return sender=org.freedesktop.DBus -> dest=:1.49 reply_serial=2
   uint32 1555
$ ps -ef | grep 1555
root      1555     1  0 10:48 ?        00:00:01 /usr/sbin/NetworkManager

Для хранения настроек сервис использует плагины, указанные в параметре 'plugins' секции '[main]' из конфига /etc/NetworkManager/NetworkManager.conf. Те чтением и записью настроек занимаются плагины, а не сам сервис, и, соответственно, выбранные плагины и определяют, где все это будет записано. На дебиане, обычно, используется два плагина:

Код: Выделить всё

$ grep /etc/NetworkManager/NetworkManager.conf -e plugins
plugins=ifupdown,keyfile

Первый плагин читает настройки из файла '/etc/network/interfaces', но он не может их записывать. Для этого используется второй плагин, который записывает их в '/etc/NetworkManager/system-connections/'.

За пользовательские настройки отвечает сервис, запущенный по адресу org.freedesktop.NetworkManagerUserSettings на обоих (системной и для сессии) шинах DBus. Обычно, это nm-applet:

Код: Выделить всё

$ dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:'org.freedesktop.NetworkManagerUserSettings'
method return sender=org.freedesktop.DBus -> dest=:1.51 reply_serial=2
   uint32 2395
$ ps -ef | grep 2395
sgf       2395  2297  0 10:50 ?        00:00:00 nm-applet --sm-disable

Он хранит свои настройки в gconf. На диске соответствющие файлы вы можете найти в

Код: Выделить всё

$ ll ~/.gconf/system/networking/connections/
total 32
drwx------ 6 sgf sgf 4096 Aug 19  2011 1
drwx------ 6 sgf sgf 4096 Aug 19  2011 2
drwx------ 6 sgf sgf 4096 Aug 19  2011 3
drwx------ 7 sgf sgf 4096 Sep 17 12:38 4
drwx------ 6 sgf sgf 4096 Jan  2 14:46 5
drwx------ 6 sgf sgf 4096 Jan  3 19:37 6
drwx------ 6 sgf sgf 4096 Jan  4 20:11 7
drwx------ 6 sgf sgf 4096 Jan  6 19:30 8
-rw------- 1 sgf sgf    0 Aug 19  2011 %gconf.xml

Также, вы можете посмотреть их с помощью

Код: Выделить всё

$ gconftool-2 --all-dirs  /system/networking/connections
 /system/networking/connections/1
 /system/networking/connections/2
 /system/networking/connections/3
 /system/networking/connections/4
 /system/networking/connections/5
 /system/networking/connections/6
 /system/networking/connections/7
 /system/networking/connections/8
$ gconftool-2 -R  /system/networking/connections/1
 /system/networking/connections/1/ipv4:
  addresses = [218103818,8,0]
  name = ipv4
  dns = []
  routes = []
  method = manual
 /system/networking/connections/1/ipv6:
  addresses = []
  name = ipv6
  dns = []
  routes = []
  method = ignore
 /system/networking/connections/1/connection:
  uuid = c59eab95-823e-401e-bd1e-f74d77a0e6d6
  name = connection
  id = AusLinx default
  type = 802-3-ethernet
  autoconnect = false
  timestamp = 1315595038
 /system/networking/connections/1/802-3-ethernet:
  name = 802-3-ethernet
  duplex = full

Или воспользовать графическим gconf-editor (из одноименного пакета).
Все остальные подробности вы найдете тут NetworkManager/SystemSettings.
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

В принципе всё понятно.
Всем спасибо за ответы.
Но вопрос об автоподключении остался открытым.
В .gconf/system/networking/connections/1/connection/%gconf.xml лежит конфиг сети в формате xml.
В нем в отличие от вашего нет поля autoconnect и ручное его туда добавление не приносит никаких результатов.
За пользовательские настройки у меня отвечает knetworkmanager.

Код: Выделить всё

~$ gconftool-2 -R  /system/networking/connections/1
 /system/networking/connections/1/ipv4:
  addresses = []
  name = ipv4
  dns = []
  routes = []
  method = auto
 /system/networking/connections/1/ipv6:
  addresses = []
  name = ipv6
  dns = []
  routes = []
  method = ignore
 /system/networking/connections/1/802-11-wireless:
  name = 802-11-wireless
  mode = infrastructure
  seen-bssids = [84:c9:b2:fe:55:4a]
  ssid = [84,111,112,83,101,99,114,101,116,66,111,116,78,101,116]
  security = 802-11-wireless-security
 /system/networking/connections/1/connection:
  autoconnect = true
  name = connection
  id = Auto TopSecretBotNet
  uuid = 06197c73-d992-475e-858e-09d345709a9a
  type = 802-11-wireless
  timestamp = 1328789622
 /system/networking/connections/1/802-11-wireless-security:
  name = 802-11-wireless-security
  key-mgmt = wpa-psk


к тому же удалось обнаружить конфиг только для одной сети, а мэнеджер знает о существовании как минимум двух.

Код: Выделить всё

~$ gconftool-2 --all-dirs  /system/networking/connections
 /system/networking/connections/1
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sgfault »

igsilya писал(а):
05.03.2012 20:57
В принципе всё понятно.
Всем спасибо за ответы.
Но вопрос об автоподключении остался открытым.
В .gconf/system/networking/connections/1/connection/%gconf.xml лежит конфиг сети в формате xml.
В нем в отличие от вашего нет поля autoconnect и ручное его туда добавление не приносит никаких результатов.

Там не надо ничего редактировать вручную - для этого есть gconftool-2. Насколько я это понимаю, демон gconfd не будет перечитывать конфиги и то, что вы туда написали. Если вы хотите ему что-то сообщить, то это надо делать с помощью gconftool-2 и подобных средств, а конфиги исправит уже сам демон, когда он получит "сообщение" от gconftool-2.

Код: Выделить всё

$ gconftool-2 -s --type=bool /system/networking/connections/1/connection/autoconnect 'False'
$ gconftool-2 -R /system/networking/connections/1 | grep autocon
  autoconnect = false


igsilya писал(а):
05.03.2012 20:57
За пользовательские настройки у меня отвечает knetworkmanager.
<..>
к тому же удалось обнаружить конфиг только для одной сети, а мэнеджер знает о существовании как минимум двух.

Код: Выделить всё

~$ gconftool-2 --all-dirs  /system/networking/connections
 /system/networking/connections/1

Покажите вывод

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerSystemSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections
$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

Код: Выделить всё

~$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerSystemSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections
method return sender=:1.4 -> dest=:1.60 reply_serial=2
   array [
      object path "/org/freedesktop/NetworkManagerSettings/0"
   ]
~$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections
method return sender=:1.28 -> dest=:1.61 reply_serial=2
   array [
      object path "/org/freedesktop/NetworkManagerSettings/0"
      object path "/org/freedesktop/NetworkManagerSettings/1"
      object path "/org/freedesktop/NetworkManagerSettings/2"
   ]


только относительно чего эти адреса?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sash-kan »

igsilya писал(а):
05.03.2012 23:40
только относительно чего эти адреса?
относительно корня иерархии адресного пространства dbus-а·
(надеюсь, в терминах не очень ошибся)·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

Код: Выделить всё

gconftool-2 -s --type=bool /system/networking/connections/1/connection/autoconnect 'True'

эффекта никакого.
значение меняется, а поведение - нет.
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

И вообще gconf больно напоминает гномовский сервис (буква g в начале смущает), а у меня вроде как кеды.
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sgfault »

igsilya писал(а):
06.03.2012 00:07
И вообще gconf больно напоминает гномовский сервис (буква g в начале смущает), а у меня вроде как кеды.

Упс, я это как-то пропустил ) Это и есть гномовский сервис.

Хм.. Ну ладно, вы попробуйте на всякий случай проверить, изменяются ли настройки в DBus-е после изменения в gconf. Для этого посмотрите id подключения в gconf-е:

Код: Выделить всё

$ gconftool-2 -R /system/networking/connections | grep -e id -e'/[[:digit:]]/connection'

затем эта команда покажет (если я нигде не ошибся) id подключений, известных сервису NetworkManagerUserSettings, и адреса соответствующих объектов:

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections | xargs -L1 sh -c '[ $# != 3 ] && exit 0; echo "$3"; dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings "$3" org.freedesktop.NetworkManagerSettings.Connection.GetSettings' sh  | sed -ne'/"id"/{ N; p; };/^\//p'

После того, как вы найдете нужный вам объект (подключение) в DBus-е, вы можете попробовать включить/выключить autoconnect (через gconftool-2) и посмотреть настройки этого подключения (в DBus-е). Когда autoconnect _выключен_, в настройках должно быть

Код: Выделить всё

            dict entry(
               string "autoconnect"
               variant                   boolean false
            )

когда он включен, не должно быть ничего. Чтобы посмотреть настройки нужного подключения (допустим, это /org/freedesktop/NetworkManagerSettings/0) используйте команду

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings/0 org.freedesktop.NetworkManagerSettings.Connection.GetSettings
Спасибо сказали:
igsilya
Сообщения: 80
ОС: Debian squeeze 6.0

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение igsilya »

команда

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections | xargs -L1 sh -c '[ $# != 3 ] && exit 0; echo "$3"; dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings "$3" org.freedesktop.NetworkManagerSettings.Connection.GetSettings' sh  | sed -ne'/"id"/{ N; p; };/^\//p'

действительно показала мне все подключения имеющиеся в системе.

Но в параметрах стоит

Код: Выделить всё

dict entry(
               string "autoconnect"
               variant                   boolean true
            )


команды через gconf на это значение не влияют.
при этом самого автоподключения не происходит.


ещё один занимательный факт.
Подключение имеет wpa2-psk аутентификацию, но в параметрах подключения(в GUI knetworkmanager-а) security написано none.
Да и в конфигах я не видел ни слова о ключе. При этом если в этом же самом менеджере кликнуть на подключение, то он спокойно подключается.
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено, но не совсем: Где лежит конфигурация сети?

Сообщение sgfault »

igsilya писал(а):
06.03.2012 01:11
команда

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections | xargs -L1 sh -c '[ $# != 3 ] && exit 0; echo "$3"; dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings "$3" org.freedesktop.NetworkManagerSettings.Connection.GetSettings' sh  | sed -ne'/"id"/{ N; p; };/^\//p'

действительно показала мне все подключения имеющиеся в системе.

Команда вам показала только пользовательские подключения (в ней запросы отправляются сервису org.freedesktop.NetworkManagerUserSettings). Но это так, просто уточнение.

igsilya писал(а):
06.03.2012 01:11
Но в параметрах стоит

Код: Выделить всё

dict entry(
               string "autoconnect"
               variant                   boolean true
            )

Ясно. Видимо, другой сервис (knetworkmanager вместо nm-applet) немного по-другому записывает настройки. Это, в общем-то, не так и важно.

igsilya писал(а):
06.03.2012 01:11
команды через gconf на это значение не влияют.

Да, видимо, так и должно быть.

igsilya писал(а):
06.03.2012 01:11
при этом самого автоподключения не происходит.

В общем случае, у вас есть два варианта: сделать все подключения системными (поставить где-то в ГУИ галочку "Available to all users" или что-то похожее), или пытаться искать где и как knetworkmanager хранит свои настройки (видимо, какой-то KDE-шный сервис аналог gconf?). В первом случае, вы получите настройки, независящие от ДЕ (тк они будут храниться в файлах в папке '/etc/NetworkManager/system-connections'), и работающие подключения при выключенных X-ах. Во-втором случае, вы получите работающие подключения только для вашего пользователя, только при запущенной x-сессии. А также очередную интересную задачку "как пофиксить NM". :happy:

igsilya писал(а):
06.03.2012 01:11
ещё один занимательный факт.
Подключение имеет wpa2-psk аутентификацию, но в параметрах подключения(в GUI knetworkmanager-а) security написано none.
Да и в конфигах я не видел ни слова о ключе. При этом если в этом же самом менеджере кликнуть на подключение, то он спокойно подключается.

Если вы выбираете второй вариант, то начните с того, что проверьте, что именно knetworkmanager предоставляет сервис по адресу org.freedesktop.NetworkManagerUserSettings (весь вывод выкладывайте сюда):

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:'org.freedesktop.NetworkManagerUserSettings' | sed -ne'2s/.* //p' | xargs ps -f

затем выложите полные настройки из DBus-а для того подключения, которое вы пытаетесь настроить. Используя команду из сообщения 15:

Код: Выделить всё

$ dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings /org/freedesktop/NetworkManagerSettings org.freedesktop.NetworkManagerSettings.ListConnections | xargs -L1 sh -c '[ $# != 3 ] && exit 0; echo "$3"; dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings "$3" org.freedesktop.NetworkManagerSettings.Connection.GetSettings' sh  | sed -ne'/"id"/{ N; p; };/^\//p'

определите путь к объекту (по id) соответствующему нужному подключению. Затем выложите полные настройки для этого подключения - в команде ниже нужный путь должен быть последним аргументом. Например, если путь к объекту /org/freedesktop/NetworkManagerSettings/0, то выглядеть это будет так:

Код: Выделить всё

$ sh -c 'eval "dbus-send --print-reply --system --dest=org.freedesktop.NetworkManagerUserSettings \"\$$#\" org.freedesktop.NetworkManagerSettings.Connection.GetSettings"' sh /org/freedesktop/NetworkManagerSettings/0

А потом.. потом надо было бы попробовал поменять значение autoconnect через DBus, но я еще не знаю, как это сделать (похоже dbus-send не позволяет посылать вложенные контейнеры в запросе).
Спасибо сказали: