LINUX.ORG.RU
ФорумTalks

NetworkManager не готов

 , ,


1

1

Подключил к своему компу телефон HTC с андроидом. Нажал на телефоне на кнопку для включения reverse tethering over usb, чтобы на телефоне пользоваться интернетом с компа. NetworkManager на удивление увидел телефон, создался интерфейс usb0, NM получил по DHCP IP-адрес от сервера на телефоне. Но на этом всё и закончилось. Андроид упорно не видел, что подключение состоялось, а NM не настроил NAT в iptables для раздачи интернета.

Оказалось, что телефон ожидает магической последовательности байт на порту 6000 от компа, означающей, что комп подключился и раздаёт интернет. Ладно, допустим, можно написать соответствующий скрипт и вызывать его при поднятии подключения — для этого в убунте был плагин к NM (хоть я и без понятия, как им пользоваться на других дистрибутивах, но думаю, с этим можно разобраться). Проблему здесь вызывает только меняющийся каждый раз IP-адрес телефона, но его можно выдернуть из /var/lib/dhclient/dhclient-*-usb0.lease.

С iptables всё хуже: здесь неправильно аналогичным скриптом в if-up.d настраивать NAT, потому что NM тоже меняет iptables и ничего не знает о внесённых нами изменениях. Кажется, в настоящее время NM не трогает чужие записи в iptables, но было бы неплохо иметь возможность в настройках поставить галочку «раздавать интернет» независимо от настроек IP-адреса, а сейчас есть возможность раздавать интернет через NM только тогда, когда этот же комп назначает себе адрес 10.42.0.1 (который, кстати, никак не поменять) и является DHCP-сервером в сети, куда раздаётся интернет, что не соответствует данной ситуации.

Ещё хуже с DUN over bluetooth. Мой телефон Nokia не поддерживает одну из AT-команд, которые посылает ему NM, поэтому соединение не удаётся. И никак это не исправить (кроме как пропатчить modem-manager у себя локально, что я и делал, когда мне это было нужно), потому что настроек посылаемых AT-команд у NetworkManager'а нет. Да они же были даже в Windows XP (а, может быть, и гораздо раньше, этого не помню). Видимо, разработчики NM решили пойти по стопам GNOME и даже обойти его: они не выпиливают нужные фичи, они их просто изначально не запиливают и не собираются.

Совсем плохо с раздачей интернета через Wi-Fi. Раздавать в master mode NM в принципе не умеет. В ad-hoc у него это получается только с шифрованием WEP, а если установить WPA, то просто ничего не будет работать. Тем временем, я видел ноут с вендой 7, который стандартными средствами создавал точку доступа с WPA2 (был ли это master mode или ad-hoc, я не знаю).

Кажется, довольно давно развивается проект, а новых возможностей с новыми версиями и незаметно. Таких элементарных вещей, как настройки, до сих пор нет, а там, где они есть, они сильно ограничены. Нет нормальной поддержки Wi-Fi. И это я уже не говорю о всяких специфичных вещах вроде vlan, мостов и т.п., а только о повседневно нужных возможностях, которыми пользуется обычный пользователь на ноутбуке.

День капитанства на лоре? NM никогда не был готов, а развиваться прекратил еще больше года назад.

vurdalak ★★★★★ ()

А в чем проблема запихать скрипт в диспатчер, который будет пихать то что нужно в iptables, делать всякую магию итд?

vasily_pupkin ★★★★★ ()

И никак это не исправить (кроме как пропатчить modem-manager у себя локально, что я и делал, когда мне это было нужно), потому что настроек посылаемых AT-команд у NetworkManager'а нет.

Надо багрепорт пихать. Пусть бы думали

Раздавать в master mode NM в принципе не умеет.

hostapd! :D

И это я уже не говорю о всяких специфичных вещах вроде vlan, мостов и т.п.

Их потихоньку пытаются запилить, но пока фактического прогресса не видно, это факт

vasily_pupkin ★★★★★ ()
Последнее исправление: vasily_pupkin (всего исправлений: 1)

Целых три звезды лишних - можно ещё два таких поста написать.

а только о повседневно нужных возможностях, которыми пользуется обычный пользователь на ноутбуке.

В треде описание проблем нокии и андроида. О да, обычный пользователь каждый день устраняет вендоропроблемы, перенастраивая свой модем тысячей интуитивно понятных способов.

