LINUX.ORG.RU

нужна помощь в дописании фичи

 , ,


0

3

Когда-то давно я написал патч для qemu-bridge-helper который позволяет задавать имя tap-интерфейсов на хост машине. Вот подробности: http://lists.gnu.org/archive/html/qemu-devel/2013-03/msg03859.html

(для Ъ: по ссылке патч, описание и короткое обсуждение).

Патч не был принят т.к. создание интерфейсов с произвольным именем было рассмотрено как угроза безопасности. Я не нашёл времени чтобы допилить патч.

Мне бы не хотелось чтобы работа пропала. Есть у кого желание продолжить? Я пока по времени не успеваю. В принципе, пока я это всё писал у меня созрел план что делать с qemu-bridge-helper.c (имхо, можно в ACLRule.type добавить ACL_ALLOW_IFNAME и ACL_DENY_IFNAME). Но я не жадный и готов разделить славу хакеров qemu с кем-либо ещё.

★★★★★

Ты классный

anonymous
()

т.к. создание интерфейсов с произвольным именем было рассмотрено как угроза безопасности

А если создавать интерфейсы с именами tap%s? Если сейчас пользователь может насоздавать кучу tap%d, что плохого может случиться, если вместо %d он сможет задавать строку?

i-rinat ★★★★★
()
Ответ на: комментарий от true_admin

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

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

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

мб лучше заюзать vde?

Оригинальная идея была в том чтобы дать понятные имена интерфейсам чтобы в с случае проблем можно было легко прицепиться к нужному интерфейсу снифером. Плюс трафик контроллировать проще, да и в iptables можно задать имя интерфейса. vde поможет решить эти проблемы?

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

vde_switch -t tap0 и так далее. Создаст виртуальный свитч, к которому хостовый комп подключён через tap0. Туда можно подключить сколько угодно виртуалок и вообще делать что хочешь. Пихать этот функционал в qemu нахер не нужно.

anonymous
()
Ответ на: комментарий от true_admin

vde поможет решить эти проблемы?

Если делать отдельный экземпляр vde для каждой виртуалки - да. Но в общем, vde не для этого придуман.

tailgunner ★★★★★
()
Ответ на: комментарий от i-rinat

Надо думать над тем, что будет, если глобов будет несколько, что будет, если глоб будет в самом начале, и прочее подобное.

Для реализации я решил остановиться на двух вариантов: жёсткое имя интерфейса, либо только один глоб. Это покроет бОльшую часть потребностей, имхо. По-хорошему, надо бы использовать нормальную либу для парсинга конфигов и прикрутить, например, pcre, но как-то не хочется этим заниматься.

Вообще, имхо, стоило бы как минимум хелпер писать на чём-нить более высокоуровневом чем C, но пока нет общепризнанной замены, к сожалению.

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

Туда можно подключить сколько угодно виртуалок и вообще делать что хочешь

То же самое можно сделать с бриджом и tap. Вопрос в том как мне прослушать снаружи траффик с конкретной виртуалки.

И я хочу нормальные имена устройств, а не tap0, tap1, etc. Ты же юзерам в системе даёшь нормальные имена (root, www, vasily_pupkn), а не user1, user2, user3. Мейнтейнеры qemu тоже не против.

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

жёсткое имя интерфейса, либо только один глоб

allowifname *vm

Нужно думать, что делать, если глоб в начале. Идея с tap%s, жёстко зашитым в коде, мне кажется более здравой.

tap_root, tap_www, tap_vasily_pupkn

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

То же самое можно сделать с бриджом и tap. Вопрос в том как мне прослушать снаружи траффик с конкретной виртуалки.

ээээ... через tcpdump? Он фильтровать трафик умеет в том числе, чувак.

И я хочу нормальные имена устройств, а не tap0, tap1, etc.

ну так дай им нормальные имена. Ты тупой какой-то, даже ман почитать не можешь.

~> sudo vde_switch -d -t common_iface   
Password:
~> ifconfig common_iface 
common_iface: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether ca:c6:d3:60:e2:ed  txqueuelen 500  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
anonymous
()
Ответ на: комментарий от i-rinat

Нужно думать, что делать, если глоб в начале

это уже юзер сам дурак :). Кстати, погуглив я нашёл что в libc уже есть fnmatch для паттерн-матчинга. Что скажешь? Имхо, решает разом кучу проблем.

идея с tap%s, жёстко зашитым в коде, мне кажется более здравой.

Ну, это по-любому лучше чем то что есть. Хотя мне бы хотелось оба варианта чтобы юзер сам выбирал нужны ли ему префиксы или нет.

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

Он фильтровать трафик умеет в том числе

Я в курсе. Только для этого надо знать по каким критериям фильтровать. В моей ситуации, например, одна виртулка служит роутером для других и просто отфильтровать по ip/mac не получится.

ну так дай им нормальные имена. Ты тупой какой-то, даже ман почитать не можешь.

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

Короче, кыш отсюда.

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

Что скажешь?

Никогда не приходилось подобное делать и про функцию узнал впервые.

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