[sisyphus] I: iproute2fs
Peter V. Saveliev
peet на altlinux.ru
Пт Авг 26 07:51:16 UTC 2011
...
Всем привет. В Сизиф выложил стабильную (по крайней мере, у меня пока не
падает) версию iproute2fs.
Это файловый сервер, который в виде файлов экспортирует текущие
настройки сети. Экспортирует он их через протокол 9P, и может быть
использован через:
* mount -t 9p ... или 9mount (последнего вроде в Сизифе нет)
* 9pfuse
* ixpc
Первый вариант требует поддержки 9P2000 в ядре, но в ядрах ALT она вроде
бы есть -- по крайней мере, в тех, что я видел. Поэтому я сделал заодно
и сервис. Т.е.:
$ sudo apt-get install iproute2fs
$ sudo service iproute2fs start
$ ls -l /srv/net/interfaces
По умолчанию сервис, само собой, выключен. См. также iproute2fs(1).
...
Ограничения и косяки.
* Это первые версии пока что идут, которые умеют не очень много -- мне
показалось важнее сначала (попытаться) сделать вменяемую архитектуру и
обеспечить стабильность, чем обрастать фичами. На данный момент
iproute2fs экспортирует лишь интерфейсы, их адреса и ещё чутка.
* IPv6 адреса пока не поддерживаются в той мере, чтобы это можно было
назвать поддержкой. Однако IPv4 -- вполне, причём на r/w. То есть, можно
сделать так:
echo 192.168.1.2/24 >>/srv/net/interfaces/eth0/addresses
и ещё один адрес появится на соотв. интерфейсе.
* Остальное пока на r/o
* Это пока что не замена etcnet/NM и т.п., и не скоро ей будет, если
будет вообще.
...
Полезные фишки.
Запуская iproute2fs на UNIX-сокете, можно довольно тонко регулировать
доступ пользователей к настройкам сети, просто назначая соотв. ACL на
сокет. Дальше каждый, у кого есть доступ, может подключить ФС в свой
namespace либо просто использовать ixpc.
Запуская iproute2fs из-под непривилегированного пользователя, можно
создать r/o доступ к настройкам сети. См. также capabilities(7).
...
Планы.
В ближайших планах:
1. поддержка IPv6 (уже в гите проекта реализуется)
2. таблицы, правила маршрутизации
3. создание и переименование интерфейсов
В дальнейших планах:
1. возможность сохранения настроек с тем, чтобы их можно было подхватить
на старте, в идеале -- через простой tar
2. экспорт настроек в формате, совместимом с etcnet (если будут желающие)
3. журналирование сетевой подсистемы с возможностью отката настроек на
указанную дату/время.
...
Обоснование проекта.
* Представление в виде файловой системы было выбрано как самое простое
для управления традиционными средствами UNIX, такими как sed, grep, cat
и т.п. Также это удобно с точки зрения разграничения прав доступа.
* Основная фишка проекта, это то, что iproute2fs не запрашивает
настройки по факту обращения, а оперирует событиями netlink, которые
обратимы: то есть, при добавлении адреса на интерфейс (неважно каким
способом), netlink посылает слушателям событие, которое практически
идентично запросу на добавление адреса. Это позволяет хранить журнал
событий и проигрывать его позднее. То есть, все изменения сетевой
подсистемы могут журналироваться в iproute2fs вне зависимости от того,
кем они совершены -- через NM, ip, ifconfig, модулями ядра или Святым Духом.
* В отличие от NM, проект ориентирован на традиционное окружение без
графики и при минимуме сторонних сервисов типа dbus/hal/и т.п. Это и
минус, и плюс -- зависит от целей.
* В отличие от etcnet, является не набором текстовых настроек, которые
парсятся скриптами, а именно VFS с отображением rtnetlink(7) в файлы и
обратно. Это также и минус, и плюс.
* Предыдущие два пункта позволяют использовать iproute2fs не вместо, а
вместе с этими проектами, см. в todo etcnet-совместимый формат.
--
Peter V. Saveliev
Подробная информация о списке рассылки Sisyphus