quiet_readonly ★★★★ ()
Ответ на: комментарий от vurdalak

развиваться прекратил еще больше года назад.

Вот это и печально, что он никогда не будет готов. А всё из-за того, что в линуксе есть куча разнообразных несистематизированных программ для настройки сети, причём среди них есть и велосипеды, настраивающие одно и то же (несколько dhcp-клиентов, команды ifconfig и ip, iwconfig и wpa_supplicant и т.п.). Был бы изначально один демон, который полностью и самостоятельно управлял бы сетью напрямую, не было бы проблем. А сейчас существует только кучка велосипедов (NM, wicd, netcfg, netifd, openrc…), которые пытаются унифицировать настройку сети, но всё равно дёргают те же самые отдельные несистематизированные программы, при этом, естественно, не поддерживают всё.

gentoo_root ★★★★★ ()

С iptables всё хуже: здесь неправильно аналогичным скриптом в if-up.d настраивать NAT, потому что NM тоже меняет iptables и ничего не знает о внесённых нами изменениях.

Можно просто в iptables разрешить всем интерфейсам маскарад, что я раньше и делал с помощью system-config-firewall.

Совсем плохо с раздачей интернета через Wi-Fi.

Неправда. Умеет и ad-hoc, и soft AP. Soft AP [пока] можно только в GNOME'овском апплете, который на JS и работает только в Shell'е. Ни nm-applet, ни kde-plasma-networkmanagement этот режим [пока] не умеют. Возможно, nm-applet скоро вообще выпилят. А вот на адекватность разработчиков плазменного апплета остаётся только надеяться.

В ad-hoc у него это получается только с шифрованием WEP, а если установить WPA, то просто ничего не будет работать.

Зависит от драйвера/карты.

Тем временем, я видел ноут с вендой 7, который стандартными средствами создавал точку доступа с WPA2 (был ли это master mode или ad-hoc, я не знаю).

W7 «искаропки» умеет лишь ad-hoc.

carasin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

А в чем проблема запихать скрипт в диспатчер, который будет пихать то что нужно в iptables, делать всякую магию итд?

Такой скрипт плохо интегрируется с самим NM. Он получает только имя интерфейса и его состояние.

Для андроидомагии нужно ещё знать адрес телефона с андроидом, т.е. адрес хоста c dhcp-сервером, который нам дал адрес, а его у нас нет. Парсить файлы /var/lib/dhclient руками — плохой вариант, т.к. может использоваться dhcpcd (и наоборот, к тому же файлы lease у dhcpcd бинарные), а ещё мы не знаем нужный uuid — у меня сейчас 5 файлов вида /var/lib/dhclient/dhclient-*-usb0.lease и непонятно, какой из них относится к новому подключению.

Для настройки iptables есть встроенные средства NM, но их мы дёрнуть не можем, поэтому нужно писать свой велосипед. К тому же, NM может рассчитывать, что поведение будет другим, поэтому такое решение ненадёжно. А всего-то нужно было вместо кнопки, которая одним махом назначает статический адрес 10.42.0.1, запускает dnsmasq и настраивает NAT в iptables, сделать 3 отдельных кнопки.

Надо багрепорт пихать. Пусть бы думали

Быстрого решения всё равно не будет. Прикрутить настройки к modem-manager — это не дело 5 минут, там захардкожено много вещей.

hostapd! :D

Тогда придётся выкинуть NM.

gentoo_root ★★★★★ ()
Ответ на: комментарий от carasin

Я его иногда видел (не у себя, на чужих компах). Не заметил появления в нем чего-то нового с тех пор, как я снес убунту (а это было года полтора назад).

vurdalak ★★★★★ ()
Ответ на: комментарий от carasin

Можно просто в iptables разрешить всем интерфейсам маскарад, что я раньше и делал с помощью system-config-firewall.

Такой костылище, ещё и с side effects.

Soft AP [пока] можно только в GNOME'овском апплете, который на JS и работает только в Shell'е.

Если это та самая кнопочка «Сделать точкой доступа» в настройках сети, то у меня она создаёт ad-hoc. Хотя настройки сети не на js, поэтому я, скорее всего, не понял, где это.

Зависит от драйвера/карты.

Возможно. Драйвер на мою карту убогий, он содержит в своём коде свою реализацию ieee80211. Возможно, она кривая.

W7 «искаропки» умеет лишь ad-hoc.

