[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