Зато там было WPA, а у меня ничего не работает, даже не подключилось к нему — в убунтовском индикаторе для подключения сети этот пункт был серый и не нажимался.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Я наверное не совсем понимаю что нужно получить в результате.

Тогда придётся выкинуть NM.

Они вполне себе живут друг с другом. Если конечно не нужно быть одним интерфейсом и точкой доступа, и клиентом другой точки доступа

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от quiet_readonly

Целых три звезды лишних - можно ещё два таких поста написать.

У нас максимум -20 снимают за один раз.

В треде описание проблем нокии и андроида.

И что дальше? Мне теперь не работать с этими устройствами, потому что они кривые?

О да, обычный пользователь каждый день устраняет вендоропроблемы, перенастраивая свой модем тысячей интуитивно понятных способов.

Возможность настройки в любом случае нужна. Обычный пользователь, у которого всё работает, оставит дефолты. Тот, у кого будут проблемы, сможет их решить.

gentoo_root ★★★★★ ()
Ответ на: комментарий от vurdalak

Например, недавно запилили soft AP, но доступно оно только в JS-апплете для GNOME-Shell. Стало быть, в других апплетах этого и не увидеть. Вероятно, причина неявности новых фич заключается в подобных этому случаях.

carasin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Я наверное не совсем понимаю что нужно получить в результате.

Нужно, чтобы можно было через NM запускать DHCP-сервер, DNS-маскарадинг, заводить NAT и настраивать IP-адрес на интерфейсе независимо друг от друга. В моём случае нужно получить IP по DHCP, запустить dnsmasq без dhcp-сервера и настроить NAT, но такая конфигурация авторами NM не предусмотрена.

Они вполне себе живут друг с другом. Если конечно не нужно быть одним интерфейсом и точкой доступа, и клиентом другой точки доступа

Не живут, потому что NM ничего не знает о hostapd, увидит доступные сети, побежит к ним подключаться и всё поломает. Если хотя бы NM проверял, запущен ли hostapd и отключал у себя возможность беспроводных соединений, было бы и то лучше, но не идеально.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Такой костылище, ещё и с side effects.

Не вижу костыльности в таком подходе. Не нравятся графические тулзы — всегда можно всё сделать правкой конфигов.

Если это та самая кнопочка «Сделать точкой доступа» в настройках сети, то у меня она создаёт ad-hoc. Хотя настройки сети не на js, поэтому я, скорее всего, не понял, где это.

За подробностями — к тов. BeerSeller'у. Я не использую GNOME.

Зато там было WPA, а у меня ничего не работает, даже не подключилось к нему — в убунтовском индикаторе для подключения сети этот пункт был серый и не нажимался.

Говорю же, зависит от драйвера / железяки. У меня на одной карте работает (работало? — давно не проверял) WPA, на другой — нет. Причём на одинаковых версиях дистра/компонентов.

carasin ★★★★★ ()
Ответ на: комментарий от Freiheits-Sender

а можешь написать в багзиллу нетворк менеджра?

Тогда мне нужно вспомнить конкретно, что я хотел поменять. Побежать в багзиллу и сказать, что мне нужны настройки AT-команд, но я не помню, что я там хотел настроить, глупо. И вряд ли кто-то пошевелится в этом направлении, потому что менять придётся действительно много, поэтому лучше сразу приходить с нормальными патчами, а нормальных патчей у меня нет, был когда-то только костыль для моего конкретного случая.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Нужно, чтобы можно было через NM запускать DHCP-сервер, DNS-маскарадинг, заводить NAT и настраивать IP-адрес на интерфейсе независимо друг от друга. В моём случае нужно получить IP по DHCP, запустить dnsmasq без dhcp-сервера и настроить NAT, но такая конфигурация авторами NM не предусмотрена.

Это я понял. Я не понимаю, почему это нельзя сделать из диспатчера. Ну, т.е. NM просто использовать подключение, без ништяков, а ништяки вкрутить в скрипте. Я вот тут не понимаю в чем проблема.

Не живут, потому что NM ничего не знает о hostapd, увидит доступные сети, побежит к ним подключаться и всё поломает.

В NM есть игнорирование интерфейсов. Собственно у меня на ноуте в игнор занесены некоторые usb wifi свистки, которые по факту засовывания автоматом начинают раздавать интернеты.

vasily_pupkin ★★★★★ ()

Ладно, допустим, можно написать соответствующий скрипт и вызывать его при поднятии подключения — для этого в убунте был плагин к NM (хоть я и без понятия, как им пользоваться на других дистрибутивах, но думаю, с этим можно разобраться).

Как минимум, в Debian есть /etc/NetworkManager/dispatcher.d/, в который можно написать свой скрипт.

Тем временем, я видел ноут с вендой 7, который стандартными средствами создавал точку доступа с WPA2 (был ли это master mode или ad-hoc, я не знаю).

Скорее всего, Master.

AITap ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Они вполне себе живут друг с другом.

Когда я пробовал, hostapd не взлетал без отключения NM.

Axon ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Это я понял. Я не понимаю, почему это нельзя сделать из диспатчера. Ну, т.е. NM просто использовать подключение, без ништяков, а ништяки вкрутить в скрипте. Я вот тут не понимаю в чем проблема.

Костыль же — переизобретать заново то, что уже есть в NM. Это можно было бы сделать более красиво и правильно, если бы авторы NM изначально не ограничили настройки.

Для андроидокостыля с посылкой магической последовательности в 6000 порт непонятно, на какой адрес их слать — это тоже проблема.

Есть ещё один случай, когда даже костыль в диспатчере не прокатит. Это та ситуация, когда нужно раздать интернет тем же самым способом, как делает NM, но использовать не подсеть 10.42.0.0/24, а другую.

gentoo_root ★★★★★ ()
Ответ на: комментарий от vurdalak

Не заметил появления в нем чего-то нового

отличный подход )

даже по Fedora Release Notes видно что его ломают, чинят и расширяют постоянно. NM сейчас - одно из приоритетных направлений, поскольку на него завязывают управление сетями для виртуальных машин.

alpha ★★★★★ ()
Ответ на: комментарий от gentoo_root

Был бы изначально один демон, который полностью и самостоятельно управлял бы сетью напрямую, не было бы проблем.

Вот только, когда у вас в этом единственном демоне что-то не работает/не реализовано, вам остаётся только пойти и сделать вдоль.

Axon ★★★★★ ()
Ответ на: комментарий от gentoo_root

Костыль же — переизобретать заново то, что уже есть в NM.

Верно. Тем не менее, того что ты хочешь там нет )

Это можно было бы сделать более красиво и правильно, если бы авторы NM изначально не ограничили настройки.

Возможно, напиши им об этом. Узнай что они думают по этому поводу )

Для андроидокостыля с посылкой магической последовательности в 6000 порт непонятно, на какой адрес их слать — это тоже проблема.

В чем проблема узнать адрес?

Есть ещё один случай, когда даже костыль в диспатчере не прокатит. Это та ситуация, когда нужно раздать интернет тем же самым способом, как делает NM, но использовать не подсеть 10.42.0.0/24, а другую.

Почему бы не раздавать интернет NM, а сделать единообразно из диспатчера?

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от AITap

Как минимум, в Debian есть /etc/NetworkManager/dispatcher.d/, в который можно написать свой скрипт.

Это везде есть. В убунте есть ещё вдобавок плагин, который позволяет вызывать скрипты из тех же if-up.d и if-down.d, которые используются при настройке сети через /etc/network/interfaces. Свой скрипт написать можно, но в обоих случаях непонятно, откуда этот скрипт узнает адрес телефона с dhcp-сервером, куда надо посылать магические байты.

gentoo_root ★★★★★ ()
Ответ на: комментарий от Axon

Вот только, когда у вас в этом единственном демоне что-то не работает/не реализовано, вам остаётся только пойти и сделать вдоль.

В мире опенсорса? Нет, тут делают по-другому.

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от Axon

Вот только, когда у вас в этом единственном демоне что-то не работает/не реализовано, вам остаётся только пойти и сделать вдоль.

В том-то и дело, что тогда вместо того, чтобы пойти и написать очередную левую программку для настройки какого-то нового типа подключения, добавляли бы его поддержку в этот демон и всё было бы хорошо.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

откуда этот скрипт узнает адрес телефона с dhcp-сервером

Да ёлки палки. Это же основная фича NM. Например.

> eval `nmcli -t -f IP con status id Hatred | awk -v FS='([ ]+=[ ]+|:)' '$1=/DHCP/{print $2"="$3}'`   
> echo $dhcp_server_identifier
172.16.1.1
vasily_pupkin ★★★★★ ()
Ответ на: комментарий от gentoo_root

For this, we need the phone’s IP. This is NOT the IP assigned to usb0 in your computer. To find this out, go to your console app in the phone (in ConnectBot, open the “Local” connection) and write

ifconfig usb0

There it will tell you its IP.

dispatcher-скрипту передаётся, помимо прочего, имя интерфейса. Если ifconfig usb0 действительно выдаёт IP-адрес противоположной точки интерфейса, остаётся только распарсить его вывод.

AITap ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

В чем проблема узнать адрес?

А как я его узнаю? В случае использования dhclient можно взять файл /var/lib/dhclient/dhclient-*-usb0.lease, открыть его и прочитать там dhcp-server-identifier — это и будет нужный адрес. Но проблема в том, что таких файлов может быть несколько — остались от предыдущих подключений. В каждом разный адрес. Можно попробовать открыть их все по очереди и сравнить в них fixed-address с текущим адресом интерфейса. Если совпало один раз, то всё ОК, но что делать, если в нескольких файлах одинаковый fixed-address, соответствующий текущему, а dhcp-server-identifier разные? Вот тут и возникает проблема.

Почему бы не раздавать интернет NM, а сделать единообразно из диспатчера?

Вот это уже точно переизобретение того, что есть в NM, причём даже без модификаций, как в предыдущем случае, а один в один.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

В том-то и дело, что тогда вместо того, чтобы пойти и написать очередную левую программку для настройки какого-то нового типа подключения, добавляли бы его поддержку в этот демон и всё было бы хорошо.

Да вы, я вижу, оптимист...

Axon ★★★★★ ()

Очевидно же, NM говно. И всегда был говном.

andreyu ★★★★★ ()
Ответ на: комментарий от gentoo_root

А как я его узнаю

см. выше

Вот это уже точно переизобретение того, что есть в NM, причём даже без модификаций, как в предыдущем случае, а один в один.

Если проблемы с тем, что бы накатать патч так, что бы было то что нужно, не вижу в таком решении ничего плохого.

vasily_pupkin ★★★★★ ()
Последнее исправление: vasily_pupkin (всего исправлений: 1)
Ответ на: комментарий от vasily_pupkin

В мире опенсорса? Нет, тут делают по-другому.

Да, тут идут и ноют на ЛОРе.

Axon ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Например.

Ух ты, а вот это действительно то, что нужно. Раньше не замечал, что в nmcli есть ещё и con status, мой опыт работы с этой командой ограничивался con up/con down.

Пойду писать мегакостыль в dispatcher.d.

gentoo_root ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Если проблемы с тем, что бы накатать патч так, что бы было то что нужно, не вижу в таком решении ничего плохого.

Да я скорее пойду писать свой велосипед вместо NM, в котором будут настройки, чем буду разгребать говнокод за авторами NM, которые не удосужились изначально подумать о том, что их поделку кто-то захочет настроить, не применяя для этого команды patch и make.

gentoo_root ★★★★★ ()

Нечего пенять на нм если сетевуха не умеет мастер мод. У меня такая же ерунда что в убунту что под виндой, сетевуха не умеет создавать ад хоц соединения с отличным от wep шифрованием.

gopnick ()
Ответ на: комментарий от vasily_pupkin

Это просто интерфейс к дубасу.

Ну да, я знаю. Просто этот nmcli не всё умеет, например, не создаёт соединения, и я не знал, что он умеет выводить подробную информацию о них. Я даже не знал, что она вообще доступна через dbus в настолько подробном виде.

gentoo_root ★★★★★ ()

Кто-нибудь уже сказал, что говномНМ не умеет reconnect if dropped для vpn? Каким наркоманом надо быть, чтобы считать эту опцию ненужной? Это что, при каждом дисконнекте я должен целится в эту иконку, шарится по его гребаному меню? А если мне надо на ночь оставить? Я охреневаю вообще от некоторых аспектов использования этого вашего..

Ok ()
Ответ на: комментарий от gopnick

Нечего пенять на нм если сетевуха не умеет мастер мод.

Сетевуха умеет, но не умеет говнодрайвер и NM.

gentoo_root ★★★★★ ()
Ответ на: комментарий от alpha

О текущей. Два года назад не умел. Сейчас уже и впны почти везде поумирали, а в NM так и не доделали перезапуск?

vurdalak ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Это легко делается через диспатчер

Это ДОЛЖНО делаться одной сраной галкой.

Ok ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.